[UVa 1326]Jurassic Remains】的更多相关文章

题意:给定n个只有大写字母组成的字符串,选取尽可能多的字符串,使得这些字符串中每个字母的个数都是偶数.n<=24 思路:直接枚举每个字符串的选或不选,复杂度是O(2^n).其实还有更简便的方法. 对于每个字母,其实具体出现了多少次并不重要,重要的是奇数次还是偶数次,我们用0对应奇数次,1对应偶数次.对于每个字符串,我们就可以计算出对应的二进制数,方法如下.如果A出现奇数次,那么二进制数第一个位置为1,偶数次为0:如果B出现奇数次,那么二进制数第二个位置为1,偶数次为0……以此类推,每个位置都有一…
题解 在一个字符串中,每个字符出现的次数本身是无关紧要的,重要的只是这些次数的奇偶性,因此想到用一个二进制的位表示一个字母($1$表示出现奇数次,$0$表示出现偶数次).比如样例的$6$个数,写成二进制后如图所示. 此时,问题转化为求尽量多的数,使得它们的$xor$值为$0$. 最容易想到的方法是直接穷举,时间复杂度为$O(2^n)$,有些偏大.注意到$xor$值为$0$的两个整数必须完全相等,我们可以把字符串分成两个部分:首先计算前$n \over 2$个字符串所能得到的所有$xor$值,并将…
训练指南p.59 #include <cstdio> #include <cstring> #include <cstdlib> #include <map> using namespace std; ; int N; int A[MAXN]; ]; map<int , int> table; int bitcount( int x ) { ; while ( x ) { ) ++res; x >>= ; } return res;…
Jurassic Remains Time Limit: 18000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Submit]   [Go Back]   [Status] Description   Paleontologists in Siberia have recently found a number of fragments of Jurassic period dinosaur skeleton. The p…
Jurassic Remains Paleontologists in Siberia have recently found a number of fragments of Jurassic period dinosaur skeleton. The paleontologists have decided to forward them to the paleontology museum. Unfortunately, the dinosaur was so huge, that the…
例题25  侏罗纪(Jurassic Remains, NEERC 2003, LA 2965) 给定n个大写字母组成的字符串.选择尽量多的串,使得每个大写字母都能出现偶数次. [输入格式] 输入包含多组数据.每组数据的第一行为正整数n(1≤n≤24),以下n行每行包含一个大写字母组成的字符串. [输出格式] 对于每组数据,第一行输出整数k,即字符串个数的最大值.第二行按照从小到大的顺序输出选中的k个字符串的编号(字符串按照输入顺序编号为1~n). [样例输入] 6 ABD EG GE ABE…
Jurassic Remains https://vjudge.net/problem/UVALive-2965 Paleontologists in Siberia have recently found a number of fragments of Jurassic period dinosaur skeleton. The paleontologists have decided to forward them to the paleontology museum. Unfortuna…
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=966 题意 n个大写字母串(n <= 24),问最多取多少个,使得所有字符出现的次数都是偶数. 思路 如刘书 1. 由于最多出现26个字母,而且字母在字符串中出现的次数本身不重要,只要记录奇偶性,所以可以将这些字符串转化为01串便于存储. 2. 问题转化为最多取多少…
Problem F: Polynomial Remains Given the polynomial a(x) = an xn + ... + a1 x + a0, compute the remainder r(x) when a(x) is divided by xk+1. The input consists of a number of cases. The first line of each case specifies the two integers n and k (0 ≤ n…
这是我做的第一道状态压缩的题目,而且我自己居然看懂了,理解得还算透彻. 题意:给出若干个大写字母组成的字符串,然后选取尽量多的字符串使得这些字母出现偶数次. 最朴素的想法,穷举法:每个字符串只有选和不选两种情况,那么穷举的时间复杂度是O(2n) 优化:将这n个字符串分成两半,先后枚举前n1个字符串所有可能的情况,计算xor值并保存在table中 再枚举后半部分的xor值并在table中查找(因为如果两者的异或值相同,则进行异或运算后的值为0),如果找到,将ans更新为bitcount较大的那种方…