Discommunication

日記帳

ABC137 B-C

All Submissions - AtCoder Beginner Contest 137

 本番はABの2完で100分くらい暇してました。
 ABCはC解けないと時間がクソ余るし心も解ける
 日々精進が大切である。まあ緑行ったらこんな競技やめるけど

  • B - One Clue
#include<stdio.h>
int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    int i;
    for(i=1;i<2*a;i++){
        printf("%d ",b-a+i);
    }
    return 0;
}

・雑感
 K,Xを受け取ったら、黒の可能性がある座標はX-K+1からX+K-1までです。
 その通りに書きました

  • C - Green Bin
#include <bits/stdc++.h>
using namespace std;

long long int kaijyou(int i){
    long long int answer = 0;
    while(i>0){
        answer += i;
        i--;
    }
    return answer;
}

int main(){
    int N;
    cin >> N;
    vector<string> s(N);
    for(int i=0;i<N;i++){
        cin >> s[i];
        sort(s[i].begin(),s[i].end());
    }
    sort(s.begin(),s.end());

    vector<int> k_count;
    int same;
    for(int i=0;i<N;i++){
        same = 1;
        if(i==N-1) k_count.push_back(1);

        for(int k=i+1;k<N;k++){
            if(s[i] == s[k]){
                same++;
                if(k == N-1){
                k_count.push_back(same);
                i = k;
                }
            }
            else if(s[i] != s[k]){
                k_count.push_back(same);
                i = k-1;
                break;
            }
        }
    }

    long long int answer = 0;
    for(int i=0;i<k_count.size();i++) if(k_count[i]!=1) answer += kaijyou(k_count[i]-1);

    cout << answer << endl;
    return 0;
}

・雑感
 B問題の答案を見ていただければお分かりでしょうが、俺はこの回までC言語で書いていて、それしか使えませんでした。
 この問題は俺がC++を覚えようと覚えた切っ掛けであり、真剣に競プロを学び始めた元凶でもあります。
 string型の有無はユーザーのモチベーションを大きく左右します。


 問題について。2回文字列をソートした後、文字が出てくる回数を数えてΣ(回数-1)を求めるだけ
 どうでもいいけど総和ってn(n+1)/2とかいう公式があったな。まあいいや