CF1208(DIV1 + DIV2)問題に対するトータルソリューション

私は、突然死のフィールドを果たした....

しかし、突然死は行っていない、それは自己閉鎖はある.....

自閉症は次のとおりです。

........ L_Y_TがちょうどA、Bが半分を演奏し終えました

KR:あなたの質問Cは事をしますか?

L_Y_T:ああ見ていません

KR:Dへのタイトルカットwucstdio .....
___

A

あなたはこの事は、その問題SB 3のサイクルでされていることがわかります何を慎重に検討します

#include <bits/stdc++.h>
#define int long long
using namespace std ;
int T ;
signed main () {
    cin >> T ;
    while(T--) {
        int n , a , b ;
        cin >> a >> b >> n ;
        int c = n%3 ;
//      cout << c <<endl ;
        if(c == 2) {
            cout << (a^b) << endl ;
        }else if(c == 0) {
            cout << a <<endl ;
        }else {
            cout << b << endl ;
        }
    }
    return 0 ;
} 


B

離散見て、バレル預金と、その後、半分

問題の解決策のアイデア:サブセクションを削除した後、プレフィックスとサフィックスは変更されないまま、0の可能性の長たちは、修正プログラムは、我々は要素を繰り返すことなく得ることができる最大値を見つけるために、接頭辞と接尾辞のいずれかの重複要素が含まれていませんしましょう。私たちは、要素を追跡するために設定されたマップを/使用することができます。

#include<bits/stdc++.h>
#define int long long
#define maxn 2010 
 
using namespace std ;
 
int n , num[maxn] ;
struct Node{
    int lop , data ;
}LS[maxn] ;
bool cmp(Node x,Node y){
    return x.data < y.data;
}
int Tong[maxn][maxn] ;
bool check(int Lenth) {
    int flag = 1 ;
    for (int l = 1 ; l + Lenth - 1 <= n ; l ++) {
        int r = l + Lenth - 1 ;
        bool F = 1 ;
        for(int j = 1 ; j <= n ; j ++) {
            if(Tong[n][j] - Tong[r][j] + Tong[l-1][j] > 1) { F = 0 ; break; }
        }
        if(F) return true ;
    }
    return false ;
}
signed main() {
    cin >> n ;
    for(int i = 1 ; i <= n ; i ++) { cin >> LS[i].data; LS[i].lop=i; }
    sort(LS+1,LS+1+n,cmp);
    int idx = 0 ;
    LS[0].data = -1 ;
    for(int i = 1 ; i <= n ; i ++){
        if(LS[i].data != LS[i-1].data)
            num[LS[i].lop] = ++idx ;
        else
            num[LS[i].lop] = idx ;
    }
    for(int i = 1  ; i <= n ;  i ++) {
        for(int j = 1 ; j <= n ; j ++)
            Tong[i][j] = Tong[i-1][j];
        Tong[i][num[i]]++ ;
    }
    int l = 0 , r = n ;
    while(l <= r) {
        int mid = (l+r) / 2 ;
        if(check(mid))
            r = mid - 1 ;
        else
            l = mid +  1 ;
    }
    cout<< l <<endl ;
    return 0;
}


おすすめ

転載: www.cnblogs.com/lyt020321/p/11410690.html