Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, so Fuutaro always plays a kind of card game about generals with her. In this game, the players pick up cards with generals, but some generals have contradictions and cannot be in the same side. Every general has a certain value of attack power (can be exactly divided by 100100 ), and the player with higher sum of values will win. In this game all the cards should be picked up.

This day Miku wants to play this game again. However, Fuutaro is busy preparing an exam, so he decides to secretly control the game and decide each card's owner. He wants Miku to win this game so he won't always be bothered, and the difference between their value should be as small as possible. To make Miku happy, if they have the same sum of values, Miku will win. He must get a plan immediately and calculate it to meet the above requirements, how much attack value will Miku have?

As we all know, when Miku shows her loveliness, Fuutaro's IQ will become 00 . So please help him figure out the answer right now!

Input

Each test file contains several test cases. In each test file:

The first line contains a single integer T(1 \le T \le 10)T(1≤T≤10) which is the number of test cases.

For each test case, the first line contains two integers: the number of generals N(2 \le N \le 200)N(2≤N≤200) and thenumber of pairs of generals that have contradictions⁡ M(0 \le M \le 200)M(0≤M≤200).

The second line contains NN integers, and the ii-th integer is c_ici​, which is the attack power value of the ii-th general (0 \le c_i \le 5\times 10^4)(0≤ci​≤5×104).

The following MM lines describe the contradictions among generals. Each line contains two integers AA and BB , which means general AA and BB cannot be on the same side (1 \le A , B \le N)(1≤A,B≤N).

The input data guarantees that the solution exists.

Output

For each test case, you should print one line with your answer.

Hint

In sample test case, Miku will get general 22 and 33 .

样例输入复制

1
4 2
1400 700 2100 900
1 3
3 4

样例输出复制

2800

题意:给你n个数,让你分成两堆,堆与堆之间的和的差值最小,中间值与值之间可能存在矛盾,不能分在同一组,问你分配后最大的那一组的值是多少
思路:首先我们知道很多矛盾对,但是有可能一个人与多个人都有矛盾,所以为了避免分组的时候发生矛盾,我们很容易就想到二分图的黑白染色,这样我们首先就可以
解决矛盾问题,然后我们要每个联通块,我们首先可以求所有的和2x,那么x肯定是最优情况,我们又再每个连通块里面选最小的值,和就是y,(一个数为连通块时,另一个就是0,设计巧妙的地方),
然后我们要使y更接近x,所以我们就求x-y的容量,在每个连通块的差值里面选多少交换来求最大,然后这里就相当于转换为一个01背包问题
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll n,m;
ll a[maxn],b[maxn];
vector<int> mp[maxn];
ll s,dp[maxn];
int vis[maxn];
void dfs(int x,int num){
vis[x]=s+num;
for(int i=;i<mp[x].size();i++){
if(vis[mp[x][i]]==){
if(num==){
dfs(mp[x][i],);
}
else{
dfs(mp[x][i],);
}
}
}
}
int main(){
int t;
scanf("%d",&t);
while(t--){
for(int i=;i<maxn;i++) mp[i].clear();
scanf("%lld%lld",&n,&m);
for(int i=;i<=n;i++){
scanf("%lld",&a[i]);
a[i]/=;
}
int x,y;
for(int i=;i<m;i++){
scanf("%d%d",&x,&y);
mp[x].push_back(y);
mp[y].push_back(x);
}
s=;
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++){
if(vis[i]==){
dfs(i,);
s+=;
}
}
s--;
ll sum=,num=;
memset(b,,sizeof(b));
for(int i=;i<=n;i++){
b[vis[i]]+=a[i];
sum+=a[i];
}
int q=; for(int i=;i<=s;i+=){
num+=min(b[i],b[i+]);
b[q++]=abs(b[i]-b[i+]);
}
ll z=sum/+sum%;
z-=num;
memset(dp,,sizeof(dp));
for(int i=;i<q;i++){
for(int j=z;j>=b[i];j--){
dp[j]=max(dp[j],dp[j-b[i]]+b[i]);
}
}
ll z1=num;
if(dp[z] != -) z1+=dp[z];
ll z2=sum-z1;
printf("%lld\n",max(z1,z2)*);
}
}
/*
1
4 2
1400 700 2100 900
1 3
3 4
*/

2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)的更多相关文章

  1. hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...

  2. hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...

  3. hduoj 4715 Difference Between Primes 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4715 Difference Between Primes Time Limit: 2000/1000 MS (J ...

  4. hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

  5. hduoj 4706 Herding 2013 ACM/ICPC Asia Regional Online —— Warmup

    hduoj 4706 Children's Day 2013 ACM/ICPC Asia Regional Online —— Warmup Herding Time Limit: 2000/1000 ...

  6. hduoj 4707 Pet 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4707 Pet Time Limit: 4000/2000 MS (Java/Others)    Memory ...

  7. hduoj 4706 Children&#39;s Day 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4706 Children's Day Time Limit: 2000/1000 MS (Java/Others) ...

  8. 2016 ACM/ICPC Asia Regional Shenyang Online 1003/HDU 5894 数学/组合数/逆元

    hannnnah_j’s Biological Test Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K ...

  9. 2016 ACM/ICPC Asia Regional Qingdao Online 1001/HDU5878 打表二分

    I Count Two Three Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

随机推荐

  1. noi2019感想

    不知道怎么想的,我现在已经没有心情写一篇完整的游记了. 发挥的是真的太差,Day1该切的T2没有切掉,想的时候漏了一个性质,便由100->45. Day1的时间全花在了T3上,结果想歪了,最后只 ...

  2. bzoj 2013

    http://www.lydsy.com/JudgeOnline/problem.php?id=2013 最初看这个题的时候,以为神题不可做,然后去找yzjc..然后做法过于简单了(' '       ...

  3. VIM的一些使用积累

    替换: :s/cst/dst/gc 黏贴后格式不对齐: gg=G 全选并黏贴 gg :"+yG

  4. 2019 牛客暑期多校 B generator 1 (矩阵快速幂+倍增)

    题目:https://ac.nowcoder.com/acm/contest/885/B 题意:给你x0,x1,让你求出xn,递推式时xn=a*xn-1+b*xn-2 思路:这个n特别大,我自己没有摸 ...

  5. webpack配置教程

    1.npm脚本运行webpack与命令行输入webpack的区别  : https://segmentfault.com/a/1190000011052193   npm 模块的 安装 和 卸载  : ...

  6. VIEW当中自定义属性的使用

    主要有三种方法可以实现自定义属性. 第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 [html] vie ...

  7. 55、saleforce 学习笔记二

    String goodsName = 'abcd1123汉字显示';//测试文本 System.debug('简化后的字符串名称为:'+goodsName.abbreviate(5)); //返回简化 ...

  8. 在Linux终端命令行下播放音乐的命令

    现在的 Linux 桌面已经发展的很好了,在桌面下播放音乐操作起来也很简单.那么我们还记得在桌面不是那么好的时候我们是怎么播放音乐的么?哎,我是想不起来了,实在是太难了. 不过现在我们可以先安装一个小 ...

  9. 力扣算法题—143ReorderList

    Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You may not mod ...

  10. 爬虫(五)—— selenium模块启动浏览器自动化测试

    目录 selenium模块 一.selenium介绍 二.环境搭建 三.使用selenium模块 1.使用chrome并设置为无GUI模式 2.使用chrome有GUI模式 3.查找元素 4.获取标签 ...