https://vjudge.net/problem/CodeForces-768C

题意:n个数,k次操作,x。每次操作先排序,再让奇数位置上的数据a[i]:=a[i] XOR x;   k<1e5,x<1e5,a[i]<1e3.

题解:由于每个数据为1~1000,且每次操作先排序,所以可以用桶排序维护所有数据。然后模拟操作(我自己模拟的一直wa,换了另一种才ac)。

网上另外也有人k%=64 然后暴力ac了,还有找循环节的也ac 了。

坑:第一次看codeforce 的数据,结果output answer看反了,用错误数据调试。

  ^x的过程中可能产生0,所以每个循环i=0开始。

  i=maxn;while(--i)if(a[i]){cout<<i;break;}这句代码如果最大值是0不会输出。

  做了好久。。。

ac代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn = ;
int a[maxn],a1[maxn]; int main() { int n, k, x;
cin >> n >> k >> x;
int q;
for (int i = ; i <= n; i++)scanf("%d", &q), a[q]++; while (k--) {
bool odd = ;
memset(a1, , sizeof(a1));
/*for (int i = 1; i <= maxn; i++) if (a[i]) {
//if(a[i]==1)i
int t;
if (a[i] % 2) {
if (odd)
t= (a[i] + 1) / 2, a[i] = (a[i] - t), a1[i^x]+=t;
else t = a[i] / 2, a[i] = (a[i] - t), a1[i^x]+=t;
odd = !odd;
}
else {
a[i] = a[i] / 2; a1[i^x] += a[i];
}
}
for (int i = 1; i <= maxn; i++) a[i] += a1[i]; }*/
int sum = ;
for (int i = ; i <= maxn; i++) {
if (sum & ) {
a1[i] += (a[i] + ) >> ;
a1[i^x] += a[i] >> ;
}
else {
a1[i] += a[i] >> ;
a1[i^x] += (a[i] + ) >> ;
}
sum += a[i]; }
for (int i = ; i <= maxn; i++) a[i] = a1[i];
}
int i = maxn;
for (int i = maxn; i >= ; i--) if (a[i]) {
cout << i << ' ';
break;
}
for (int i = ; i <= maxn; i++) if(a[i]){
cout << i;
break;
}
cin >> n;
/* cout << endl;
for (int i = 1; i <= maxn; i++) if (a[i]) {
//while(a[i]--)cout << i<<' ';
cout << a[i] << '*' << i << ' ';
//break;
}
cin >> n;*/
}

CodeForces - 768C Jon Snow and his Favourite Number 桶排的更多相关文章

  1. codeforces 768c Jon Snow And His Favourite Number

    题意: 给出一个数列,和一种操作,以及两个数x和k. 这个操作有两个步骤: 首先把这个数列按照升序排序,然后把所有奇数位上的数字与x异或. 问执行k次操作之后,这个数列的最大值和最小值是多少. 思路: ...

  2. Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C - Jon Snow and his Favourite Number

    地址:http://codeforces.com/contest/768/problem/C 题目: C. Jon Snow and his Favourite Number time limit p ...

  3. Codeforces768C Jon Snow and his Favourite Number 2017-02-21 22:24 130人阅读 评论(0) 收藏

    C. Jon Snow and his Favourite Number time limit per test 4 seconds memory limit per test 256 megabyt ...

  4. 【codeforces 768C】Jon Snow and his Favourite Number

    [题目链接]:http://codeforces.com/contest/768/problem/C [题意] 给你n个数字; 让你每次把这n个数字排序; 然后对奇数位的数字进行异或操作,然后对新生成 ...

  5. Jon Snow and his Favourite Number CodeForces - 768C (技巧)

    链接 题意 给定数组, 每次操作先将数组排序, 再将奇数位全部异或x, 求k次操作后数组最大值与最小值 (1 ≤ n ≤ 105, 0 ≤ k ≤ 105, 0 ≤ x ≤ 103) 题解 直接暴力模 ...

  6. codeforces 768 C. Jon Snow and his Favourite Number(思维+暴力)

    题目链接:http://codeforces.com/contest/768/problem/C 题意:给出n个数,k个操作,和一个x,每次操作先排序然后对奇数位数进行xor x操作,最后问k次操作后 ...

  7. 【基数排序】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C. Jon Snow and his Favourite Number

    发现值域很小,而且怎么异或都不会超过1023……然后可以使用类似基数排序的思想,每次扫一遍就行了. 复杂度O(k*1024). #include<cstdio> #include<c ...

  8. C. Jon Snow and his Favourite Number DP + 注意数值大小

    http://codeforces.com/contest/768/problem/C 这题的数值大小只有1000,那么可以联想到,用数值做数组的下标,就是类似于计数排序那样子.. 这样就可以枚举k次 ...

  9. Codeforces I. Producing Snow(优先队列)

    题目描述: C. Producing Snow time limit per test 1 second memory limit per test 256 megabytes input stand ...

随机推荐

  1. 关于C#事件的理解

    一.一个不错的例子 class FileFFF { public delegate void FileWatchEventHandler(object sender,EventArgs args);/ ...

  2. VS2013 未找到與約束ContractName...

    windows 2008 r2 上面裝的VS2013, 在某一天系統更新之後,再次打開VS項目的時候就出現了上面那個問題 解決方法,打開控制面板,找到下面這個程序,右擊,修復即可

  3. c 网络字节序和本机字节序转换

    将多字节整数类型的数据,从主机的字节顺序转化为网络字节顺序 #include <netinet/in.h> uint32_t htonl(uint32_t hostlong);uint16 ...

  4. C语言编程规范—命名规则

    C是一门朴素的语言,你使用的命名也应该这样.与Modula-2和Pascal程序员不同,C程序员不使用诸如“ThisVariableIsATemporaryCounter”这样“聪明”的名字.C程序员 ...

  5. Cookie利用神器:CookieHacker

    转自evilcos的博客 看到那么多苦逼的跨站师在问Cookie利用工具,不忍心,还是把自己写的Chrome扩展开源出来吧,功能极简,仿造<我的渗透利器>里提到的Original Cook ...

  6. Linux命令之乐--iconv

    用法: 实际应用: 批量转换文件编码: [root@wls12c PCK]$ for tfile in `ls -l|awk '{print $9}'`;do echo "iconv -f ...

  7. 【PHP】 php 解析 base64图片上传

    base64 图片编码格式: 类似如下 data:image/JPG;base64,/9j/4S/+RXhpZgAATU0AKgAAAAgACwEPAAIAAAAG php 解析代码如下:  基于tp ...

  8. Qt编写密钥生成器+使用demo(开源)

    在很多商业软件中,需要提供一些可以试运行的版本,这样就需要配套密钥机制来控制,纵观大部分的试用版软件,基本上采用以下几种机制来控制.1:远程联网激活,每次启动都联网查看使用时间等,这种方法最完美,缺点 ...

  9. 【ORACLE 】 ORA-00031 标记要删去的会话(解决)

    在使用Oracle的过程中,会有使用了锁(for update)但又忘记释放锁的情况.这是就需要用到KILL语句了.(如果不知道KILL语句怎么用,可参考: http://www.cnblogs.co ...

  10. C# mongohelper的初始化及账户密码设置

    MongoClientSettings mongoSettings = new MongoClientSettings(); TimeSpan t = ); mongoSettings.Connect ...