Educational Codeforces Round 123(Rated for Div. 2)
前言:这场不知道是良心发现还是什么的,突然变简单了(bushi
A-Doors and Keys
有三扇门,每扇门对应三把钥匙,钥匙和门按顺序排在一个狭窄的走廊中,只有有了钥匙才能打开对应的门。有组询问,每次有一个长度为的字符串,问能否走过整条走廊。
思路
这题就是一个非常简单的题目啦,稍微想想就能过啦。
代码
#include<bits/stdc++.h> using namespace std; char s[10]; int main() { int _; scanf("%d",&_); while(_--) { scanf("%s",s+1); bool r=0,g=0,b=0; bool ck=1; for(int i=1;i<=6;i++) { if(s[i]=='r')r=1; else if(s[i]=='g')g=1; else if(s[i]=='b')b=1; else if(s[i]=='R'){if(!r){ck=0;break;}} else if(s[i]=='G'){if(!g){ck=0;break;}} else if(s[i]=='B'){if(!b){ck=0;break;}} } if(ck)printf("YES\n"); else printf("NO\n"); } return 0; }
B-Anti-Fibonacci Permutation
有组数据,对于每一个给定的,你需要输出个不同的的某排列使得。
思路
稍微想一想其实就是倒着的排列,然后把的位置换来换去就行了。
代码
#include<bits/stdc++.h> using namespace std; int main() { int _; scanf("%d",&_); while(_--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { for(int j=n;j>i;j--)printf("%d ",j); printf("%d ",1); for(int j=i;j>=2;j--)printf("%d ",j); printf("\n"); } } return 0; }
C-Increase Subarray Sums
有组询问,每次给你一个长度为的序列,然后定义一个函数表示对序列中任意个数增加后所有连续的字串的和中的最大值,对于,输出。
思路
这题我已经不想说什么了,就是一个非常暴力的方法然后赛时怎么也想不出来,哭死……
代码
#include<bits/stdc++.h> using namespace std; int a[5005],b[5005],c[5005]; int main() { int _; scanf("%d",&_); while(_--) { int n,x; scanf("%d%d",&n,&x); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); b[i]=b[i-1]+a[i]; c[i]=-1e9; } for(int i=1;i<=n;i++) { for(int j=1;j+i-1<=n;j++) { c[i]=max(c[i],b[j+i-1]-b[j-1]); } } int ans=0; for(int i=0;i<=n;i++) { for(int j=i;j<=n;j++) { ans=max(ans,c[j]+i*x); } printf("%d ",ans); } printf("\n"); } return 0; }
D-Cross Coloring
有组数据,每次有一个的方格,初始为白色,然后又给你种颜料和个格子,每次按给的格子的顺序,选一种颜色,把这一行和这一列都涂成这个颜色。涂色结果不同当且仅当有至少一个格子的颜色不同。问对于每一组数据,有多少种不同的涂色结果。
思路
这题其实就是想让我们找到方格中有多少只能涂相同颜色的格子组成的集合。那么我们可以从后往前找,然后进行一定的标记,然后就能啦,只不过要想清楚,不然会的很惨……
代码
#include<bits/stdc++.h> using namespace std; inline int read() { int s=0,w=1;char ch=getchar(); for(;!isdigit(ch);ch=getchar())if(ch=='-')w=-1; for (;ch>='0'&&ch<='9';ch=getchar())s=(s<<1)+(s<<3)+(ch^48); return (w==-1?-s:s); } bool xx[200005],yy[200005]; int x[200005],y[200005]; const long long mod=998244353; long long poww(long long a,long long n) { long long ans=1; while(n) { if(n&1)ans=ans*a%mod; a=a*a%mod; n>>=1; } return ans; } int main() { int _=read(); while(_--) { int n=read(),m=read(),k=read(),q=read(); for(int i=1;i<=n;i++)xx[i]=0; for(int i=1;i<=m;i++)yy[i]=0; for(int i=1;i<=q;i++)x[i]=read(),y[i]=read(); int cnt=0; int xxx=n,yyy=m; for(int i=q;i>=1;i--)if((!xx[x[i]])||(!yy[y[i]])) { cnt++; if(!xx[x[i]]){xx[x[i]]=1;xxx--;} if(!yy[y[i]]){yy[y[i]]=1;yyy--;} if(xxx==0||yyy==0)break; } printf("%lld\n",poww(1ll*k,1ll*cnt)); } return 0; }
E-Expand the Path
有组询问,每次给一个的方格,有一个机器人从点出发,按照字符串所给的指令向右向下走,现在能进行操作把某个单个的指令变成两个同样的指令,保证机器人不走出方格。每次问你经过若干次操作之后机器人能经过的点有几个。
思路
其实就是一道简单的想法题,在草稿纸上画一画就能知道情形并且了。
代码
#include<bits/stdc++.h> using namespace std; char s[200005]; int main() { int _; scanf("%d",&_); while(_--) { int n; scanf("%d",&n); scanf("%s",s+1); int len=strlen(s+1); int r=0,d=0; int x=1,y=1; int rr=0,dd=0,rrr=0; for(int i=1;i<=len;i++) { if(!r&&s[i]=='R')r=i; if(!d&&s[i]=='D')d=i; x+=(s[i]=='D'); y+=(s[i]=='R'); if(r)dd+=(s[i]=='D'); if(!d)rr+=(s[i]=='R'); if(d)rrr+=(s[i]=='R'); } long long ans=len; if(r) { ans+=1ll*(dd+1)*(n-y); if(d) { ans+=1ll*(n-rr)*(n-x); } printf("%lld\n",ans+1); } else { ans+=1ll*(rrr+1)*(n-x); printf("%lld\n",ans+1); } } return 0; }
__EOF__

本文作者:Jerry-Black
本文链接:https://www.cnblogs.com/Jerry-Black/p/15925686.html
关于博主:小蒟蒻一只( ̄^ ̄)ゞ
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
本文链接:https://www.cnblogs.com/Jerry-Black/p/15925686.html
关于博主:小蒟蒻一只( ̄^ ̄)ゞ
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
分类:
Codeforces
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)