1. 程式人生 > >Codeforces Round #532 (Div. 2)

Codeforces Round #532 (Div. 2)

A. Roman and Browser

此題主要考慮一下B的值只與K有關就行,因為要關掉c=b+ik的視窗,所以僅0<=b<k時關閉的視窗是有區別的,當b=0時就等同於b=k時關閉的視窗。

#include <iostream>

using namespace std;

int main (void)
{
    int n, k;

    cin>>n>>k;

    int a[n];

    for(int i = 0; i < n; i++)
        cin>>a[i];

    
int max = 0; for(int b = 0; b < k; b++){ int infor = 0; int social = 0; for(int i = 0; i < n; i++){ if((i-b)%k!=0){ if(a[i] == -1) social++; else infor++; } }
if(max<fabs(infor-social)) max = fabs(infor-social); } cout<<max<<endl; return 0; }

B. Build a Contest

B題主要考慮怎麼去統計所有難度都出現過一次,這裡我採用了計不同難度出現次數的方式,只要控制時間複雜度就沒什麼問題。

 

#include <iostream>
#include <math.h>
using namespace std;

int main (void) { int n,m; cin>>n>>m; int ques[m]; int sign[n+1] = {0}; int count = 0; for(int i = 0; i < m; i++) { cin>>ques[i]; } for(int i = 0; i < m; i++) { sign[ques[i]]++; if(sign[ques[i]]==1) { count++; } if(count == n) { count = 0; cout<<1; for(int k = 1; k <= n; k++){ sign[k]--; if(sign[k]!=0){ count++; } } } else { cout<<0; } } }