//n件物品,m种关系,(有关系的2个不能在同一组)
//把所有物品分为2组,希望最后2组的差值尽可能小,输出较大者
/*
二分图涂色+可行性(01)背包
dp[i] =1表示 最后差值为i可行
建图后,对于每个连通分量记录差值,来求所有的可行
*/
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
#define N 250
#define M 102000
int a[N],head[N],sum;
int cnt,vis[N];
int dp[M],dp1[M];
int sum1=,sum2=;
void init(){
cnt = ;
for(int i =;i<N;i++) {
head[i] = -;
vis[i] =;//多组输入
}
}
struct Node{
int u,v,nex;
}e[N*];
void add(int u,int v)
{
e[cnt].u=u;e[cnt].v=v;
e[cnt].nex=head[u];head[u]=cnt++;
}
void dfs(int x,int rt){
vis[x] = ;
if(rt==)
sum1+=a[x];
else{
sum2+=a[x];
}
for(int i =head[x];i!=-;i=e[i].nex){
int v = e[i].v;
if(!vis[v])
dfs(v,rt^);//0^1=1,1^1=0
}
}
int main()
{
scanf("%d",&t);
while(t--)
{
init();
scanf("%d%d",&n,&m);
int x,y;
sum =;
for(int i =;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i]/;
a[i]/=;//题目说明都是100的倍数
}
for(int i =;i<m;i++) {
scanf("%d%d",&x,&y);
add(x,y);add(y,x);//无向图
} int num;
for(int i =;i<=sum;i++) dp[i] = ;
dp[] = ;//dp[0]一定先设为1,来引入第一个差值
for(int i =;i<=n;i++) {
if(!vis[i]){
sum1=,sum2=;
dfs(i,);
num = abs(sum1-sum2);
//printf("%d %d %d\n",sum1,sum2,num);
for(int j=sum;j>=;j--){
if(dp[j]){
//如 :0,j. 0 ,num 或者 j,0.0,num
if(abs(j+num)<=sum) dp1[abs(j+num)] =;
dp1[abs(j-num)] =;
}
}
for(int j =sum;j>=;j--){
dp[j] = dp1[j],dp1[j] = ;
}
}
}
//一定需要2个dp 数组,利用dp1一直更新到所有的物品都取完
for(int i =;i<=sum;i++) {
if(dp[i]){ printf("%d\n",(sum+i)/*);
break;
}
}
}
return ;
}

2019 西安邀请赛 D的更多相关文章

  1. 2019 西安邀请赛 M

    Problem Description There are n planets ∼n. Each planet is connected to other planets through some t ...

  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. 计蒜客 39272.Tree-树链剖分(点权)+带修改区间异或和 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest E.) 2019ICPC西安邀请赛现场赛重现赛

    Tree Ming and Hong are playing a simple game called nim game. They have nn piles of stones numbered  ...

  4. 2019南昌邀请赛网络预选赛 M. Subsequence

    传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...

  5. 计蒜客 39280.Travel-二分+最短路dijkstra-二分过程中保存结果,因为二分完最后的不一定是结果 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest M.) 2019ICPC西安邀请赛现场赛重现赛

    Travel There are nn planets in the MOT galaxy, and each planet has a unique number from 1 \sim n1∼n. ...

  6. 计蒜客 39279.Swap-打表找规律 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest L.) 2019ICPC西安邀请赛现场赛重现赛

    Swap There is a sequence of numbers of length nn, and each number in the sequence is different. Ther ...

  7. 计蒜客 39270.Angel's Journey-简单的计算几何 ((The 2019 ACM-ICPC China Shannxi Provincial Programming Contest C.) 2019ICPC西安邀请赛现场赛重现赛

    Angel's Journey “Miyane!” This day Hana asks Miyako for help again. Hana plays the part of angel on ...

  8. 计蒜客 39268.Tasks-签到 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest A.) 2019ICPC西安邀请赛现场赛重现赛

    Tasks It's too late now, but you still have too much work to do. There are nn tasks on your list. Th ...

  9. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest (西安邀请赛重现) J. And And And

    链接:https://nanti.jisuanke.com/t/39277 思路: 一开始看着很像树分治,就用树分治写了下,发现因为异或操作的特殊性,我们是可以优化树分治中的容斥操作的,不合理的情况只 ...

随机推荐

  1. hdu4027-Can you answer these queries? -(线段树+剪枝)

    题意:给n个数,m个操作,分两种操作,一种是将一段区间的每个数都开根号,另一种是查询区间和. 解题:显然对每个数开根号不能用lazy的区间更新.一个一个更新必然爆时间,对1开根号还是1,如果一段区间都 ...

  2. SuperSocket

    1.目前稳定版是 v1.6: 2.轻量级.可扩展.Socket应用程序框架: 3.你可以用来开发Socket服务端应用,不用关心如何使用Socket.如何维护Socket连接和Socket如何工作. ...

  3. hadoop spark合并小文件

      一.输入文件类型设置为 CombineTextInputFormat hadoop job.setInputFormatClass(CombineTextInputFormat.class) sp ...

  4. Wbbpack --3配置

    Wbbpack --3配置 什么是webpack webpack 是一个现代 JavaScript 应用程序的静态模块打包(modulebundler)当 webpack 处理应用程序时,它会递归地构 ...

  5. ent 基本使用六 Mixin

    ent 的Mixin 可以让我们服用已有的schema Mixin 接口说明 type Mixin interface { Fields() []ent.Field } 一个demo 代码 // -- ...

  6. 用于C#的极速序列化/反序列工具 MessagePack

    MessagePack 比MsgPack-Cli快10倍,并且优于其他C#序列化器.MessagePack for C#还内置了对LZ4压缩的支持 - 一种极快的压缩算法.对于性能追求很重要,特别是在 ...

  7. python3 安装 pillow报错

    前言 最近要使用pillow库, 来训练验证码模型, 但是死活都安装不上 环境 docker中安装, python3 尝试安装 pip install pillow easy_install Pill ...

  8. 8-ESP8266 SDK开发基础入门篇--编写串口上位机软件

    https://www.cnblogs.com/yangfengwu/p/11087558.html 咱用这个编写 ,版本都无所谓哈,只要自己有就可以,不同版本怎么打开 https://www.cnb ...

  9. Zookeeper在分布式架构中的应用

    Zookeeper 是一个高性能.高可靠的分布式协调系统,是 Google Chubby 的一个开源实现.Zookeeper 能够为分布式应用提供一致性服务,提供的功能包括:配置维护.域名服务.分布式 ...

  10. 为什么学习JavaScript设计模式,因为它是核心

    那么什么是设计模式呢?当我们在玩游戏的时候,我们会去追求如何最快地通过,去追求获得已什么高效率的操作获得最好的奖品:下班回家,我们打开手机app查询最便捷的路线去坐车:叫外卖时候,也会找附近最近又实惠 ...