标签:gif 注意 col for main force span lap cin
这段时间有点忙,好久没打CF了
A
考虑到n与n-1互质,可以把数列分成两段操作[1,1][2,n],全部加成n的倍数,再操作[1,n]即可,注意特判n=1
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+7; int n; ll a[N]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%lld",&a[i]); if(n==1) { puts("1 1\n1"); puts("1 1\n1"); a[1]+=2; printf("1 1\n%lld",-a[1]); return 0; } puts("1 1"); ll x=n-a[1]%n; printf("%lld\n",x); a[1]+=x; printf("2 %d\n",n); for(int i=2;i<=n;i++) { x=(a[i]%n)*(n-1); a[i]+=x;printf("%lld ",x); } puts(""); printf("%d %d\n",1,n); for(int i=1;i<=n;i++)printf("%lld ",-a[i]); }
B
少考虑一种极端数据,导致我一直WA on test 4,一直杠B没去看C,从而导致我翻车。
打表观察发现正常情况下和为奇数先手胜,反之后手胜,但有一种极端情况:当最大的一堆*2>总石子数时,先手可以一直取那一堆从而获胜。
#include<bits/stdc++.h> using namespace std; const int N=2e5+7; int n,a[N],b[N]; int main() { int T;cin>>T; while(T--) { cin>>n; int mx=0,sum=0; for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i],mx=max(mx,a[i]); if(mx*2>sum||(sum&1))puts("T"); else puts("HL"); } }
然后我就凉了
rank=1143 rating-=88
Codeforces Round #666 (Div. 1)翻车祭
标签:gif 注意 col for main force span lap cin
原文地址:https://www.cnblogs.com/hfctf0210/p/13587805.html