2019 西安邀请赛 D
//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的更多相关文章
- 2019 西安邀请赛 M
Problem Description There are n planets ∼n. Each planet is connected to other planets through some t ...
- ACM-ICPC 2019 西安邀请赛 D.Miku and Generals(二分图+可行性背包)
“Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...
- 计蒜客 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 ...
- 2019南昌邀请赛网络预选赛 M. Subsequence
传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...
- 计蒜客 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. ...
- 计蒜客 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 ...
- 计蒜客 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 ...
- 计蒜客 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 ...
- The 2019 ACM-ICPC China Shannxi Provincial Programming Contest (西安邀请赛重现) J. And And And
链接:https://nanti.jisuanke.com/t/39277 思路: 一开始看着很像树分治,就用树分治写了下,发现因为异或操作的特殊性,我们是可以优化树分治中的容斥操作的,不合理的情况只 ...
随机推荐
- objc_msgSend method_getTypeEncoding 与 @encode
struct objc_method { SEL _Nonnull method_name OBJC2_UNAVAILABLE; cha ...
- The Secret Life of Types in Swift
At first glance, Swift looked different as a language compared to Objective-C because of the modern ...
- 第4章 Spring的数据库开发
4.1 Spring JDBC Spring的JDBC模块负责数据库资源管理和错误处理,化简了开发者对数据库的操作. 4.11 Spring JdbcTemplate的解析 * JdbcTemplat ...
- day001-在Windows下python环境的搭建
一.Python下载 1.Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: 2.Python官网:https://www.python.org/ 3.你可以在以下链接中下载 ...
- python - 将天数转换成日期
# 如果是 0 则为今天 def getdate(day): today = datetime.datetime.now() deviation = datetime.timedelta(days=- ...
- A* 第k短路
#include <cstdio> #include <algorithm> #include <queue> #include <cstring> # ...
- OpenCV应用(3) 简单轮廓匹配的小例子
具体应用 https://blog.csdn.net/kyjl888/article/details/85060883 OpenCV中提供了几个与轮廓相关的函数: findContours():从二值 ...
- 同余方程组(EXCRT)(luogu4777)
#include<cstdio> #include<algorithm> #define ll long long using namespace std; ll k; ll ...
- 一篇常做错的经典JS闭包面试题
作者 | Jeskson 来源 | 达达前端小酒馆 1 究竟是怎么样的一道面试题,能让我拿出来说说呢?下面请看代码: function fun(a,b) { console.log(b) return ...
- 文件系统EXT3,EXT4和XFS的区别
1. EXT3 (1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 (2)Ext3目前只支持32000个子目录 (3)Ext3文件系统使用32位空间记录块 ...