Gym100187I

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3708-koishi的数学题【差分】

正题 题目链接:https://www.luogu.com.cn/problem/P3708 题目大意 定义f(x)∑i1nx%if(x)\sum_{i1}^nx\% if(x)∑i1n​x%i 求每个f(i)f(i)f(i) 解题思路 考虑枚举模数iii&#xff0c;对与每个xxx会产生x%ix\% ix%i的贡献&#xff0c;也就是对与连续的一段是0,1,2,3,...i−10…

纪中C组模拟赛总结(2019.7.6)

成绩&#xff1a; 注&#xff1a;rankrankrank是有算其他dalaodalaodalao的 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4222lyflyflyf120120120101010101010000100100100121212fyfyfy404040000404040000000121212wjjwjjwjj4040400002020200002020202828…

【数位DP】B-number(HDU 3652)

B-number HDU 3652 题目大意&#xff1a; 有一个数n&#xff0c;求出1~n中含‘13’且能被13整除的数有多少个 输入样例 13 100 200 1000输出样例 1 1 2 2解题思路&#xff1a; 用数位DP枚举完每一位&#xff0c;同事也判断题目要求的条件 数据范围&#xff1a; 1 <…

#20071-[NOIP2020模拟赛B组Day6]礼物购买【二分】

正题 题目链接:http://noip.ybtoj.com.cn/contest/105/problem/1 题目大意 nnn个物品&#xff0c;每个价格为viv_ivi​有xix_ixi​个&#xff0c;mmm次&#xff0c;开始有wiw_iwi​元。每次选择能买的最贵的买&#xff0c;求能买多少。 解题思路 分两种情况讨论&#xff0c;如…

.NET Core TDD 前传: 编写易于测试的代码 -- 构建对象

该系列第1篇: 讲述了如何创造"缝". "缝"(seam)是需要知道的概念.本文是第2篇, 介绍的是如何避免在构建对象时写出不易测试的代码. 本文的概念性内容大部分都来自Misko Hevery的这篇博客文章.构建还是用上文里汽车的例子.通常情况下, 我们是先去建造汽车, …

Gym100187B

Gym100187B \(n\)&#xff1a;表示字符的种类&#xff1b;\(a_i\)&#xff1a;表示单词i的个数&#xff1b;\(Len\)&#xff1a;表示串的长度&#xff1b; 先考虑一种单词\(a_i\)放在一个固定位置p对答案的贡献: 整一个串的全排类为&#xff1a;\[P \frac{Len!}{a_1!a_2!...a_…

【线段树】开关(luogu 3870)

开关 luogu 3870 题目大意&#xff1a; 有n个灯&#xff0c;每一次会按一个区间中的所有灯&#xff08;开变关&#xff0c;关变开&#xff0c;操作0&#xff09;&#xff0c;或询问某个区间中有多少个灯是亮着的&#xff08;操作2&#xff09;&#xff0c;按操作进行&#x…

HDU4455

HDU4455 做法&#xff1a;照着学姐的ppt做的。\(f[i]\)表示长度为i时的答案&#xff0c;考虑如何通过\(f[i-1]\)递推出\(f[i]\) eg:\(f[3] \rightarrow f[4]\) (1 1 2) 3 4 4 5 1 1 2 \(\rightarrow\) 1 1 2 3 :1 1 2 3 \(\rightarrow\) 1 2 3 4 :1 2 3 4 \(\rightarrow\) 2 3 …

YbtOJ#20072-[NOIP2020模拟赛B组Day6]相似子串【根号分治】

正题 题目链接:http://noip.ybtoj.com.cn/contest/105/problem/2 题目大意 一个010101串&#xff0c;qqq个询问&#xff0c;每次询问有多少个长度为mmm的子串010101个数与给出的010101串TTT相同 解题思路 因为询问串的总长与nnn同级&#xff0c;所以考虑根号分治 将询问的TT…

构建可扩展的有状态服务

原文链接&#xff1a;http://highscalability.com/blog/2015/10/12/making-the-case-for-building-scalable-stateful-services-in-t.html在很长一段时间内&#xff0c;分布式系统都采用无状态服务作为分布式系统扩展的最佳实践。它可以通过简单的循环负载均衡来提供扩展能力。…

