130719周赛CF
来源:互联网 发布:流放之路装备数据 编辑:程序博客网 时间:2024/06/11 12:40
A题,就是一个找最多能让0翻转成1的区间。。水题1A。。只要从头开始遍历的时候每次比较得到最大的“优惠”就行了。
B题special judge直接打素数表,数组开大就行。就不贴了。。。
D题是一道模拟题,题意是在'.'的位置上建蓝色或者红色的建筑,要使最后人口数最多(蓝色建筑人口少于红色,但红色建筑必须建在蓝色建筑边上,由于是special judge)所以采取的方法是先将所有空位上都建蓝色建筑,然后用dfs暴搜,一一加上红色建筑,并用结构体数组记录下操作的步骤,最后输出答案。
A. Flipping Game
#include<iostream>#include<cstring>using namespace std;int main(){ int n,m,i,j,q,p,s[105]; cin>>n; p=0; j=0; m=0; q=-1; for(i=1; i<=n; i++) { cin>>s[i]; if(s[i]==1) { p=max(p-1,-1); m++; } else if(s[i]==0) { p=max(p+1,1); } q=max(q,p); } cout<<q+m<<endl; return 0;}
C题Magic Five 是一个数论问题,给你k个一样的字符串,让你去掉0个至多个字符(但不能全部),得到的数字可以被5整除。
我们可以对单独一个字符串进行讨论,对多个进行考虑时就可以看成一个等比数论求和。首先要求首项A1=(2^x1+2^x2+...+2^xn),其中x1,x2...代表从左到右数字‘5’或‘0’与左边第一个字符的距离。而比例q则是2^(strlen(a)),也就是2的字符串长度次幂。。。接下来就是等比公式求和,S=A1*(q^k-1)/(q-1),由于数值很大不仅要mod1000000007,而且要用到快速幂取模。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#define M 1000000007using namespace std;char s[100004];int k;__int64 f(__int64 a,__int64 b,__int64 &x,__int64 &y)//模p求逆元{ __int64 ans,t; if(b==0) { x=1,y=0; return a; } ans=f(b,a%b,x,y); t=x; x=y; y=t-(a/b)*y; return ans;}__int64 p(__int64 pp,__int64 n)//快速幂取模{ __int64 r=1; while(n) { if(n%2==1) { r=(r*pp)%M; } pp=(pp*pp)%M; n=n/2; } return r;}int main(){ int i,len; __int64 a1,q,q1,sum,num,ans,flag; scanf("%s%d",s,&k); a1=0; len=strlen(s); for(i=0; i<len; i++) { if(s[i]=='0'||s[i]=='5')//标记0和5 { a1=(a1+p(2,i))%M; } } q=p(2,len); q1=(q+M-1)%M; f(q1,M,sum,num); sum=(sum+M)%M;//防止负数 flag=(p(q,k)-1)*sum%M; ans=(a1*flag)%M; printf("%I64d\n",ans); return 0;}
D题是一道模拟题,题意是在'.'的位置上建蓝色或者红色的建筑,要使最后人口数最多(蓝色建筑人口少于红色,但红色建筑必须建在蓝色建筑边上,由于是special judge)所以采取的方法是先将所有空位上都建蓝色建筑,然后用dfs暴搜,一一加上红色建筑,并用结构体数组记录下操作的步骤,最后输出答案。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>using namespace std;struct xl{ int x,y; char z;} q[5000005];char a[505][505];int vis[505][505];int dx[4]= {1,0,-1,0};int dy[4]= {0,-1,0,1};int n,m,i,j,len,k;void dfs(int ans,int num)//暴搜{ int i; len++; vis[ans][num]=1; for(i=0; i<4; i++) { if(a[ans+dx[i]][num+dy[i]]=='.'&&vis[ans+dx[i]][num+dy[i]]==0) { dfs(ans+dx[i],num+dy[i]); } } if(len>1)//判断是否建红色建筑 { q[k].x=ans; q[k].y=num; q[k].z='D'; k++; q[k].x=ans; q[k].y=num; q[k].z='R'; k++; a[ans][num]='R'; } len--;}int main(){ char c; scanf("%d%d",&n,&m); memset(vis,0,sizeof(vis)); for(i=1; i<=n; ++i) { c=getchar(); for(j=1; j<=m; ++j) { scanf("%c",&a[i][j]); } } k=0; for(i=1; i<=n; ++i) { for(j=1; j<=m; ++j) { if(a[i][j]=='.')//建蓝色建筑 { q[k].x=i; q[k].y=j; q[k].z='B'; k++; //cout<<1<<endl; } } } //cout<<1<<endl; for(i=1; i<=n; ++i) { for(j=1; j<=m; ++j) { if(vis[i][j]==0&&a[i][j]=='.') { len=0; dfs(i,j); } } } printf("%d\n",k); for(i=0;i<k;++i) { printf("%c %d %d\n",q[i].z,q[i].x,q[i].y); } return 0;}
这几道题做得一般,只有A题1A,,而且在速度上很有问题,需要继续加油
- 130719周赛CF
- CF 327 130719bnu
- 130712周赛(CF)
- CF
- CF
- cf
- cf
- CF
- CF
- CF
- CF
- CF
- CF
- cf
- CF
- cf
- cf
- cf ***
- 13暑假集训#3 总结
- 博客说明
- JSP的内置对象:
- Android---App Widget(三)
- java--选择排序
- 130719周赛CF
- Windows平台编译chrome源代码
- 夹角余弦与文章相似性比较
- ActionContext的介绍
- 实现一个函数,对一个正整数n,算得到1需要的最少操作次数:
- NetBeans的(默认)快捷键
- 在LinqToSql中如何应用Repository模式
- SSH整合下载资源说明
- PHP 执行系统外部命令 system() exec() passthru()
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
斑鸫叫声大全mp3下载
斑鸫叫声在线试听
斓
十二斓作品
斓的意思
斓怎么读
斓组词
斓的拼音
斓开头的成语
梦斓莎家居布艺
皓斓转
蝶依斓窗帘怎么样
梦斓莎窗帘
神斓奇域无双珠
斓屏膜结构
蝶依斓家具
蝶依斓布艺沙发怎么样
斗音
法斗
蟹斗
校斗
渣斗
青斗
能斗
斗图神器
青春斗
斗美神
与天斗与地斗
茅山斗降头
林昆楚静瑶
爱斗气爱上你
法斗犬
欢乐斗地斗下载
dzs
大乐斗2
斗地斗单机版免费下载
部落大乱斗
波克斗棋牌
单机斗地立
斗湖仙本那
法斗犬吃什么狗粮好