zoukankan      html  css  js  c++  java
  • 题解——Codeforces Round #508 (Div. 2) T2 (构造)

    按照题意构造集合即可

    注意无解情况的判断

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <vector>
    #include <map>
    using namespace std;
    int n,sum;
    int main(){
      scanf("%d",&n);
      if(n==1){
        printf("No
    ");
        return 0;
      }
      sum=(n+1)*n/2;
    //  printf("%d
    ",sum);
      for(int i=2;i<=sum;i++){
          for(int j=1;j<=sqrt(i);j++){
            if(i%j==0){
            if(j!=i/j){
            if(j!=1&&sum!=i){
                if((sum-i)%j==0){
                  vector<int> ax,bx;
                  int cnta=0,cntb=0;
                  int now=n;
                  for(int k=i;k>0;){
                    if(k>=now){
                      k-=now;
                      cnta++;
                      ax.push_back(now);
                      now--;
                    }
                  else{
                    cntb++;
                    bx.push_back(now);
                    now--;
                    }
                  }
                  while(now){
                    bx.push_back(now);
                    now--;
                    cntb++;
                  }
                  printf("Yes
    ");
                  printf("%d ",cnta);
                  for(int i=0;i<ax.size();i++)
                    printf("%d ",ax[i]);
                  printf("
    ");
                  printf("%d ",cntb);
                  for(int i=0;i<bx.size();i++)
                    printf("%d ",bx[i]);
                  printf("
    ");
                  return 0;
                }
              }
            if(i/j!=1&&sum!=i){
              if((sum-i)%(i/j)==0){
                vector<int> ax,bx;
                int cnta=0,cntb=0;
                  int now=n;
                  for(int k=i;k>0;){
                    if(k>=now){
                      k-=now;
                      cnta++;
                      ax.push_back(now);
                      now--;
                    }
                  else{
                    cntb++;
                    bx.push_back(now);
                    now--;
                    }
                  }
                  while(now){
                    bx.push_back(now);
                    now--;
                    cntb++;
                  }
                  printf("Yes
    ");
                  printf("%d ",cnta);
                  for(int i=0;i<ax.size();i++)
                    printf("%d ",ax[i]);
                  printf("
    ");
                  printf("%d ",cntb);
                  for(int i=0;i<bx.size();i++)
                    printf("%d ",bx[i]);
                  printf("
    ");
                  return 0;
                }
              }
            }
          else{
            if(j!=1&&i!=sum)
              if((sum-i)%j==0){
                vector<int> ax,bx;
                int cnta=0,cntb=0;
                  int now=n;
                  for(int k=i;k>0;){
                    if(k>=now){
                      k-=now;
                      cnta++;
                      ax.push_back(now);
                      now--;
                    }
                  else{
                    cntb++;
                    bx.push_back(now);
                    now--;
                    }
                  }
                while(now){
                  bx.push_back(now);
                  now--;
                  cntb++;
                }
                printf("Yes
    ");
                printf("%d ",cnta);
                for(int i=0;i<ax.size();i++)
                  printf("%d ",ax[i]);
                printf("
    ");
                printf("%d ",cntb);
                for(int i=0;i<bx.size();i++)
                  printf("%d ",bx[i]);
                printf("
    ");
                return 0;
              }
            }
          }
        }
      }
      printf("No
    ");
      return 0;
    }
  • 相关阅读:
    [转]只有程序员才能看懂的幽默
    论安防集成管理平台规范标准建设的重要性和必要性
    视频集成技术演进与创新实践
    (转)jQuery中Ajax事件beforesend及各参数含义
    (转)如何打一手好Log
    marquee标签
    如何学习Git,如何使用Git
    学习vue
    python安装教程
    Jmeter压力测试(入门篇)
  • 原文地址:https://www.cnblogs.com/dreagonm/p/9602507.html
Copyright © 2011-2022 走看看