Miku and Generals

Describe

“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 \(100\) ), 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 \(0\) . 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)\)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)\)and thenumber of pairs of generals that have contradictions⁡ \(M(0 \le M \le 200)\).

The second line contains \(N\) integers, and the iii-th integer is \(c_i\), which is the attack power value of the iii-th general \((0 \le c_i \le 5\times 10^4)\).

The following \(M\) lines describe the contradictions among generals. Each line contains two integers AAA and BBB , which means general AAA and BBB cannot be on the same side \((1 \le A , B \le 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 2 and 3 .

样例输入

1

4 2

1400 700 2100 900

1 3

3 4

样例输出

2800

题意

给你n个数,把他们分成两组使得差值最小,求较大那组权值和。有些数不能在一起,保证有解。

题解

先二分图染色,也可以并查集(我考场用并查集写的,结果WA到结束,所以对并查集产生了阴影qwq)。

然后就是一个比较裸的可行性背包,背包容量为sum/2。

如果不会背包,可以先做这道相似的背包题:https://www.luogu.org/problemnew/show/P1282

(我一开始统计方案数,一直WA,原来是方案数报爆int 了,真是伤心,还是fwl大佬看出来的)

代码

#include<bits/stdc++.h>
using namespace std;
#define N 205
#define M 205
#define V 50050
int n,m,a[N],f[N],val[N][3],bh[N],dp[2][V];
int tot,last[N];
struct Edge{int from,to,s;}edges[M<<1];
template<typename T> void read(T &x)
{
int k=0; char c=getchar();
x=0;
while(!isdigit(c)&&c!=EOF)k^=c=='-',c=getchar();
if (c==EOF)exit(0);
while(isdigit(c))x=x*10+c-'0',c=getchar();
x=k?-x:x;
}
void AddEdge(int x,int y)
{
edges[++tot]=Edge{x,y,last[x]};
last[x]=tot;
}
void dfs(int x,int id)
{
f[x]=1;
bh[x]=id;
for(int i=last[x];i;i=edges[i].s)
{
Edge &e=edges[i];
if (!f[e.to])dfs(e.to,-id);
}
}
void work()
{
memset(f,0,sizeof(f));
memset(val,0,sizeof(val));
memset(dp,0,sizeof(dp));
memset(last,0,sizeof(last));//
tot=0;
int sum=0,num=0;
read(n); read(m);
for(int i=1;i<=n;i++)read(a[i]),a[i]/=100,sum+=a[i];
for(int i=1;i<=m;i++)
{
int x,y;
read(x); read(y);
AddEdge(x,y);
AddEdge(y,x);
}
for(int i=1;i<=n;i++)if (!f[i])dfs(i,++num);
for(int i=1;i<=n;i++)val[abs(bh[i])][bh[i]/abs(bh[i])+1]+=a[i];
int selfsum=sum/2,k=0;
dp[k][0]=1;
for(int i=1;i<=num;i++)
{
k^=1;
for(int j=selfsum;j>=0;j--)
{
if (j-val[i][0]>=0&&dp[1-k][j-val[i][0]]>0) dp[k][j]=1;
else
if (j-val[i][2]>=0&&dp[1-k][j-val[i][2]]>0) dp[k][j]=1;
else dp[k][j]=0;
if (i==num&&dp[k][j]>0){printf("%d\n",max(j,(sum-j))*100);return;}
}
} }
int main(){
#ifndef ONLINE_JUDGE
freopen("aa.in","r",stdin);
#endif
int q;read(q); while(q--)work();}

西安区域赛 D.Miku and Generals 二分图+背包的更多相关文章

  1. 2017西安区域赛A / UVALive - 8512 线段树维护线性基合并

    题意:给定\(a[1...n]\),\(Q\)次询问求\(A[L...R]\)的异或组合再或上\(K\)的最大值 本题是2017的西安区域赛A题,了解线性基之后你会发现这根本就是套路题.. 只要用线段 ...

  2. ACM-ICPC 2019 西安邀请赛 D.Miku and Generals(二分图+可行性背包)

    “Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...

  3. 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)

    Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...

  4. UVALive 8519 Arrangement for Contests 2017西安区域赛H 贪心+线段树优化

    题意 等价于给一个数列,每次对一个长度为$K$的连续区间减一 为最多操作多少次 题解: 看样例猜的贪心,10分钟敲了个线段树就交了... 从1开始,找$[i,i+K]$区间的最小值,然后区间减去最小值 ...

  5. UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset

    UVALive 8513 有2种人,每个人有自己的权值$A_i$ $B_i$ 当$A_i + B_i >=K$时 两个人可以配对 问最多多少人可以配对 解法 : 把$/{ A_i /}$ 排序 ...

  6. 2014年西安区域赛的几道水题(A. F. K)

    A . 问一组数能否全部被3整除 K. S1 = A, S2 = B, Si = |Si-1  -  Si-2|; 一直循环问, 出现了多少不同的数: 多模拟几组数, 可以发现和辗转相除法有很大关系 ...

  7. 14西安区域赛C - The Problem Needs 3D Arrays

    最大密度子图裸题,详情请见胡博涛论文: https://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html 不加当前弧优化t到死= = //#prag ...

  8. 2017 ICPC西安区域赛 A - XOR (线段树并线性基)

    链接:https://nanti.jisuanke.com/t/A1607 题面:   Consider an array AA with n elements . Each of its eleme ...

  9. 2019 ICPC 上海区域赛总结

    2019上海区域赛现场赛总结 补题情况(以下通过率为牛客提交): 题号 标题 已通过代码 通过率 我的状态 A Mr. Panda and Dominoes 点击查看 5/29 未通过 B Prefi ...

随机推荐

  1. JAVA RPC 生产级高可用RPC框架使用分享

    先放出链接,喜欢的给个star:https://gitee.com/a1234567891/koalas-rpc 一:项目介绍 koalas-RPC 个人作品,提供大家交流学习,有意见请私信,欢迎拍砖 ...

  2. 2016"百度之星" - 初赛(Astar Round2A)1001 All X(HDU5690)——找循环节|快速幂

    一个由m个数字x组成的新数字,问其能否mod k等于c. 先提供第一种思路,找循环节.因为每次多一位数都是进行(t*10+x)mod k(这里是同余模的体现),因为x,k都确定,只要t再一样得到的答案 ...

  3. static关键字的用法小结

    static:是一个修饰符,用于修饰成员(成员变量,成员函数). 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用,写法:类名.静态成员 static特点: 1.随着 ...

  4. CF1195B

    CF1195B 题意: 有一个盒子,每次可以做两个操作: 1.每次吃掉一块蛋糕 2.每次放入比上一次放入数多1的蛋糕 当盒子为空时,只能执行第 $ 2 $ 个操作.第 $ 1 $ 次操作永远是放入一个 ...

  5. js-常见算法操作

    字符串操作 判断回文字符串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function palindrome(str){  // \W匹配任何非单词字符.等价于“[^A-Za- ...

  6. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_3.RabbitMQ研究-工作原理

    Producer生产者 Consumer:消费者 组成部分说明如下: Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue. Exchange:消息队列交换机,按一定的规则 ...

  7. thinkphp5 更改入口文件在主目录

    默认thinkPHP入口文件在public/index.php,而在虚拟主机部署时,不能设置访问路径,因此需要将入口文件放置在主目录上. 一.主目录下新建index.php 复制以下内容 // 定义应 ...

  8. [Scikit-learn] Dynamic Bayesian Network - Conditional Random Field

    李航,第十一章,条件随机场 参考:[PGM] Markov Networks 携代码:用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪[推荐!] CRF:htt ...

  9. [C++]Yellow Cards - GYM - 102348A(Practice *) - CodeForces

    1 Problem Description Problem The final match of the Berland Football Cup has been held recently. Th ...

  10. vs 扩展和更新下载的插件在什么位置呢,看看吧,哈哈

    C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\10.0\Extensions,注意哈,这个AppData是隐藏的哟,要显示才能 ...