1893. [国家集训队2011]等差子序列(bitset)
2018-06-17 22:06:21来源:未知 阅读 ()
★★ 输入文件:nt2011_sequence.in
输出文件:nt2011_sequence.out
简单对比
时间限制:0.3 s 内存限制:512 MB
【试题来源】
【问题描述】
【输入格式】
下接T组数据,每组第一行一个整数N,每组第二行为一个1到N的排列,数字两两之间用空格隔开。
【输出格式】
【样例输入】
3
1 3 2
3
3 2 1
【样例输出】
Y
【数据说明】
对于30%的数据,N<=1000
对于100%的数据,N<=10000,T<=7
对于100%的数据,时间限制为0.3s。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<bitset> using namespace std; using std::bitset; const int MAXN=10001; bitset<MAXN>bit; int a; inline void read(int &n) { char c='+';int x=0;bool flag=0; while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;} while(c>='0'&&c<='9'){x=x*10+(c-48);c=getchar();} n=flag==1?-x:x; } int main() { freopen("nt2011_sequence.in","r",stdin); freopen("nt2011_sequence.out","w",stdout); int T; read(T); while(T--) { bit.reset(); int n; read(n); bool flag=0; for(int i=1;i<=n;i++) { read(a); if(flag)continue; bit.set(a); for(int j=a-1;j!=0;j--) { int k=a*2-j; if(k>n)continue; if(bit.test(j)^bit.test(k)) { flag=1; break; } } } flag==1?printf("Y\n"):printf("N\n"); } return 0; }
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<bitset> using namespace std; const int SIZEN=10010; int N; int A[SIZEN]; bitset<SIZEN> pre,suf; bool test(void){//只能检测递增的 pre.reset();suf.reset(); for(int i=1;i<=N;i++) suf[i]=1; static bitset<SIZEN> tmp; for(int i=1;i<=N;i++){ suf[A[i]]=0; if(i>1) pre[N+1-A[i-1]]=1; tmp=(suf>>A[i])&(pre>>(N+1-A[i])); if(tmp.any()) return true; } return false; } void work(void){ scanf("%d",&N); for(int i=1;i<=N;i++) scanf("%d",&A[i]); if(test()){ printf("Y\n"); return; } reverse(A+1,A+1+N); if(test()){ printf("Y\n"); return; } printf("N\n"); } int main(){ freopen("nt2011_sequence.in","r",stdin); freopen("nt2011_sequence.out","w",stdout); int T; scanf("%d",&T); while(T--) work(); return 0; }
一份可以A的bool
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<bitset> using namespace std; using std::bitset; const int MAXN=10001; bool bit[MAXN]; int a; inline void read(int &n) { char c='+';int x=0;bool flag=0; while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;} while(c>='0'&&c<='9'){x=x*10+(c-48);c=getchar();} n=flag==1?-x:x; } int main() { freopen("nt2011_sequence.in","r",stdin); freopen("nt2011_sequence.out","w",stdout); int T; read(T); while(T--) { memset(bit,0,sizeof(bit)); //bit.reset(); int n; read(n); bool flag=0; for(int i=1;i<=n;i++) { read(a); if(flag)continue; bit[a]=1; for(int j=a-1;j!=0;j--) { int k=a*2-j; if(k>n)continue; if(bit[j]^bit[k]) { flag=1; break; } } } flag==1?printf("Y\n"):printf("N\n"); } return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯 2018-07-19
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 2018-06-27
- 对5个国家的名称进行排序详细解析 2018-06-18
- Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法 2018-06-17
- bzoj2038 [ 2009国家集训队 ] -- 莫队 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash