Gym100187I


做法:倒着构造,根据下一个数确定正负,本身这个位置确定升降,正就从1开始,负就从-1开始。最终序列从±1e9开始,特殊处理一下,中间判是否越界即可。

水吧。。。然后就爆炸了,毕竟 IMPOSSIBLE 和 NO 的区别我 zz 的肉眼。。。3个小时都看不到。。。幸好是场训练赛,开了个没人写的题,结果凉透啊。。。需要输出单词的题,一定要注意单词拼的对不对!!!

//***mdzz IMPOSSIBLE 写成 NO, WA到终场!!!!!***
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define PII pair<int,int>
typedef long long ll;
const int N = 2000+ 55;
const int inf = 0x3f3f3f3f;
using namespace std;
int n,ctt,cvt;
ll tmp[N],v[N], a[N], cc=1;
int main() {srand(time(0));scanf("%d",&n);rep(i,1,n) scanf("%I64d",&a[i]);cc = 1;per(i,n,2) {ctt = 0;ll f = 0;cc = 1;for(int j=0;j<cvt;++j) cc += abs(v[j]);if(a[i-1]==1&&a[i]==0) {f=cc;tmp[ctt++] = (cc);for(int j=0;j<cvt;++j) {f=f+v[j];if(f>1e9||f<-1e9) return puts("IMPOSSIBLE"),0;tmp[ctt++]=(f);}}else if(a[i-1]==0&&a[i]==1) {f=-cc;tmp[ctt++]=(-cc);for(int j=0;j<cvt;++j) {f=f+v[j];if(f>1e9||f<-1e9) return puts("IMPOSSIBLE"),0;tmp[ctt++]=(f);}}else if(a[i-1]==0&&a[i]==0) {f=-1;tmp[ctt++]=(-1);for(int j=0;j<cvt;++j) {f=f+v[j];if(f>1e9||f<-1e9) return puts("IMPOSSIBLE"),0;tmp[ctt++]=(f);}}else if(a[i-1]==1&&a[i]==1) {f=1;tmp[ctt++]=(1);for(int j=0;j<cvt;++j) {f=f+v[j];if(f>1e9||f<-1e9) return puts("IMPOSSIBLE"),0;tmp[ctt++]=(f);}}cvt = 0;for(int i=0;i<ctt;++i) v[cvt++]=tmp[i];int ff = 0;for(int j=0;j<cvt;++j) if(v[j]==0) ff=1;if(a[i-1]==1&&ff) {for(int j=0;j<cvt;++j) ++v[j];}else if(ff&&a[i-1]==0) {for(int j=0;j<cvt;++j) --v[j];}for(int i=0;i<cvt;++i) if(v[i]>1e9||v[i]<-1e9) return puts("IMPOSSIBLE"),0;}ll f=1;if(a[1]==1) f=-1e9;else f=1e9;ctt = 0;tmp[ctt++]=(f);for(int i=0;i<cvt;++i) {f=f+v[i];if(abs(f)>1e9) return puts("IMPOSSIBLE"),0;tmp[ctt++]=(f);}for(int i=0;i<ctt;++i) if(tmp[i]>1e9||tmp[i]<-1e9) return puts("IMPOSSIBLE"),0;for(int i=0;i<ctt;++i) printf("%I64d ",tmp[i]);puts("");return 0;
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9460261.html

Gym100187I相关推荐

最新文章

  1. AAuto如何发布EXE文件
  2. postman自动打开_postman第1讲-开篇:介绍与安装
  3. linux node 文件存放目录_Linux文件与目录结构
  4. 代码生成工具的分类及比较
  5. 86. 分隔链表 golang
  6. python可以测试java的代码吗_使用python做你自己的自动化测试--对Java代码做单元测试 (2)-导入第三方jar包裹...
  7. 新手学习c语言的方法,学习C语言方法“新手必看”
  8. 多选题spss相关分析_【医学问卷分析】使用SPSS多重响应对医学问卷多选题进行统计分析——【杏花开医学统计】...
  9. 利用IE的滤镜解决IE6下PNG图片透明BUG
  10. 正则表达式视频教程免费下载
  11. 防火墙中查看用户流量
  12. HTML5期末大作业:腾讯游戏网站设计——腾讯游戏官网(13页) HTML+CSS+JavaScript web网页设计与开发
  13. 西瓜数据集的各种版本,比如说2.0,3.0,4.0都在这
  14. 电力系统分析计算机辅助试题,电力系统计算机辅助分析.docx
  15. python开发者是谁_Python 太蹩脚了?开发者总结了 8 大缘故
  16. 好用的网页操作自动化软件
  17. 量子计算机、康威扭结、奥数AI,这是2020年计算机、数学的重大突破
  18. 推荐10款社群运营必备工具
  19. ajax 执行成功前,提示正在处理请稍后
  20. java过滤_java 过滤list的几种方式

热门文章

  1. tutte定理证明hall定理_人教社课本现低级错误?“爱因斯坦用相对论证明勾股定理”...
  2. 修改手机屏幕刷新率_手机屏幕没有高刷新率算不上旗舰机?看看网友都是如何回答的...
  3. leetcode367. 有效的完全平方数
  4. 7-1 装载问题 (10 分)(思路+详解)
  5. 栈在前端中的应用,顺便再了解下深拷贝和浅拷贝!
  6. Java Number Math 类方法
  7. LeetCode 872叶子相似的树-简单
  8. Pandas - 查看DataFrame信息
  9. 经典排序算法(7)——堆排序算法详解
  10. 2019-03-12-算法-进化(合并两个有序数组)