2023.4.22洛谷月赛解题报告
传送门
T1#
一眼题,特判整除的情况输出
#include<bits/stdc++.h>
using namespace std;
int n,k;
signed main()
{
cin>>n>>k;
if(n%k==0)cout<<k<<endl;
else cout<<(k-n%k)<<endl;
return 0;
}
T2#
遇事不决先暴力,经过我对于样例的打表发现,
当然这题远不止于此,因为
#include<bits/stdc++.h>
#define int long long
#define N 1000100
using namespace std;
int t,n,k,a[N],ans[N],cao,cnt;
inline void print1(){for(int i=1;i<=n;i++)cout<<a[i]<<" ";cout<<endl;}
inline void print2(){for(int i=1;i<=n;i++)cout<<ans[i]<<" ";cout<<endl;}
inline int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){f=ch!='-';ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return f?x:-x;}
inline void cnm()
{
cnt++;cao=0;
for(int i=1;i<=n;i++)cao^=a[i];
for(int i=1;i<=n;i++)ans[i]=cao^a[i];
cout<<cnt<<": ";
for(int i=1;i<=n;i++)
cout<<ans[i]<<' ';
cout<<endl;
for(int i=1;i<=n;i++)a[i]=ans[i];
return ;
}
signed main()
{
// freopen("55.out","w",stdout);
t=read();
while(t--)
{
n=read(),k=read();cao=0;
for(int i=1;i<=n;i++)a[i]=read(),cao^=a[i];
for(int i=1;i<=n;i++)ans[i]=cao^a[i];
if(n%2==0&&k%2==0)print1();
else print2();
// for(int i=1;i<=k+100;i++)cnm();
}
return 0;
}
T3#
不算很难想的贪心。
我们从题目里可以看出来对于火的攻击,肯定是优先让大的都打双倍伤害最优;对于冰属性的攻击,我们可以发现用小的和大的和火攻击打反应的收益是没有区别的,所以我们把两个数组排序一下,然后尽量多的打反应,我们看当前没用过的最大的冰和火哪个先打收益高,最后把没法打反应的直接加到答案里就好了。
#include<bits/stdc++.h>
#define int long long
#define N 1000100
using namespace std;
int n,m,k,len,a[N],b[N],ans;
inline int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){f=ch!='-';ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return f?x:-x;}
signed main()
{
// freopen("genshin5.in","r",stdin);
n=read(),m=read(),k=read();
for(int i=1;i<=n;i++)a[i]=read();
for(int i=1;i<=m;i++)b[i]=read();
sort(a+1,a+n+1);
sort(b+1,b+m+1);
len=min(n,m);
int l1=1,r1=n,l2=1,r2=m;
// for(int i=1;i<=n;i++)cout<<a[i]<<" ";cout<<endl;
// for(int i=1;i<=m;i++)cout<<b[i]<<" ";cout<<endl;
for(int i=1;i<=len;i++)
{
int cao1=a[r1]*2+b[r2];
int cao2=a[r1]+b[r2]+k;
if(cao1>=cao2)ans+=cao1,r1--,r2--;
else ans+=cao2,r1--,r2--;
// cout<<ans<<" ";
}
for(int i=l1;i<=r1;i++)ans+=a[i];
for(int i=l2;i<=r2;i++)ans+=b[i];
// cout<<endl;
cout<<ans<<endl;
return 0;
}
T4#
考试的时候没有思路,先咕掉。
作者: 北烛青澜
出处:https://www.cnblogs.com/Multitree/articles/17343723.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!