标签:存在 int 题解 然后 siz include ARC103E
思路很奇怪(?)
考虑是否合法的条件。注意到这个显然要求对称(即存在 \(i\) 必须存在 \(n-i\)),如果不满足一定无解。
然后比较显然的是 \(1\) 不存在和存在 \(n\) 都无解。
然后注意到应该要满足一个 \(F=x\sum F^k\) 之类的 \(0/1\) 卷积。
然后发现,如果存在 \(1\) 那这个是不是一定能被构造出来啊?
只要让下一个存在的 siz 挂着上一个存在的 siz 和一车叶子就好了啊。
随便写写,\(O(n)\) 的。
#include<cstring>
#include<cstdio>
const int M=1e5+5;
int n,tot;char s[M];bool vis[M];
signed main(){
scanf("%s",s+1);n=strlen(s+1);for(int i=1;i<=n;++i)vis[i]=s[i]=='1';if(n==1)return 0;
for(int i=1;i<=n;++i)if(vis[i]^vis[n-i])return printf("-1"),0;
if(vis[n]||!vis[1]||!vis[n-1])return printf("-1"),0;
for(int lst(1),i=2;i<=n+1;++i)if(vis[i]){
for(int k=lst;k<i;++k)printf("%d %d\n",i,k);lst=i;
}
else if(i==n+1)for(int k=lst;k<n;++k)printf("%d %d\n",n,k);
}
标签:存在,int,题解,然后,siz,include,ARC103E 来源: https://www.cnblogs.com/lmpp/p/16621367.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。