Codeforces Round #662(Div.2) 문제 해결

3209 단어 codeforces
Codeforces Round #662(Div.2) 문제 해결
  • A. Rainbow Dash, Fluttershy and Chess Coloring
  • 문제를 읽으면 제목의 뜻을 이해하기 어렵지만 문제를 몇 가지 예를 더 읽은 후에 답이 사실ans=n/2+1이라는 것을 발견할 수 있다.
  • #include
    using namespace std;
    
    typedef long long ll;
    typedef long double ld;
    int t,n;
    
    
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);cout.tie(0);
        cin>>t;
        while(t--){
            cin>>n;
            int ans;
            if(n&1){
                ans=n/2+1;
            } else {
                ans=n/2+1;
            }
            cout<
  • B. Applejack and Storages
  • 개수를 집계하고 2-4개의, 4-6개의, 6-8개의, 8개 이상의 것을 기록하면 된다
  • #include
    using namespace std;
    
    typedef long long ll;
    typedef long double ld;
    int t, n;
    const int N = 1e5 + 10;
    int a[N];
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        //cin >> t;
        //while (t--) {
            cin >> n;
            int n2 = 0, n4 = 0, n6=0,n8=0;
            memset(a, 0, sizeof(a));
            for (int i = 0; i < n; ++i) {
                int tmp;
                cin >> tmp;
                a[tmp]++;
                if (a[tmp] == 2) n2++;
                if (a[tmp] == 4) n2--, n4++;
                if(a[tmp]==6) n4--,n6++;
                if(a[tmp]==8) n6--,n8++;
            }
            int q;
            cin >> q;
            //cout<> op >> num;
                if (op == '+') {
                    a[num]++;
                    if (a[num] == 2) n2++;
                    if (a[num] == 4) n4++, n2--;
                    if(a[num]==6) n4--,n6++;
                    if(a[num]==8) n6--,n8++;
                }
                else {
                    a[num]--;
                    if(a[num]==7) n8--,n6++;
                    if(a[num]==5) n6--,n4++;
                    if (a[num] == 3) n4--, n2++;
                    if (a[num] == 1) n2--;
                }
                if(n8>=1){
                    cout<=1){
                    if(n6==1){
                        if(n4>=1 ||n2>=1){
                            cout<=1){
                        if(n4==1){
                            if(n2>=2){
                                cout<
  • C. Pinkie Pie Eats Patty-cakes
  • 다음 개수를 기록하고 가장 많은 개수를 찾은 다음에 가장 많은 개수를 배열하고 가장 큰 최소 거리를 계산하면 된다.
    #include
    using namespace std;
    
    typedef long long ll;
    typedef long double ld;
    
    const int N=1e5+10;
    int t,n;
    int a[N];
    struct node{
        int id,num;
    }p[N];
    
    bool cmp(node a,node b)
    {
        return a.num>b.num;
    }
    
    bool check(int x,int mn,int n1) //n1 mam
    {
        if(x*(n1-1)+mn*(n1)<=n) return 1;
        else return 0;
    }
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        cin>>t;
        while(t--){
            cin>>n;
            memset(a,0,sizeof(int)*(n+1));
            int mam=0,mnum=0;
            for(int i=1;i<=n;++i){
                int tmp;
                cin>>tmp;
                a[tmp]++;
                mam=max(mam,a[tmp]);
            }
            for(int i=0;i<=n;++i){
                if(a[i]==mam) mnum++;
            }
            int ans=(n-mnum*mam)/(mam-1)+mnum-1;
            cout<

    DEF 내일 일어나서 고쳐주세요.
  • 좋은 웹페이지 즐겨찾기