2017年10月7日提高组T1 染色
来源:互联网 发布:软件测试毕业总结 编辑:程序博客网 时间:2024/04/29 18:57
Description
人人生而平等,然而后来人们逐渐选择了不同的道路,人与人之间,变得不再平等。你可能会因为染上恶人之色而堕落,成为社会的败类;你也可能因为染上善人之色,而在逆境中不断成长。但是,红与黑并非绝对的。所谓“近朱者赤,近墨者黑”,你能改变周遭的环境,那么周遭的环境也会影响你。在黑暗的人群中,善人之色是明亮的,而在明亮的人群中,善人之色的存在就会显得微薄。你的颜色,依靠着你自己的意志在选择。
如今,你获得了一次重生,你要为自己,以及你周围的人们,重新染上一种你真正想要的颜色。具体来说,你的圈子里总共有N个人,每个人你可以选择为其重新染色,或者不染。对于第i个人,如果他/她被重新染色,那么这将会对社会带来wi的改变。同时,朋友关系也会对社会带来改变,如果i,j是朋友,那么他/她们会对社会带来的改变w(i,j)满足
上述的wi,wi,j 均为已知常数。这次染色会对社会带来的总的改变,就是上述所有改变的总和。设计一种染色方案,使得对社会总的改变最大。
Input
第一行一个正整数N,表示涉及该问题的人数。
第二行N个整数w1,w2,w3,…,wN(∀i∈{1,2,3,…,N},|wi|≤10^9)表示某一个人被染色后对社会带来的改变。
第三行一个非负整数M,表示有M 对朋友关系。
以后M 行每行三个整数ui,vi,wui,vi(1≤ui,vi≤N,ui≠vi,|wui,vi|≤10^9),分别表示朋友关系的对象,以及对社会带来改变的相关参数。
相邻整数用空格分隔,朋友关系不会被重复描述。
Output
输出仅一行为一个整数,对社会产生的总的改变的最大值。
Hint
对于40%的数据,M=0。
对于另外40% 的数据,N,M≤20。
对于所有数据,N,M≤10^5。
Solution
很有趣的一道题
一条边的权值w取决于这条边两端的点,那么我们把边权往两个端点加就可以了。考虑到要满足某些神奇的条件,所以这里无论如何都要减掉w。
Code
#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include <algorithm>#include <queue>#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)#define drp(i, st, ed) for (int i = st; i >= ed; i -= 1)#define erg(i, st) for (int i = ls[st]; i; i = e[i].next)#define fill(x, t) memset(x, t, sizeof(x))#define max(x, y) ((x)>(y)?(x):(y))#define min(x, y) ((x)<(y)?(x):(y))#define abs(x) ((x)<(0)?(-(x)):(x))#define ll long long#define INF 0x3f3f3f3f#define N 400001ll w[N];inline ll read() { ll x = 0, v = 1; char ch = getchar(); for(; ch<'0'||ch>'9'; v=((ch=='-')?(-1):(v)), ch=getchar()); for(; ch<='9'&&ch>='0'; (x*=10)+=ch-'0',ch=getchar()); return x * v;}int main(void) { int n = read(); rep(i, 1, n) { w[i] = read(); } int m = read(); ll ans = 0; rep(i, 1, m) { ll x = read(); ll y = read(); ll v = read(); w[x] += v; w[y] += v; ans -= v; } rep(i, 1, n) { if (w[i] > 0) { ans += w[i]; } } std:: cout << ans << std:: endl; return 0;}
- 2017年10月7日提高组T1 染色
- SSL2761 2017年10月7日提高组T1 染色(贪心)
- 2017年8月7日提高组T1 呵呵
- 2017年8月7日提高组T1 呵呵
- 2017年8月7日提高组T1 呵呵
- 2017年8月7日提高组T1 根
- 2017年8月10日提高组T1 数学
- 2017年8月10日提高组T1 数学
- 2017年8月10日提高组T1 数学
- 2017年10月30日提高组T1 数论
- 2017年8月8日提高组T1 作业
- 2017年8月8日提高组T1 作业
- 2017年8月9日提高组T1 水题
- 2017年8月8日提高组T1 作业
- 2017年8月9日提高组T1 水题
- 2017年8月14日提高组T1 跳跃
- 2017年8月15日提高组T1 字符串
- 2017年8月14日提高组T1 跳跃
- [NOIP模拟] 玩积木
- Linux操作系统 习题二
- xgboost 保存模型和特征重要度
- spring各版本下载
- 1013. 数素数 (20)
- 2017年10月7日提高组T1 染色
- 给定n个字符串,请对n个字符串按照字典序排列。
- softmax回归
- 2017自己前端面试题总结
- Java中对数组的两种操作方法Arrays、foreach()
- unity优化《二》--Texture图片空间和内存占用分析
- ConfigReader(三十八)—— ReadMsgConfig
- 解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度
- Maven无法下载依赖包解决办法