门边少女 WBQ 想要给她的男朋友买礼物。

礼物有 n 种,每种礼物有一个价格 ai ,如果 WBQ 买了礼物 i,那么她需要付出 ai 的代价。 同时,还有 m 对关系 (pi, qi, bi) ,表示 WBQ 的男朋友如果同时收到了礼物 pi 和礼物 qi ,那 么他的心情就会变好 bi 。

WBQ 的零花钱有限。设她最终购买礼物一共花费了 A,使 WBQ 的男朋友心情变好了 B, 请你最大化 B/A;

首先这看上去是一个01分数规划+网络流。

还记得profit吗?

于是我考试就这样写的。

20.。。。卡成暴力分,原因是这个题卡精度,然后我define double int 65 tle 35

这是为什么。这个时候,这道题实际就是非朴素建边了。

对于每个点,选择它需要付出的代价为 2gai − degi ,对于每条边,割断它需要付出的代价就是它本身的 bi ,直接建图跑最小割即可。

#include<bits/stdc++.h>
using namespace std;
#define in get_int()
namespace FastIO{const int L=1<<15;char buf[L],*S,*T;char getchar(){if(S==T){T=(S=buf)+fread(buf,1,L,stdin);if(S==T)return EOF;}return *S++;}char read_char(){char c=getchar();while(!(33<=c&&c<=126))c=getchar();return c;}void get_string(char *s){char c=getchar();while(!(33<=c&&c<=126))c=getchar();while( (33<=c&&c<=126))*s++=c,c=getchar();*s=0;}int get_int(){int res=0,bj=1;char c=getchar();while(!isdigit(c)){if(c=='-')bj=-1;c=getchar();}while(isdigit(c)){res=res*10+c-'0';c=getchar();}return res*bj;}
}using FastIO::get_int;using FastIO::get_string;using FastIO::read_char;
const int N=200010;
const int INF=2139062143;
int n,m,s,t;int sum;
int a[N];
struct hh{int x,y;int l;}nex[N<<4],b[N];
int fir[N],SIZE,cur[N];
void add(int x,int y,int l)
{nex[++SIZE]=(hh){fir[x],y,l};fir[x]=SIZE;nex[++SIZE]=(hh){fir[y],x,0};fir[y]=SIZE;
}
int d[N];int q[N],head,tail;
bool bfs()
{head=tail=0;fill(d,d+t+1,0);d[t]=1;q[++tail]=t;while(head<tail){int x=q[++head];for(int i=fir[x];i;i=nex[i].x){int to=nex[i].y;if(nex[i^1].l>0&&!d[to]) {d[to]=d[x]+1;if(to==s) return 1;q[++tail]=to;}}}return 0;
}
int dfs(int x,int f)
{if(x==t) return f;int dat=0;for(int &i=cur[x];i;i=nex[i].x){int to=nex[i].y;if(nex[i].l>0&&d[to]==d[x]-1){int w=dfs(to,min(f-dat,nex[i].l));dat+=w,nex[i].l-=w,nex[i^1].l+=w;if(fabs(dat-f)<0.0001) return f;}}return dat;
}
int dinic()
{int ans=0;while(bfs()){copy(fir,fir+1+t,cur);ans+=dfs(s,INF);} return ans;
}
void clear()
{SIZE=1;fill(fir,fir+t+1,0);
}
void build(int x)
{clear();for(int i=1;i<=n;++i) add(s,i,2*a[i]*x);for(int i=1;i<=m;++i){int x=b[i].x,y=b[i].y;add(x,y,b[i].l);add(y,x,b[i].l);add(x,t,b[i].l);add(y,t,b[i].l);}
}int main(){    n=in,m=in;s=0;t=n+1;for(int i=1;i<=n;++i)a[i]=in;for(int i=1;i<=m;++i)b[i].x=in,b[i].y=in,b[i].l=in,sum+=2*b[i].l;int l=0,r=700;while(l<r){int mid=l+r>>1;build(mid+1);if(sum-dinic()>0) l=mid+1;else r=mid;}printf("%d",l);return 0;
}

转载于:https://www.cnblogs.com/Leo-JAM/p/10079305.html