51nod1743-雪之国度【最小生成树,LCA,并查集】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1743 题目大意 nnn个点mmm条边的一张图&#xff0c;每次询问要求找出x,yx,yx,y直接的两条不重路径的最大值最小。 解题思路 首先第一条路径肯定是最小生成树上的路径&#xff0c;所以我们先求出最小生成…

树莓派3B+,我要跑.NET CORE

前面的话我也不知道为什么&#xff0c;看到.net core觉得很爽&#xff0c;可以真正的跨平台&#xff0c;个人觉得很喜欢&#xff0c;所以就准备拿树莓派来验证我的想法。在我写这篇文章的时候&#xff0c;刚好在树莓派上装好了core2.1&#xff0c;先上结果。一、基础准备从板子…

Codeforces1019C

Codeforces1019C 题意&#xff1a;一张无自环的有向图&#xff0c;请找出一个点集Q&#xff0c;满足Q内的点不能互相有边&#xff0c;且Q内的点一定可以通过1次或2次移动&#xff0c;到达Q集合以外的任意一个点。 做法&#xff1a;思路神奇。做法就是编号小到大枚举选的点&…

WZK的排名(jzoj 1995)

WZK的排名 jzoj 1995 题目大意&#xff1a; 有一个成绩排名&#xff0c;让你按成绩排序&#xff08;成绩相同&#xff0c;年级更小的在前面&#xff09;&#xff0c;让你求对于每个人来说&#xff0c;成绩比他大年级比他小的人的个数 输入样例 5 300 5 200 6 350 4 400 6 …

YbtOJ#20073-[NOIP2020模拟赛B组Day6]钻石守卫【构造】

正题 题目链接:http://noip.ybtoj.com.cn/contest/105/problem/3 题目大意 nnn个点mmm条边的图&#xff0c;保证每条边两边的点权和大于等于边权。现在要去减去最少/多的点权使得每条边的边权等于两边的点权。 解题思路 对与一个连通块&#xff0c;显然确定一个就可以确定别的…

【bfs】WZK旅游(jzoj 1996)

WZK旅游 jzoj 1996 题目大意&#xff1a; 给出一个nm的矩阵&#xff0c;表示一个地方的高度&#xff0c;高度相同且相邻&#xff08;不算斜角&#xff09;的算一块&#xff0c;当整一块高度都大于周围时&#xff0c;这是个山峰&#xff0c;相反当高度都低于附近时是湖泊&…

FWT学习笔记

FWT学习笔记 参考&#xff1a; 快速沃尔什变换(FWT)学习笔记FWT 详解 知识点定义&#xff1a; 快速沃尔什变换(FWT)主要解决位运算卷积的问题。给定两个数组 \(A\) 和 \(B\) (长度为2的整数幂)&#xff1a;\[C_k \sum_{i \oplus jk}A_iB_i\] 其中\(\oplus\)可以是与&#xff0…

hdu5709-Claris Loves Painting【线段树合并】

正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid5709 题目大意 nnn个点的一棵树&#xff0c;每次有询问(u,k)(u,k)(u,k)表在uuu的子树中&#xff0c;距离uuu不超过kkk的节点中有多少不同颜色的节点。 解题思路 线段树维护每个深度有多少是颜色出现的最浅的位置&am…

【DP】【高精】WZK打雪仗(jzoj 1997)

WZK打雪仗 jzoj 1997 题目大意&#xff1a; 在一个环上有n*2个点&#xff0c;问有多少种连法可以用n条线连接成n对点 输入样例 5输出样例 42解释&#xff1a; 一种可行的方案如下&#xff1a; 数据范围 对于30%数据&#xff1a; n<30。 对于100%数据&#xff1a; …

月旦评 之 DevOps招贤令2018

公元164-182年间&#xff0c;汝南平舆的许氏兄弟于每月初一品评人物&#xff0c;褒贬时政&#xff0c;被称为“月旦评”。所谓“子治世之能臣&#xff0c;乱世之奸雄也”这句许邵评价曹操的话也是来自于“月旦评”&#xff1b;时间一下子来到了2018年&#xff0c;LEANSOFT DevO…