第八届蓝桥杯大赛c/c++ b组
2017-04-08 16:24
162 查看
5200
上面是我的答案
可以直接手算,但容易出错。
或者复制题目给的数据,稍微修改并格式化,放到文本文档中,不管是运行后复制数据,还是用io重定向,都要比手算方便。
比赛的时候freopen的前两个参数写反了,一直读不进去
210
比赛的时候没想清楚怎么搜
好像是7开头的一个挺大的数
比赛时的代码没最后的比较,不知道能不蒙对
216
要想满足分成两部分并且两部分相同,对应的条件是分割线没有经过同一个点和分割线关于(3,3)点中心对称,所以从(3,3)点出发遍历所有路径,路径数再除以2 就是答案
f(x/10,k)
a[i-1][j-1]+1
模拟一下就好,最后排一下序。
dp或者母函数暴一下,应该能过一部分数据
没看懂
数据范围记不太清了,这样应该可以,至少比枚举复杂度低
上面是我的答案
可以直接手算,但容易出错。
或者复制题目给的数据,稍微修改并格式化,放到文本文档中,不管是运行后复制数据,还是用io重定向,都要比手算方便。
比赛的时候freopen的前两个参数写反了,一直读不进去
210
比赛的时候没想清楚怎么搜
#include<cstdio> #include<cstring> #define LL long long #define MAX 10000 bool isprime[MAX]; int prime[MAX],cnt; void doprime(){ cnt=0; memset(isprime,true,sizeof(isprime)); isprime[0]=isprime[1]=false; for(LL i=2;i<=MAX;++i){ if(isprime[i]){ prime[cnt++]=i; for(LL j=i*i;j<=MAX;j+=i)//i是int可能溢出 isprime[j]=false; } } } int main(){ doprime(); for(int i=1;;++i){ int j; for(j=0;j<cnt;++j){ int k; int tmp=prime[j]; for(k=0;k<10;++k){ if(!isprime[tmp]) break; tmp+=i; } if(k>=10) break; } if(j<cnt){ printf("%d\n",i); break; } } return 0; }
好像是7开头的一个挺大的数
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; double a[40][40]; int data; //电子秤的最小示数 int main(){ for(int i=1;i<=29;++i){ for(int j=1;j<=29;++j){ scanf("%lf",&a[i][j]); if(j>1) a[i][j]+=a[i-1][j-1]/2; if(j<i) a[i][j]+=a[i-1][j-1]/2; } } printf("%f\n",data/(a[29][29]/2)*max((a[29][14]+a[29][15])/2,(a[29][16]+a[29][17])/2)); return 0; }
比赛时的代码没最后的比较,不知道能不蒙对
216
要想满足分成两部分并且两部分相同,对应的条件是分割线没有经过同一个点和分割线关于(3,3)点中心对称,所以从(3,3)点出发遍历所有路径,路径数再除以2 就是答案
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int dir[4][2]={-1,0,0,1,1,0,0,-1}; bool vis[10][10]; int ans; bool check(int x,int y){ return x>=1&&x<=6&&y>=1&&y<=6; } void dfs(int x,int y){ if(x==1||x==6||y==1||y==6){ ++ans; return; } for(int i=0;i<4;++i){ int xx=x+dir[i][0]; int yy=y+dir[i][1]; if(check(xx,yy)&&!vis[xx][yy]&&!vis[6-xx][6-yy]){ vis[xx][yy]=true; dfs(xx,yy); vis[xx][yy]=false; } } } int main(){ vis[3][3]=true; dfs(3,3); printf("%d %d\n",ans,ans/2); return 0; }
f(x/10,k)
a[i-1][j-1]+1
模拟一下就好,最后排一下序。
dp或者母函数暴一下,应该能过一部分数据
没看懂
数据范围记不太清了,这样应该可以,至少比枚举复杂度低
#include<cstdio> #include<cstring> #include<algorithm> #define MAX 100000 using namespace std; int dp[MAX+10][100]; int main(){ int n,k; int tmp; int ans=0; memset(dp,0,sizeof dp); scanf("%d%d",&n,&k); for(int i=1;i<=n;++i){ scanf("%d",&tmp); ++dp[i][tmp%k]; for(int j=0;j<k;++j){ dp[i][(j+tmp)%k]+=dp[i-1][j]; } } for(int i=1;i<=n;++i) ans+=dp[i][0]; printf("%d\n",ans); return 0; }
以上答案仅供参考
相关文章推荐
- (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第三题和第四题)
- (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第八题)
- (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第九题)
- 第八届蓝桥杯大赛个人赛省赛C++ B组 题解+原题 (填空题)
- (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第一题和第二题)
- 2017第八届蓝桥杯C/C++ B组省赛题解
- 2017年第八届蓝桥杯省赛B组 C/C++
- 2017第八届蓝桥杯C/C++第十题 - k倍区间 - 前缀和
- 2017年第八届蓝桥杯试题(C/C++本科B组)9题 分巧克力
- 第八届蓝桥杯省赛B组c++_方格分割
- 第八届蓝桥杯C++B组 方格分割
- 【拓展Euclid】(2017)第八届蓝桥杯省赛) C/C++ A组 题解(第八题)
- 第七届蓝桥杯大赛个人赛省赛C++ A组 题解+原题 (填空题)
- 第八届蓝桥杯C/C++B组【第二题】
- 2017第八届蓝桥杯 A组 C/C++ 真题及题解
- 2017第八届蓝桥杯C/C++ B组省赛题——承压计算
- 第六届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学B组
- 2018年第九届蓝桥杯大赛软件类省赛C/C++B组参赛感想
- 第八届蓝桥杯C++B组第四题:方格分割
- 第八届 蓝桥杯 c/c++ B组 省赛 (4)——方格分割