码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #666 (Div. 1)翻车祭

时间:2020-09-11 16:00:37      阅读:48      评论:0      收藏:0      [点我收藏+]

标签: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]);
}
View Code

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");
    }
}
View Code

然后我就凉了

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!