BestCoder Round #83 1001&&HDU-5680 zxa and set (水)
2016-05-16 14:29
387 查看
BC #83 1001(HDU-5680) zxa and set (水)
Problem Descriptionzxa has a set A={a1,a2,⋯,an}, which has n elements and obviously (2n−1) non-empty subsets.
For each subset B={b1,b2,⋯,bm}(1≤m≤n) of A, which has m elements, zxa defined its value as min(b1,b2,⋯,bm).
zxa is interested to know, assuming that Sodd represents the sum of the values of the non-empty sets, in which each set B is a subset of A and the number of elements in B is odd, and Seven represents the sum of the values of the non-empty sets, in which each set B is a subset of A and the number of elements in B is even, then what is the value of |Sodd−Seven|, can you help him?
Input
The first line contains an positive integer T, represents there are T test cases.
For each test case:
The first line contains an positive integer n, represents the number of the set A is n.
The second line contains n distinct positive integers, repersent the elements a1,a2,⋯,an.
There is a blank between each integer with no other extra space in one line.
1≤T≤100,1≤n≤30,1≤ai≤109
Output
For each test case, output in one line a non-negative integer, repersent the value of |Sodd−Seven|.
Sample Input
3
1
10
3
1 2 3
4
1 2 3 4
Sample Output
10
3
4
Hint
For the first sample, A={10}A=\{10\}, which contains one subset {10}\{10\} in which the number of elements is odd, and no subset in which the number of elements is even, therefore Sodd=10,Seven=0,|Sodd−Seven|=10S_{odd}=10,S_{even}=0,|S_{odd}-S_{even}|=10.
For the second sample, A={1,2,3}A=\{1,2,3\}, which contains four subsets {1},{2},{3},{1,2,3}\{1\},\{2\},\{3\},\{1,2,3\} in which the number of elements is odd, and three subsets {1,2},{2,3},{1,3}\{1,2\},\{2,3\},\{1,3\} in which the number of elements is even, therefore Sodd=1+2+3+1=7,Seven=1+2+1=4,|Sodd−Seven|=3S_{odd}=1+2+3+1=7,S_{even}=1+2+1=4,|S_{odd}-S_{even}|=3.
题意:找个数为奇数与个数为偶数的集合(子集中的 所有最小值) 之和 之差,其实根据推算俩式子一划,就是寻找原集合中最大值。
#include"iostream" #include"cstdio" using namespace std; int main(){ int t,n,m,j,i; long long a[20010],sum,x,y; scanf("%d",&t); while(t--){ scanf("%d %d",&n,&m); for(i=1; i<=n; i++){ scanf("%lld",&a[i]); } sum = 0; for(i=1; i<n; i++){ for(j=i+1; j<=n; j++) sum ^= (a[i]+a[j]); } while(m--){ scanf("%lld %lld",&x,&y); for(i=1; i<=n; i++){ if(i!=x){ sum ^=(a[i]+y),sum^=(a[i]+a[x]); } } printf("%lld\n",sum); a[x] = y; } } return 0; }
相关文章推荐
- springmvc + hibernate + mysql + maven 简单应用
- QT-Demo-Colck-01
- Bootstrap4一次重大更新 几乎涉及每行代码
- HTTP 消息结构
- mac升级到10.11后使用CocoaPod出现-bash: pod: command not found 解决办法
- C++第10/11周项目 继承与派生 【项目4- 教师兼干部类】(复习新版)
- WCF NetTcpBinding.ReaderQuotas.MaxDepth 引用异常故障排除
- 02 Struts2开发环境的搭建和第一个Struts2应用开发
- inline 内联函数的使用
- [算法][C]计算向量的角度
- 通讯录的实现(二)动态实现
- 夜半对话
- 线性表的操作 (2.2) C = A U B
- android应用换肤功能的实现
- RT3070 网卡移植
- ASP.NET的视图(Razor)循环产生html代码
- UI自动化
- JS图片延迟加载分析及简单的demo
- mysql安装出现 conflicts with mysql*的解决办法
- [HDOJ3974]Assign the task(建树胡搞)