牛客OI周赛2-提高组
A.游戏
链接:https://www.nowcoder.com/acm/contest/210/A
来源:牛客网
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
1.操作的范围为从整个网格的左上角到选定方格的矩形区域
输入描述:
题目有多组数据第一行一个整数t,表示数据组数对于每组数据,第一行两个整数n,m,接下来n行每行m个字符
输出描述:
输出共t行,每行一个字符串表示答案
输入
复制
2 3 3 RGG BBG RRR 3 3 GRB RGR RBG
输出
复制
dreagonm fengxunling
备注:
对于
的数据,
对于另
的数据,
对于
的数据
/* 题目描述写的很清楚,三个人的操作都是为了 BLUESKY007能赢,所以游戏一定会结束,那么当横纵坐标最大的非 B 颜色方格变为 B 颜 色时,可操作的方格范围显然是趋向收敛的,又因为操作规则的要求,左上角的方格在每 次操作中都会按规则进行变换,当可操作范围收敛到左上角且左上角变为 B 颜色时,游 戏结束,所以无论中间的操作是怎样进行的,最终左上角的方格一定会变为 B 颜色,而且 进行操作的人数和操作变换长度相同,所以只需要判断左上角方格的颜色即可 */ #include<bits/stdc++.h>using namespace std; char maze[1000+5][1000+5];int main() {int t;cin>>t;int n,m;while(t--){scanf("%d%d",&n,&m);for(int i=0; i<n; i++){cin>>maze[i];}if(maze[0][0]=='R') puts("dreagonm");else if(maze[0][0]=='G') puts("fengxunling");else puts("BLUESKY007");} }
B.水果蛋糕
链接:https://www.nowcoder.com/acm/contest/210/B
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
蛋糕是方形的,因为水果颗粒放整齐才好看,所以水果颗粒必须按行按列地摆放(也就是如果建立平面直角坐标系,它们的坐标必须都是整数)。
她的朋友们想要蛋糕店多放点水果,但是由于摆放得太密集也不好看qwq,所以蛋糕店拒绝在和任意的水果颗粒相距的地方摆放水果颗粒。
她的朋友们想知道蛋糕上最多能摆放多少水果颗粒,但是由于她们没有BLUESKY007聪(rui)慧(zhi),所以她们找到了你来帮忙
输入描述:
一行两个正整数n,m
输出描述:
一行一个整数表示答案
输入
复制
1 4
输出
复制
4
输入
复制
3 4
输出
复制
10
备注:
对于20%的数据,min(n,m)≤3,n,m≤10
3
对于100%的数据,n,m≤ 10
9
/* 规律题 */ #include<bits/stdc++.h>using namespace std; int n,m;int main() {scanf("%d%d",&n,&m);if(n<3||m<3){printf("%lld\n",1ll*n*m);return 0;}if(n>m)swap(n,m);if(n==4&&m==4){puts("12");return 0;}if(n==4&&m==5){puts("17");return 0;}if(n==4){int t=m/6,r=m%6;long long ans=2ll*m;if(r==1||r==2)ans+=2*r;else if(r==3||r==4)ans+=4;else if(r==5)ans=12ll*(t+1);printf("%lld\n",ans);return 0;}if(n==3){int t=m/6,r=min(3,m%6);long long ans=m+6ll*t+2ll*r;printf("%lld\n",ans);return 0;}cout<<(1ll*n*m+1)/2<<endl;return 0; }
C.好朋友
链接:https://www.nowcoder.com/acm/contest/210/C
来源:牛客网
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
她会向你询问t次,由于询问次数可能很多,所以你只需要告诉她t次询问答案的异或和即可.
输入描述:
第一行一个整数t,表示询问个数 接下来t行,每行两个整数l
i
,r
i
输出描述:
一行一个整数表示答案
输入
复制
3 1 1000 233 666 999 999
输出
复制
0
说明
在0~1000范围内不存在与题目要求相符的含有“007”的数,所以三次询问的答案都是0
输入
复制
3 10000 10086 2333 23333 6666 66666
输出
复制
132
#include<bits/stdc++.h>#define N 500000using namespace std; int n,m,l,r,ans; int sum[N];int main() {int T;cin>>T;sum[1007]=1;sum[2007]=1;sum[3007]=1;sum[4007]=1;sum[5007]=1;sum[6007]=1;sum[7007]=1;sum[8007]=1;sum[9007]=1;sum[10007]=1;sum[20007]=1;sum[30007]=1;sum[40007]=1;sum[11007]=1;sum[12007]=1;sum[13007]=1;sum[14007]=1;sum[15007]=1;sum[16007]=1;sum[17007]=1;sum[18007]=1;sum[19007]=1;sum[10107]=1;sum[10207]=1;sum[10307]=1;sum[10407]=1;sum[10507]=1;sum[10607]=1;sum[10707]=1;sum[10807]=1;sum[10907]=1;sum[10017]=1;sum[10027]=1;sum[10037]=1;sum[10047]=1;sum[10057]=1;sum[10067]=1;sum[10077]=1;sum[10087]=1;sum[10097]=1;sum[11007]=1;sum[12007]=1;sum[13007]=1;sum[14007]=1;sum[15007]=1;sum[16007]=1;sum[17007]=1;sum[18007]=1;sum[19007]=1;sum[10107]=1;sum[10207]=1;sum[10307]=1;sum[10407]=1;sum[10507]=1;sum[10607]=1;sum[10707]=1;sum[10807]=1;sum[10907]=1;sum[10017]=1;sum[10027]=1;sum[10037]=1;sum[10047]=1;sum[10057]=1;sum[10067]=1;sum[10077]=1;sum[10087]=1;sum[10097]=1;sum[10070]=1;sum[10071]=1;sum[10072]=1;sum[10073]=1;sum[10074]=1;sum[10075]=1;sum[10076]=1;sum[10077]=1;sum[10078]=1;sum[10079]=1;sum[21007]=1;sum[22007]=1;sum[23007]=1;sum[24007]=1;sum[25007]=1;sum[26007]=1;sum[27007]=1;sum[28007]=1;sum[29007]=1;sum[20107]=1;sum[20207]=1;sum[20307]=1;sum[20407]=1;sum[20507]=1;sum[20607]=1;sum[20707]=1;sum[20807]=1;sum[20907]=1;sum[20017]=1;sum[20027]=1;sum[20037]=1;sum[20047]=1;sum[20057]=1;sum[20067]=1;sum[20077]=1;sum[20087]=1;sum[20097]=1;sum[20070]=1;sum[20071]=1;sum[20072]=1;sum[20073]=1;sum[20074]=1;sum[20075]=1;sum[20076]=1;sum[20077]=1;sum[20078]=1;sum[20079]=1;sum[31007]=1;sum[32007]=1;sum[33007]=1;sum[34007]=1;sum[35007]=1;sum[36007]=1;sum[37007]=1;sum[38007]=1;sum[39007]=1;sum[30107]=1;sum[30207]=1;sum[30307]=1;sum[30407]=1;sum[30507]=1;sum[30607]=1;sum[30707]=1;sum[30807]=1;sum[30907]=1;sum[30017]=1;sum[30027]=1;sum[30037]=1;sum[30047]=1;sum[30057]=1;sum[30067]=1;sum[30077]=1;sum[30087]=1;sum[30097]=1;sum[30070]=1;sum[30071]=1;sum[30072]=1;sum[30073]=1;sum[30074]=1;sum[30075]=1;sum[30076]=1;sum[30077]=1;sum[30078]=1;sum[30079]=1;sum[41007]=1;sum[42007]=1;sum[43007]=1;sum[44007]=1;sum[45007]=1;sum[46007]=1;sum[47007]=1;sum[48007]=1;sum[49007]=1;sum[40107]=1;sum[40207]=1;sum[40307]=1;sum[40407]=1;sum[40507]=1;sum[40607]=1;sum[40707]=1;sum[40807]=1;sum[40907]=1;sum[40017]=1;sum[40027]=1;sum[40037]=1;sum[40047]=1;sum[40057]=1;sum[40067]=1;sum[40077]=1;sum[40087]=1;sum[40097]=1;sum[40070]=1;sum[40071]=1;sum[40072]=1;sum[40073]=1;sum[40074]=1;sum[40075]=1;sum[40076]=1;sum[40077]=1;sum[40078]=1;sum[40079]=1; for(int i=1007;i<=50000;i++) sum[i]+=sum[i-1];while(T--){cin>>l>>r;if(l<=1000 && r<=1000) ans^=0; else if(l<=50000 && r<=50000)ans^=sum[r]-sum[l-1];}printf("%d\n",ans);return 0; }
40打了个表...
/* 因为"好朋友"的定义为含有"007",所以有很多情况都会被视为含有"007",例如 "10707","17007"等,此时我们发现对于含有"007"的情况的讨论比较复杂,所以我们不 妨讨论不含"007"的情况,也即对于任意的含有 7 的数,其中每一个7前都至多有2个0 , 由此可以设f[i][j]表示在前 i 位有 j 个 0 的数的个数,在数位DP过程中存当前位置和已有 的 0 的个数,显然在 0 的个数>=2时,后面的数位上都不可能再有7.在求出不含"007"的 数之后,用总数减掉即可。 */ #include<bits/stdc++.h>#define ll long longusing namespace std;ll l,r,ans,f[20][4],d[20]; int t,m,i,j,k,x,a[20];ll work(ll n) {if(n<1000)return 0;for(m=0;n;n/=10)a[m++]=n%10;reverse(a,a+m);memset(f,0,sizeof(f));f[1][0]=a[0]-1;x=0;for(i=1;i<m;i++){f[i+1][0]=f[i][0]*9;f[i+1][1]=f[i][0]+f[i][1]*9;f[i+1][2]=f[i][1]+f[i][2]*9;f[i+1][3]=f[i][2]+f[i][3]*10;f[i+1][x]+=a[i]-1;f[i+1][x+(x<2&&a[i]||x==2&&a[i]>7)]++;if(x<2&&!a[i]||x==2&&a[i]==7)x++;}return d[m-1]+f[m][3]; }int main() {for(i=0,l=1;i<=18;i++,l*=10)d[i]=work(l-1);scanf("%d",&t);while(t--){scanf("%lld%lld",&l,&r);ans^=work(r+1)-work(l);}cout<<ans<<endl;return 0; }
转载于:https://www.cnblogs.com/L-Memory/p/9789166.html
牛客OI周赛2-提高组相关推荐
- 【牛客OI周赛7-普及组ABCD 非官方题解】暴力,二分,KMP,尺取(STL或Hash)
A: 链接:https://ac.nowcoder.com/acm/contest/372/A 来源:牛客网 某天,一只可爱的肥橘喵在路上走,突然遇到了一个怪人,那怪人自称PM6,"小肥喵, ...
- 【牛客 - 371牛客OI周赛7-提高组B】小睿睿的询问(RMQ,ST表维护下标)
题干: 链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小 ...
- 【牛客 - 371牛客OI周赛7-提高组A】小睿睿的等式(dp,暴力 )
题干: 链接:https://ac.nowcoder.com/acm/contest/371/A 来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如"A+B=n"的等 ...
- 牛客OI周赛7-提高组 A 小睿睿的等式
链接:https://ac.nowcoder.com/acm/contest/371/A 来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如"A+B=n"的等式且使用 ...
- 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)
链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知 ...
- 牛客OI周赛15-普及组
1. 咪咪游戏 bool f1,f2,f; f1用于记录m f2用于记录q f用于判断串的好坏.1为坏,0为好 注意几种情况: mqm mmq 具体看代码: #include<bits/stdc ...
- 牛客OI周赛10-提高组:B-Taeyeon的困惑(值域线段树)
做法 单点加单点删,在值域线段树上直接二分就能求值前\(K\)小的和 Code #include<bits/stdc++.h> typedef long long LL; const LL ...
- 牛客OI周赛6-提高组 B 践踏
践踏 思路: 如果k不为0, 那么就是对k取模意义下的区间更新, 单点查询 否则, 就是普通的区间更新, 单点查询 代码: #pragma GCC optimize(2) #pragma GCC op ...
- 牛客OI周赛4-提高组 C 战争(war)
战争(war) 思路: 二分答案, 找到第一个不满足条件的位置 首先对于一个值来说, 所有这个值的区间肯定有交区间, 然后在这个交区间内不能出现比它小的数 所以我们check时从大的值开始考虑, 求出 ...
最新文章
- 爬虫与浏览器的区别,爬虫产生(出自简书)
- 数据预处理之独热编码(One-Hot)
- Linux内核分析 02
- C++:46---绝不重新定义继承而来的non-virtual函数
- CodeIgniter 的数据安全过滤全解析
- C#根据网址生成静态页面
- IntelliJ IDEA搭建Hadoop开发环境(下)
- cocos studio和cocosbuilder什么区别
- C++ 智能指针和工厂模式
- hibernate 中文文档
- 算法设计——电路布线问题(动态规划)
- 通信子网和资源子网的区别
- matlab求多元函数微积分,中北大学高等数据MATLAB验证性实验7多元函数微积分学MATLAB实验报告格式...
- linux下7z压缩包解压
- 人工智能新目标——看懂视频
- 0基础学习pythonTASK6——If 、For、While语句
- 一个简简单单的许愿墙
- 単語ーー下げる(さげる)
- Ubuntu command 记录
- p2p网络实现(C++)
热门文章
- HTTP 和 WebSocket的区别
- open source Swift, Objective-C and the next 20 years of development
- struts 的action 线性安全问题
- 中庸女比美女更有市场
- IT从业者几大职位薪酬对比
- 图神经网络让预估到达准确率提升50%,谷歌地图实现新突破
- 2020顶会指南:征稿截止时间、举办地、举办时间一览
- 坐标北京,Paddle Lite​ 线下交流会,助力算法落地​
- FaceBoxes—官方开源CPU实时高精度人脸检测器
- Python 爬虫没有思路?可以看看这篇文章