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模拟赛相关推荐

  1. 2018.7.17 绍兴一中模拟赛 解题报告

    成绩: 100+100+50=250(考得不错,只可惜跑得太慢,是250中最慢的一个) T1:交换(swap) 满分解法1: 这题是真的水. 先介绍一个比较麻烦的做法,也是我考试时的做法. 大致思路就 ...

  2. NOIP模拟赛 17.10.10

    初次见面(firstmeet) [题目背景] 雾之湖边,静得可怕. 露米娅出神凝望.黑白连衣裙,像极了绽放的墨黑和洁白的莲.身边的雾之 湖,倒映着血色天空.酒红的双眸,映照一切.低声浅笑,双臂伸直,她 ...

  3. 2020.03.18模拟赛17(第三题)

    3.[GDKOI训练]电视游戏问题(vidgame) 题目描述 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶教授的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是 ...

  4. 2018年10月17日普级B组【模拟赛】

    2018年10月17日普级B组模拟赛2018年10月17日普级B组模拟赛2018年10月17日普级B组模拟赛 第一题--ISBN号码第一题--ISBN号码第一题--ISBN号码 博客链接: https ...

  5. 2020.03.18模拟赛17(第二题)

    2.[GDKOI训练]音乐节拍(mnotes) 题目描述 FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000)种音节组成,编号为1到N,而且一定按照从1到N的顺序进行弹奏, ...

  6. 2020年蓝桥杯模拟赛2020.3.25直播笔记

    2020年蓝桥杯模拟赛解题报告(CPP版本) 第八题 长草的bfs写法[我想暴力模拟O kmn] 深搜会爆 bfs像投到水里的涟漪 问题: const int dx[] = {1, 0, -1, 0} ...

  7. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  8. 【模拟赛】10.15—10.17

    背景: 继国庆自闭四联考之后,确实,是很自闭,还做了些比较疯狂的事情,然后顿悟了很多,然后刚知道怎么去努力,刚知道努力的方法和方向就赶快滚回来写博客了,毕竟是在将近考试的时候出现了问题,还是赶快狗回来 ...

  9. 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  10. 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

最新文章

  1. python学习费用-在上海学Python贵吗?Python培训费用是多少
  2. Ubuntu命令行下安装、卸载、管理软件包的方法
  3. 工业交换机的背板带宽是怎么计算的?
  4. python将excel表按地方拆分_Python将一个Excel拆分为多个Excel
  5. php批量下载TXT中的URL,需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了...
  6. python对象模型映射_【500 Lines or Less】-【翻译练习】-【chapter 14】-【简单对象模型】-【第一部分】...
  7. (翻译)开始iOS 7中自动布局教程(二)
  8. appscan无法连接到服务器_闪烁之光无法连接服务器怎么办 解决方案一览
  9. github上springcloud 项目框架的前后端的启动(2021-08-05)
  10. linux启动supervisord服务,supervisord进程管理服务
  11. c#调用摄像头进行二维码扫码
  12. 华为笔记本都是Linux版本,华为笔记本装上linux系统而非Windows系统 这是为何
  13. uniapp + vue3微信小程序开发(2)活体人脸识别
  14. 青果教务系统API(Java版)
  15. vue仿淘宝京东商品多条件筛选(vue实现)
  16. ORACLE 碎片整理小结
  17. 万能密码:‘or 1=1-- 实战SQL注入,秒破后台
  18. 谷胱甘肽(GSH)修饰的CdTe/CdS量子点(GSH-CdTe/CdSQDs)|PEG修饰水溶性量子点ZnS:Mn
  19. C++ 高精度除法运算(c=a/b)
  20. 基于高光谱的无损检测技术

热门文章

  1. 高手也不好当,压力更大
  2. 人只会看到他想看的,不想看的视而不见
  3. 简单的Python文件服务器和HTTP POST上传文件C代码
  4. LINUX的VirtualBox安装Windows7
  5. java 接口编程iservices_java – 通用接口
  6. linux网络测试题,Linux 练习题-4网络 命令
  7. 纯php程序无数据,无数据库的详细域名查询程序PHP版(1)_php基础
  8. 前端和java选哪个_web前端和java哪个好?新手该选择哪个
  9. 【C#】反射与面向接口的架构
  10. python环境下数据操作_在windows环境下使用Python操作spatialite数据库