読者です 読者をやめる 読者になる 読者になる

chigichan24に人権はあるだろうか,いやない

競技プログラミングやってます。

テスト1日目

古典がコッテーン

PCK前なのでテスト勉強放棄してICT Summer Contest 2014 Day1(Hard)にでてた.

結果は古典並にひどい...

まさにコッテーン

1.文字列をゴニョる.

  • PCがファイルを保存できない例の謎バグに包まれたが自分のコードが合ってると確信して提出->WA
  • PC再起動していろいろして再提出->WA(部分点)
  • 入力に空白あるとかヤバいな->AC

2.MOD取るやつ

  • 制約でビビって多倍長+2分探索的なことを考えてたけど、普通にunsigned long longでいけるじゃん

3.互いに素かどうか

  • __gcd使って解く.long longにし忘れて無駄なWAが生えた.

4.幾何(易しい)

  • 入力が整数という良心.

5.木魚

  • 秒で管理してごにょごにょ.

6.つらぽよ

  • 速攻で累積和とってやるだけとわかったのに、差がマイナスになるの忘れていて、ずっと悩んでいた.
  • +MODしてMODをとったら普通にACして泣きたくなった.
  • 予選ではこういうことしたくないなー.

まとめ

  • テスト期間中にやるとなにもかも中途半端になるのでよくない.
  • とりあえず金まではテストに集中してそれが終わったら土曜日まで一気にPCKモードにしよう.
  • 7はしゃくとり的な感じで,8はDPかなと思った(解いていないので早くときたい).

コード

1.

int main(){
    string str;
    getline(cin,str);
    int f = -1;
    rep(i,str.size()-7){
	string sub="";
	reps(j,i,i+8){
	    sub += str[j];
	}
	if(sub == "Anisakis"){
	    f=i;
	    break;
	}
    }
    if(f!=-1)f++;
    printf("%d\n",f);
    return 0;
}

2.

int main(){
    unsigned long long a,b;
    cin >> a >> b;
    printf("%lld\n",b%a==0?a:b%a);
    return 0;
}

3.

int main(){
    int n;
    scanf("%d",&n);
    ll score = 0;
    while(n--){
	int a,b;
	scanf("%d%d",&a,&b);
	if(b < a)swap(a,b);
	if(__gcd(a,b)==1)score+=(ll)b;
    }
    printf("%lld\n",score);
    return 0;
}

4.

class C{
    public:
    int x;
    int y;
    int r;
    C(){}
    C(double _x,double _y,double _r){
	y = _y;
	x = _x;
	r = _r;
    }
};
int main(){
    int n;
    scanf("%d",&n);
    vector < C > cir;
    rep(i,n){
        int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	cir.PB(C(a,b,c));
    }
    int m;
    scanf("%d",&m);
    rep(i,m){
	int a,b;
	int cnt = 0;
	scanf("%d%d",&a,&b);
	rep(j,n){
	    if((cir[j].x-a)*(cir[j].x-a)+(cir[j].y-b)*(cir[j].y-b) <= cir[j].r*cir[j].r){
		cnt++;
	    }
	}
        printf("%d\n",cnt);
    }
    return 0;
}

5.

int get_total_time(int h,int m,int s){
    return h*3600+m*60+s;
}
int main(){
    int n;
    scanf("%d",&n);
    vector < int > times;
    rep(i,n){
	char str[50];
	scanf("%s",str);
	int a,b,c;
	sscanf(str,"%d:%d:%d",&a,&b,&c);
	times.PB(get_total_time(a,b,c));
    }
    int m;
    int ans = 0;
    scanf("%d",&m);
    rep(i,m){
	int a,b,c;
	int d,e,f;	
	char str[50][50];
	cin >> str[0] >> str[1];
	sscanf(str[0],"%d:%d:%d",&a,&b,&c);
	sscanf(str[1],"%d:%d:%d",&d,&e,&f);
	int s = get_total_time(a,b,c);
	int g = get_total_time(d,e,f);
	int tmp = -1;
	rep(i,times.size()){
	    if(tmp == -1 && times[i] >= s){
		tmp = i;
	    }
	    if(tmp != -1 && times[i] == g){
		ans = ans + i-tmp+1;
		tmp = -1;
		break;
	    }
	    else if(tmp != -1 && times[i] > g){
		ans = ans + i-tmp;
		tmp = -1;
		break;
	    }
	}
	if(tmp != -1){
	    ans += (times.size()-tmp);
	}
    }
    printf("%d\n",ans);
    return 0;
}

6.

int fib[500010];
int main(){
    fib[1] = fib[2] = 1;
    reps(i,1,500002){
	fib[i+2] = fib[i]+fib[i+1];
	fib[i+2] %= MOD;
    }
    reps(i,1,500002){
	fib[i+1] += fib[i];
	fib[i+1] %= MOD;
    }
    int Q;
    scanf("%d",&Q);
    while(Q--){
	int l,r;
	scanf("%d %d",&l,&r);
	printf("%d\n",(fib[r]-fib[l-1]+MOD)%MOD);
    }
    return 0;
}