17-05-25模拟赛
T1:
统计1~N中所有数中含因数5的个数。(末尾0的个数可以看成是2*5的个数,其中2的个数在N>=2时一定比5的个数多)
考虑对N不断除以5并累加答案。由于n<=101000,所以需要用到高精度计算。
Code:
1 #include<cmath> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 struct hpc{ 7 int a[405],len; 8 }n,res; 9 char ch[1005]; 10 hpc in(char ch[]){ 11 int l=strlen(ch),alen;hpc ans; 12 alen=0;memset(ans.a,0,sizeof(ans.a)); 13 for (int i=l-1;i>=0;i-=4){ 14 int t=0,x=max(0,i-3); 15 for (int j=x;j<=i;++j) t=(t<<3)+(t<<1)+(ch[j]-'0'); 16 ans.a[alen++]=t; 17 }ans.len=alen; 18 return ans; 19 } 20 hpc operator +(const hpc &x,const hpc &y){ 21 hpc ans;int &len=ans.len,l=max(x.len,y.len); 22 memset(ans.a,0,sizeof(ans.a)); 23 for (int i=0;i<l;i++){ 24 if (i<x.len) ans.a[i]+=x.a[i]; 25 if (i<y.len) ans.a[i]+=y.a[i]; 26 ans.a[i+1]+=ans.a[i]/10000;ans.a[i]%=10000; 27 }len=l; 28 for (;ans.a[len]>0;len++){ 29 ans.a[len+1]=ans.a[len]%10000;ans.a[len]/=10000; 30 } 31 return ans; 32 } 33 hpc operator /(const hpc &x,const int &b){ 34 hpc ans;int &len=ans.len; 35 memset(ans.a,0,sizeof(ans.a)); 36 for (int i=x.len-1;i;i--){ 37 ans.a[i-1]+=(ans.a[i]+x.a[i])%b*10000; 38 ans.a[i]=(ans.a[i]+x.a[i])/b; 39 }ans.a[0]=(ans.a[0]+x.a[0])/b; 40 for (len=x.len;!ans.a[len-1];len--); 41 return ans; 42 } 43 void print(const hpc &x){ 44 printf("%d",x.a[x.len-1]); 45 for (int i=x.len-2;i>=0;i--) printf("%.4d",x.a[i]); 46 } 47 int main() 48 { 49 scanf("%s",ch);n=in(ch);res.a[0]=0;res.len=1; 50 while (n.a[0]||(n.len>1)){n=n/5;res=res+n;} 51 print(res);return 0; 52 }
T2:
依题意进行模拟即可。
Code:
1 #include<cmath> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char s[3005][22],opr[22],ch[22]; 6 int q,cnt,dig[22]; 7 bool p[3005]; 8 int main() 9 { 10 scanf("%d",&q);cnt=0; 11 while(q--){ 12 scanf("%s%s",opr,ch); 13 if (opr[0]=='O'){ 14 bool f=0; 15 for (int i=1;i<=cnt;i++) if (!strcmp(s[i],ch)) {p[i]=1;f=1;break;} 16 if (!f) {strcat(s[++cnt],ch);p[cnt]=1;} 17 } 18 else if(opr[0]=='S'){for (int i=1;i<=cnt;i++) if (!strcmp(s[i],ch)) {p[i]=0;break;}} 19 else if(opr[0]=='P'){ 20 int ans=0,pos=0; 21 for (int i=0;i<strlen(ch);i++) if (ch[i]!='?') dig[++pos]=i; 22 for (int i=1;i<=cnt;i++) 23 if (!p[i]||strlen(s[i])!=strlen(ch))continue; 24 else{ 25 int l=strlen(ch);bool eq=1; 26 for (int j=1;j<=pos;j++) if (ch[dig[j]]!=s[i][dig[j]]) {eq=0;break;} 27 if (eq) ans++; 28 } 29 printf("%d\n",ans); 30 } 31 } 32 return 0; 33 }
T3:
枚举第一行及第一列的状态,根据该状态可以推出接下来的灯的亮暗,由此可以找出下一步是否需要按按钮。(dfs)
Code:
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #define inf 0x7fffffff 5 using namespace std; 6 bool a[9][9]; 7 int t,n,m,ans; 8 char ch; 9 void change(int x,int y) 10 { 11 a[x][y]^=1; 12 if (y>1) a[x][y-1]^=1; 13 if (y<m) a[x][y+1]^=1; 14 if (x>1){ 15 a[x-1][y]^=1; 16 if (y>1) a[x-1][y-1]^=1; 17 if (y<m) a[x-1][y+1]^=1; 18 } 19 if (x<n){ 20 a[x+1][y]^=1; 21 if (y>1) a[x+1][y-1]^=1; 22 if (y<m) a[x+1][y+1]^=1; 23 } 24 } 25 bool judge() 26 { 27 for (int i=1;i<=n;++i) if (!a[i][m]) return 0; 28 for (int i=1;i<=m;++i) if (!a[n][i]) return 0; 29 return 1; 30 } 31 void dfs(int x,int y,int step) 32 { 33 if (step>=ans) return; 34 if (y>m) {if (judge()) ans=step;return;} 35 if (x==1||y==1){ 36 change(x,y); 37 if (x<n) dfs(x+1,y,step+1); 38 else dfs(1,y+1,step+1); 39 change(x,y); 40 if (x<n) dfs(x+1,y,step); 41 else dfs(1,y+1,step); 42 }else{ 43 if ((x==n)&&(a[x-1][y-1]!=a[x][y-1])) return; 44 if (!a[x-1][y-1]){ 45 change(x,y); 46 if (x<n) dfs(x+1,y,step+1);else dfs(1,y+1,step+1); 47 change(x,y); 48 }else { 49 if (x<n) dfs(x+1,y,step);else dfs(1,y+1,step); 50 } 51 52 } 53 } 54 int main() 55 { 56 scanf("%d",&t); 57 while (t--){ 58 scanf("%d%d",&n,&m);memset(a,0,sizeof(a));ans=inf; 59 for (int i=1;i<=n;++i){ 60 scanf("%c",&ch); 61 for (int j=1;j<=m;++j){ 62 scanf("%c",&ch); 63 a[i][j]=(ch=='*')?1:0; 64 } 65 } 66 dfs(1,1,0);printf("%d\n",(ans==inf)?-1:ans); 67 } 68 return 0; 69 }
T4:
状态压缩dp。f[i][j]表示比到字符串长度为i情况为j时,能够匹配的情况数。其中j在二进制中的第k位数若为1,则表示第k个子串能取到,若为0则表示不能取到。
Code:
#include<cmath> #include<cstdio> #include<cstring> #define mod 1000003 using namespace std; char s[16][52]; int f[52][1<<15]; int n,k,len,ans; void dp() { f[0][(1<<n)-1]=1; for(int i=0;i<len;++i){ for (int j=0;j<(1<<n);++j) if (f[i][j]){ for (char k='a';k<='z';++k){ int curs=j; for (int l=0;l<n;++l) if (((j>>l)&1)&&(s[l][i]!='?')&&(k!='?')&&s[l][i]!=k) curs-=(1<<l); f[i+1][curs]=(f[i+1][curs]+f[i][j])%mod; } } } } int main() { scanf("%d%d",&n,&k); for (int i=0;i<n;++i) scanf("%s",s[i]); len=strlen(s[0]);dp(); for (int i=0;i<(1<<n);++i){ int cnt=0; for (int j=0;j<n;++j) cnt+=(i>>j)&1; if (cnt==k) ans=(ans+f[len][i])%mod; }printf("%d",ans);return 0; }
转载于:https://www.cnblogs.com/codingutopia/p/test170525.html
17-05-25模拟赛相关推荐
- 2018.7.17 绍兴一中模拟赛 解题报告
成绩: 100+100+50=250(考得不错,只可惜跑得太慢,是250中最慢的一个) T1:交换(swap) 满分解法1: 这题是真的水. 先介绍一个比较麻烦的做法,也是我考试时的做法. 大致思路就 ...
- NOIP模拟赛 17.10.10
初次见面(firstmeet) [题目背景] 雾之湖边,静得可怕. 露米娅出神凝望.黑白连衣裙,像极了绽放的墨黑和洁白的莲.身边的雾之 湖,倒映着血色天空.酒红的双眸,映照一切.低声浅笑,双臂伸直,她 ...
- 2020.03.18模拟赛17(第三题)
3.[GDKOI训练]电视游戏问题(vidgame) 题目描述 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶教授的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是 ...
- 2018年10月17日普级B组【模拟赛】
2018年10月17日普级B组模拟赛2018年10月17日普级B组模拟赛2018年10月17日普级B组模拟赛 第一题--ISBN号码第一题--ISBN号码第一题--ISBN号码 博客链接: https ...
- 2020.03.18模拟赛17(第二题)
2.[GDKOI训练]音乐节拍(mnotes) 题目描述 FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000)种音节组成,编号为1到N,而且一定按照从1到N的顺序进行弹奏, ...
- 2020年蓝桥杯模拟赛2020.3.25直播笔记
2020年蓝桥杯模拟赛解题报告(CPP版本) 第八题 长草的bfs写法[我想暴力模拟O kmn] 深搜会爆 bfs像投到水里的涟漪 问题: const int dx[] = {1, 0, -1, 0} ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- 【模拟赛】10.15—10.17
背景: 继国庆自闭四联考之后,确实,是很自闭,还做了些比较疯狂的事情,然后顿悟了很多,然后刚知道怎么去努力,刚知道努力的方法和方向就赶快滚回来写博客了,毕竟是在将近考试的时候出现了问题,还是赶快狗回来 ...
- 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
最新文章
- python学习费用-在上海学Python贵吗?Python培训费用是多少
- Ubuntu命令行下安装、卸载、管理软件包的方法
- 工业交换机的背板带宽是怎么计算的?
- python将excel表按地方拆分_Python将一个Excel拆分为多个Excel
- php批量下载TXT中的URL,需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了...
- python对象模型映射_【500 Lines or Less】-【翻译练习】-【chapter 14】-【简单对象模型】-【第一部分】...
- (翻译)开始iOS 7中自动布局教程(二)
- appscan无法连接到服务器_闪烁之光无法连接服务器怎么办 解决方案一览
- github上springcloud 项目框架的前后端的启动(2021-08-05)
- linux启动supervisord服务,supervisord进程管理服务
- c#调用摄像头进行二维码扫码
- 华为笔记本都是Linux版本,华为笔记本装上linux系统而非Windows系统 这是为何
- uniapp + vue3微信小程序开发(2)活体人脸识别
- 青果教务系统API(Java版)
- vue仿淘宝京东商品多条件筛选(vue实现)
- ORACLE 碎片整理小结
- 万能密码:‘or 1=1-- 实战SQL注入,秒破后台
- 谷胱甘肽(GSH)修饰的CdTe/CdS量子点(GSH-CdTe/CdSQDs)|PEG修饰水溶性量子点ZnS:Mn
- C++ 高精度除法运算(c=a/b)
- 基于高光谱的无损检测技术
热门文章
- 高手也不好当,压力更大
- 人只会看到他想看的,不想看的视而不见
- 简单的Python文件服务器和HTTP POST上传文件C代码
- LINUX的VirtualBox安装Windows7
- java 接口编程iservices_java – 通用接口
- linux网络测试题,Linux 练习题-4网络 命令
- 纯php程序无数据,无数据库的详细域名查询程序PHP版(1)_php基础
- 前端和java选哪个_web前端和java哪个好?新手该选择哪个
- 【C#】反射与面向接口的架构
- python环境下数据操作_在windows环境下使用Python操作spatialite数据库