zoukankan      html  css  js  c++  java
  • Codeforces Round #682 (Div. 2)部分题解

    Problem A

    就输出n个1个好了

    Probem B

    就看有没有相同的,因为从二进制的角度看的话,你要其他的加起来和这个相等,必须要有两个相等。

    Problem C

    乱搞样例你就会发现,和奇偶性有关,你维护奇偶性就好了。

    Problem D

    题意是给你一个序列,然后问你能不能通过三次异或三个项的方式来达到整个数列都一致的效果。那么我们先考虑朴素的只有三个值的情况,我们发现(aoplus aoplus b)的情况下,三个数可以变成一致,那么其核心思想就是凑出两个项相等,那么我们扩展一下,在三个数都不同的情况下,我们使用凑数的方法选择三组三个数来异或,就可以达到这个效果,那么我们发现奇数情况下只需要使用n-2次的凑配就可以达到效果,偶数的情况下看全部的异或和是否为0,不是的话就无解。

          #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+10;
    const int inf=0x3f3f3f3f;
    typedef pair<int,int> PII;
    void check_min (int &a,int b) {a=min (a,b);}
    void check_max (int &a,int b) {a=max (a,b);}
    int a[maxn];
    
    int main () {
      int t=1;
      // scanf ("%d",&t);
      while (t--) {
        int n,sum=0; scanf ("%d",&n);
        for (int i=1;i<=n;i++) {
          scanf ("%d",&a[i]);
          sum^=a[i];
        }
        if (n%2==0) {
          if (sum) {
            printf ("NO
    ");
            return 0;
          }
          n--;
        }
        printf ("YES
    %d
    ",n-2);
        for (int i=1;i<=n-2;i+=2) printf ("%d %d %d
    ",i,i+1,i+2);
        for (int i=1;i<=n-4;i+=2) printf ("%d %d %d
    ",i,i+1,n);
      }
      return 0;
    }
    
  • 相关阅读:
    ubuntu配置jdk(收藏)
    ubuntu学习笔记-tar 解压缩命令详解(转)
    URL编码以及GET和POST提交乱码解决方案 (转)
    maven模块开发(转)
    Spring定时任务配置
    java调用webservice
    struts2 JSON 插件的使用
    Java 基础知识点滴(1)
    vscode语法报错
    无法加载文件 .ps1,因为在此系统中禁止执行脚本
  • 原文地址:https://www.cnblogs.com/hhlya/p/13986178.html
Copyright © 2011-2022 走看看