Contest1900 - 2019年6月多校联训a层测试1
Posted yanghaokun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Contest1900 - 2019年6月多校联训a层测试1相关的知识,希望对你有一定的参考价值。
传送门 密码:waxadyt
T1
打表找规律
从n>=5开始,就有相邻两个数的差是一个公差为28的等差数列
直接给代码吧
#include<bits/stdc++.h> using namespace std; int main() int t; scanf("%d",&t); while(t--) unsigned long long n; cin>>n; if(n==0)printf("1\n");continue; if(n==1)printf("9\n");continue; if(n==2)printf("41\n");continue; if(n==3)printf("109\n");continue; if(n==4)printf("205\n");continue; if(n==5)printf("325\n");continue; cout<<325+(148+(n-6)*14)*(n-5);
T2
dfs裸题
加一个vis
代码
#include<bits/stdc++.h> using namespace std; int vis[(1<<11)+1]; int a[1001001],n,p; void dfs(int pos) if(p)return; if(pos==(1<<n)+1-n) for(int i=1;i<=(1<<n);i++) printf("%d",a[i]); p=1; return; int num=0; for(int i=pos-n+1;i<=pos;i++)num=(num<<1)+a[i]; if(!vis[num]) a[pos]=0; vis[num]=1; dfs(pos+1); vis[num]=0; if(p)return; vis[num+1]=1; a[pos]=1;dfs(pos+1); int main() scanf("%d",&n); for(int i=(1<<n)-n+1;i<=1<<n;i++)a[i]=1; vis[0]=1; int num=(1<<n)-1; for(int i=0;i<n;i++) vis[num]=1; num^=(1<<i); printf("%d ",1<<n); dfs(n+1);
T3
留个坑
以上是关于Contest1900 - 2019年6月多校联训a层测试1的主要内容,如果未能解决你的问题,请参考以下文章
2019 HDOJ Multi-University Training Contest Stage 10(杭电多校)