我是靠谱客的博主 辛勤花生,最近开发中收集的这篇文章主要介绍牛客练习赛90牛客练习赛90,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

牛客练习赛90

寒冬信使

分析:

  • 从后往前消去 1 1 1 ,记操作次数

  • 次数为奇数时,先手胜

    次数为偶数时,后手胜

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
long long a[N];
char s[N];
int len,tot;
void dfs()
{
while(s[len]=='0' && len>=1) len--;
if(len>=1)
{
s[len]^=1; s[len-1]^=1;
tot++;
}
}
signed main()
{
int n;
cin>>n;
while(n--)
{
tot=0;
cin>>s+1;
len=strlen(s+1);
while(len) dfs();
if(tot&1) cout<<"T"<<endl;
else cout<<"X"<<endl;
}
return 0;
}

盾与战锤

分析:

  • 假设取 m m m 个元素时,造成的伤害最大,可以发现 m m m 个元素为最大的 m m m

  • 然后再暴力遍历即可

  • 注意边界处理的小技巧

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2*1e6+5;
int a[N],sum[N];
int n;
signed main()
{
int s;
cin>>n>>s;
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
sort(a+1,a+1+n);
for(int i=n;i>=1;i--)
{
sum[n-i+1]=sum[n-i]+a[i];
}
for(int i=n+1;i<=2*n;i++) sum[i]=sum[i-1];
for(int i=1;i<=n;i++)
{
int ans=0;
for(int j=i;j<n+i;j+=i)
{
int d=sum[j]-sum[j-i]-s;
if(d>0) ans+=d;
else break;
}
cout<<ans<<endl;
}
}

最后

以上就是辛勤花生为你收集整理的牛客练习赛90牛客练习赛90的全部内容,希望文章能够帮你解决牛客练习赛90牛客练习赛90所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部