梦里觉得 or 的做法是贪心,但是醒来以后想想觉得假了,因为没法处理放在两边贡献一样的情况
另外两个操作符忘了怎么做的了
回忆了一遍题目大概长这样:
题目描述
事情是这样的,你现在有 n 个数对,你需要在每个数对中挑出一个数字放入序列 A,另一个则会被放入序列 B
现在比特先生将会在 and or 和 xor 中挑选一种位运算,然后分别计算出 A,B 中所有元素进行比特先生挑选的位运算的结果
你需要求出最终两个序列结果的和的最大值
输入格式
第一行一个整数 n,表示数对个数
随后 n 行,每行两个整数 xi,yi,描述了一个数对
最后一行为操作符,操作符为 and or 和 xor 中的一种,表示执行的位运算
输出格式
一个整数,表示和的最大值
样例 #1
样例输入 #1
2
1 2
2 1
and
样例输出 #1
3
样例 #2
样例输入 #2
2
1 2
2 1
or
样例输出 #2
6
样例 #3
样例输入 #3
2
1 2
2 1
xor
样例输出 #3
6
提示
样例解释
对于第一个样例,分成 {1,1},{2,2} 两组最优,最优答案为 1+2=3
对于后两个样例,分成 {1,2},{2,1} 两组最优,最优答案均为 3+3=6
数据范围约定
输入数据保证 xi,yi≤231−1
n 的范围因为没想到正解所以暂时没有确定