#584ラウンドCodeforces - ダーシャコード選手権 - エリミネーションラウンド(皆のためのオープン、定格、ディビジョン1 +ディビジョン2。。)

A

それは関係の倍数である場合はn桁、それはいくつかのグループに最低要件のセットであります

#include <iostream>
#include <cstdio>
#include <algorithm>
#define rep(i,a,n) for(int i=a;i<n;i++)
using namespace std;
const int N=105;
int a[N];
int ans;
int main(){
    int n;
    scanf("%d",&n);
    rep(i,0,n)scanf("%d",&a[i]);
    sort(a,a+n);
    rep(i,0,n){
        int cnt=1;
        rep(j,0,i)if(a[i]%a[j]==0)cnt=0;//如果能除就是一组,不能除就不是一组
        ans+=cnt;
    }
    printf("%d\n",ans);
}

B

Nは、ランプの所与の数の数を表し
、その後、ランプの初期条件を与え、光を表し、0、代表オフ
した後、変化を与え、B、B +、B + 2 *。戻る状態変化時に、時間を継続していきます

蓄積()関数は内部数値ライブラリにおけるサイクル和関数です

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <numeric>
#define rep(i,a,n) for(int i=a;i<n;i++)
using namespace std;
const int N=1005;
char s[N];
int a[N],b[N],f[N];
int main(){
    int n;
    scanf("%d",&n);
    scanf("%s",s);
    rep(i,0,n)f[i]=s[i]-'0';
    rep(i,0,n)scanf("%d%d",a+i,b+i);
    int ans=accumulate(f,f+n,0);//三个参数,头,尾地址,初始值,最后求和
    rep(i,0,100000){//默认执行100000s
        rep(j,0,n){//对每一个灯进行
            if(i>=b[j]&&(i-b[j])%a[j]==0)f[j]^=1;//改变状态,f[i]记录每个时刻灯的情况,如果需要改变,就取异或0变1,1变0
        }
            ans=max(ans,accumulate(f,f+n,0));
    }
    printf("%d\n",ans);

    return 0;
}

おすすめ

転載: www.cnblogs.com/Emcikem/p/11521511.html