AC日记——[NOI2006]最大获利 bzoj 1497
思路:
最小割;
来,上代码:
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- #define maxn 55005
- #define maxm 1005005
- #define INF 0x7fffffff
- int deep[maxn],que[maxm],F[maxm],cnt=;
- int n,m,s,t=maxn-,head[maxn],E[maxm],V[maxm];
- inline void in(int &now)
- {
- char Cget=getchar();now=;
- while(Cget>''||Cget<'') Cget=getchar();
- while(Cget>=''&&Cget<='')
- {
- now=now*+Cget-'';
- Cget=getchar();
- }
- }
- inline void edge_add(int u,int v,int f)
- {
- E[++cnt]=head[u],V[cnt]=v,F[cnt]=f,head[u]=cnt;
- E[++cnt]=head[v],V[cnt]=u,F[cnt]=,head[v]=cnt;
- }
- inline bool bfs()
- {
- memset(deep,-,sizeof(deep));
- int h=,tail=;que[]=s,deep[s]=;
- while(h<tail)
- {
- int now=que[h++];
- for(int i=head[now];i;i=E[i])
- {
- if(F[i]>&&deep[V[i]]<)
- {
- deep[V[i]]=deep[now]+;
- if(V[i]==t) return true;
- que[tail++]=V[i];
- }
- }
- }
- return false;
- }
- int flowing(int now,int flow)
- {
- if(now==t||flow<=) return flow;
- int oldflow=;
- for(int i=head[now];i;i=E[i])
- {
- if(F[i]>&&deep[V[i]]==deep[now]+)
- {
- int pos=flowing(V[i],min(flow,F[i]));
- flow-=pos,oldflow+=pos;
- F[i]-=pos,F[i^]+=pos;
- if(flow==) return oldflow;
- }
- }
- if(oldflow==) deep[now]=-;
- return oldflow;
- }
- int main()
- {
- in(n),in(m);int pos,u,v,sum=;
- for(int i=;i<=n;i++) in(pos),edge_add(s,i,pos);
- for(int i=;i<=m;i++)
- {
- in(u),in(v),in(pos);
- sum+=pos;
- edge_add(u,i+n,INF);
- edge_add(v,i+n,INF);
- edge_add(i+n,t,pos);
- }
- pos=;while(bfs()) pos+=flowing(s,INF);
- cout<<sum-pos;
- return ;
- }
AC日记——[NOI2006]最大获利 bzoj 1497的更多相关文章
- 1497: [NOI2006]最大获利 - BZOJ
Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一 ...
- AC日记——[HEOI2012]旅行问题 bzoj 2746
2746 思路: 建立ac自动机,然后把fail树抽出来: 然后在fail树上走lca(神奇): 代码: #include <cstdio> #include <vector> ...
- AC日记——[HNOI2008]GT考试 bzoj 1009
1009 思路: KMP上走DP(矩阵加速): DP[i][j]表示当前在第i位,同是匹配到不吉利串的第j位的方案数: 代码: #include <bits/stdc++.h> using ...
- AC日记——明明的烦恼 bzoj 1005
1005 思路: prufer编码+组合数: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1005 #de ...
- AC日记——Mato的文件管理 bzoj 3289
3289 思路: 莫队求区间逆序对个数,树状数组维护: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 500 ...
- AC日记——[Scoi2010]序列操作 bzoj 1858
1858 思路: 恶心: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct Tree ...
- AC日记——[ZJOI2007]报表统计 bzoj 1058
1058 思路: 平衡树的题: 然而我的平衡树写一次炸一次QwQ: 而且各种tle: 所以stl水过: 代码: #include <set> #include <cstdio> ...
- AC日记——[JSOI2007]建筑抢修 bzoj 1029
1029 思路: 贪心,而且,stl水过: 然而神特么输出que.size()就错! 代码: #include <queue> #include <cstdio> #inclu ...
- AC日记——[JSOI2008]火星人prefix bzoj 1014
1014 思路: 平衡树+二分答案+hash: 好了懂了吧. 代码: #include <cstdio> #include <cstring> #include <ios ...
随机推荐
- django_mysql_配置
配置 1. 安装Pymysql pip install PyMySQL 然后在项目同名_init__添加 from pymysql import install_as_MySQLdb install_ ...
- Python的while else
python中有一个其独有的功能,while else. 它的作用是判断是循环是否被终止,如果没有被终止,那么就会执行else,反之则不会执行.还是用一段代码来解释吧 else被执行: count = ...
- [bzoj1912]异象石(set)
Description Adera是Microsoft应用商店中的一款解谜游戏. 异象石是进入Adera中异时空的引导物,在Adera的异时空中有一张地图.这张地图上有N个点,有N-1条双向边把它们连 ...
- (洛谷)P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 笔记-python-tutorial-5.data structure
笔记-python-tutorial-5.data structure 1. data structure 1.1. list operation list.append(x) #尾部 ...
- Diycode开源项目 搭建可以具有下拉刷新和上拉加载的Fragment
1.效果预览 1.1.这个首页就是一个Fragment碎片,本文讲述的就是这个碎片的搭建方式. 下拉会有一个旋转的刷新圈,上拉会刷新数据. 1.2.整体结构 首先底层的是BaseFragment 然后 ...
- Java消息中间件--初级篇
一. 为什么使用消息中间件? 假设用户登录系统 传统方式 用户登录 调用短息服务 积分服务 日志服务等各种服务 如果短息服务出现问题就无法发送短信而且用户登录成功必须所有调用全部完成返回 ...
- luogu1829 [国家集训队]Crash的数字表格
被 bs 了姿势水平--好好学习数学QAQQAQQAQ ref #include <iostream> #include <cstring> #include <cstd ...
- phpmyadmin4.8.1后台getshell
phpmyadmin4.8.1后台getshell 包含文件进行getshell 姿势: ① 建立数据库的,新建表,字段名为一句话木马. 会生成对应的数据库文件,相应文件的路径查看 select @@ ...
- jmeter非GUI模式如何压测并生成测试报告
在启动Jmeter时,我们会看到这样一句提示: 不要使用GUI模式(界面模式)进行负载测试,GUI模式只能用于创建测试和调试.进行负载测试时,需要时用非GUI模式. 那么为什么进行负载测试时一定要用非 ...