牛客周赛 Round 40
A 小红进地下城
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s,t;
cin>>s;
cin>>t;
if(s==t)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
return 0;
}
B 小红打怪
点击查看代码
#include<bits/stdc++.h>
using namespace std;
char mm[1005][1005];
int flag[1005][1005];
int main()
{
int n,m;
cin>>n>>m;
int xi,yi;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
cin>>mm[i][j];
if(mm[i][j]=='A')
{
xi=i,yi=j;
}
else if(mm[i][j]=='W')
{
xi=i,yi=j;
}
else if(mm[i][j]=='S')
{
xi=i,yi=j;
}
else if(mm[i][j]=='D')
{
xi=i,yi=j;
}
}
}
int ans=0;
if(mm[xi][yi]=='A')
{
for(int i=1;i<=yi;++i)
{
if(mm[xi][i]=='*')ans++;
}
}
else if(mm[xi][yi]=='W')
{
for(int i=1;i<=xi;++i)
{
if(mm[i][yi]=='*')ans++;
}
}
else if(mm[xi][yi]=='S')
{
for(int i=xi;i<=n;++i)
{
if(mm[i][yi]=='*')ans++;
}
}
else if(mm[xi][yi]=='D')
{
for(int i=yi;i<=m;i++)
{
if(mm[xi][i]=='*')ans++;
}
}
cout<<ans<<endl;
return 0;
}
C 小红的排列构造
开两个数组判断数字是否在
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn],p[maxn],q[maxn],t1[maxn],t2[maxn];
int main()
{
int n;
int j1=1,j2=1;
cin>>n;
int jud=0;
for(int i=1;i<=n;++i)
{
cin>>a[i];
if(!t1[a[i]])p[i]=a[i],t1[a[i]]=1;
else if(!t2[a[i]])q[i]=a[i],t2[a[i]]=1;
else jud=1;
}
if(jud)return cout<<-1,0;
for(int i=1;i<=n;++i)
{
if(!p[i])
{
while(t1[j1])j1++;
p[i]=j1;
t1[j1]=1;
}
if(!q[i])
{
while(t2[j2])j2++;
q[i]=j2;
t2[j2]=1;
}
}
for(int i=1;i<=n;++i)cout<<p[i]<<" ";
cout<<endl;
for(int i=1;i<=n;++i)cout<<q[i]<<" ";
cout<<endl;
return 0;
}
D 小红升装备
点击查看代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll dp[305][305];
//dp[i][j]为考虑前i件装备,使用金币数不超过j时,可以获得的最大战力
int main()
{
int n,x;
cin>>n>>x;
memset(dp,-0x3f,sizeof dp);
dp[0][0]=0;
ll res=0;
for(int i=1;i<=n;++i)//遍历每一件装备
{
ll a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
for(int j=0;j<=x;++j)
{
dp[i][j]=dp[i-1][j];
}
for(int k=0;k<=x;++k)//遍历金币数
{
for(int j=0;j<=e;++j)//遍历升的级
{
if(b+c*j>k)break;
dp[i][k]=max(dp[i][k],dp[i-1][k-(b+c*j)]+a+j*d);
res=max(res,dp[i][k]);
}
}
}
cout<<res<<endl;
return 0;
}
E 小红的矩阵划分
首先,有引理,如果
因此当
点击查看代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
ll n,x,y;
cin>>n>>x>>y;
if(n%3==0)
{
cout<<max(n*n/3*x,n*n/4*y);
}
else
{
cout<<max({n*n/3*x,n*n/4*y,n*n/3*x-x+y});
}
cout<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具