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;
    }
  • 相关阅读:
    用nodejs删除mongodb中ObjectId类型数据
    关于easyui模拟win2012桌面的一个例子系列
    div里常用的class命名
    XMLHttpRequest对象中readyState与status的几种常见状态
    我们经常注册用的页面是怎么实现的
    html与xhtml区别
    mysql重置密码
    服务器80端口映射到8080端口
    服务器端增加tomcat使用内存
    更新服务器ssh登录端口
  • 原文地址:https://www.cnblogs.com/dreagonm/p/9602507.html
Copyright © 2011-2022 走看看