概述
牛客练习赛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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复