省选专练川渝友谊考试S10礼物gift相关推荐

  1. R6饮料AK赛(NOIP模拟赛)/省选专练HDU 5713 K个联通块

    我好菜啊100+60+30 滚犊子吧,两天加起来才410搞个屁我一年前都可以考400 不说了,题毕竟比较难 T1还是水题但是比昨天难 这是一个开绝对值不等式的题. 根据对奇数和偶数的最优根的归纳一定有 ...

  2. 省选专练之文艺计算姬

    "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬. 文艺计算姬比普通计算机有更多的艺术细胞. 普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一 ...

  3. 省选专练(学习)可持久化Trie树(BZOJ3261)

    这个似乎也不是好难啊 但是可持久化Trie还是可以干许多线性基不能干的事. 什么是可持久化Trie? 顾名思义:是一种可以持久化的Trie树 他的建树方式和键值式线段树方式类似 也支持版本的减法 查询 ...

  4. 省选专练[CQOI2007]涂色

    不好理解的DP 伪区间DP F(i,j)表示子串i-j实现的方式最小 当i=j时明显为1 当s[i]==s[j]时 这里是理解的重难点: 通过递归可知当你刷i的时候顺便刷到j就好了 然后就是标准的区间 ...

  5. 省选专练之后缀自动机SPOJ1811LCS - Longest Common Substring

    陈老师引入SAM的例题 求两个串的LCS 直接建一个串的SAM,并且把另外一个串放进去跳. 这个方法很经典! 几乎满足了所有两个串的公共串问题的所有解法 有巨子说这个跳是均摊Log的,我也不知道QwQ ...

  6. 省选专练之神仙贪心IOI2013Robert

    [问题描述] 小沐把玩具扔在地板上,乱七八糟.庆幸的是,有一种特殊的机器人可以收拾玩具.不过他需要 确定哪个机器人去拣哪个玩具. 一共有 T 个玩具,整数 w[i]表示这个玩具的重量,整数 s[i]表 ...

  7. 省选专练(学习)AC自动机

    我好菜啊 AC自动机都不会 AC自动机可以干什么: 用一个模板串匹配多个子串. 这便让AC自动机可以干许多KMP和Tri树不能干的事. AC自动机的构造 首先建立一颗Trie树. 其次利用KMP的思想 ...

  8. 省选专练[POI2005]SAM-Toy Cars

    经典贪心 策略如下: 每次贪心让最需要的放下 易证正确 #include<bits/stdc++.h> using namespace std; const int N=1e6; inli ...

  9. 省选专练[NOI2008]志愿者招募

    一类新式网络流问题 按时间为键值拆点 链式连边. 考点:流量平衡思想 考点出处:网络流24题最长K重区间覆盖问题 建边: 每一天向下一天连INF-A[i],0的边 每一次劳工用差分的方式建边INF,c ...

最新文章

  1. PyTorch-Adam优化算法原理,公式,应用
  2. LinkedIn 开源成功的秘密
  3. 双目深度估计中的自监督学习概览
  4. 飞桨第六课 2020.4.5
  5. python 工具ScreenShoot
  6. VS2010中的顺序图
  7. loj2683「BalticOI 2013」非回文数 Palindrome-Free Numbers
  8. 编译DPDK遇到make: *** /lib/modules/3.10.0-693.el7.x86_64/build: no such file or dirortory
  9. 抖音抖加是什么?dou+怎么投放?豆荚什么时候投最好?
  10. lstm实例:基于lstm的DGA域名检测
  11. 一个一本正经的科普--5G是什么?
  12. Redis学习笔记(二):Redis keys 命令
  13. linux创建文档并且打字,与 Linux 一起学习:学习打字
  14. AntV G2 Tooltip
  15. Procmon打开后无反应的问题
  16. 分布式计算、云计算与大数据
  17. 被陆奇文章刷屏了,细思极恐
  18. # IDEA如何从dao层接口快速调转到xml文件
  19. 中小企业存储集群系统建设方案
  20. 好橱柜彰显好品味,太子家居橱柜定制凸显家的气质

热门文章

  1. rtsp 服务器搭建
  2. Aandroid TV 基于Leanback支持最新MD设计的TV开发框架
  3. Linux系统完全卸载删除PHP的方法
  4. TP6 腾讯云发送短信验证码配置详解
  5. 【css】转盘游戏实现
  6. WIN7显示中文繁体的解决方法
  7. 数据可视化汇总(一)
  8. 压力测试总共需要几个步骤?思路总结篇
  9. 文献阅读:神经网络提取生物医学文本中的关系
  10. 我们的产品终于入驻淘宝服务市场