BZOJ 3438 小M的作物 & BZOJ 1877 [SDOI2009]晨跑

我由衷地为我的朋友高兴。哈哈,yian,当你nick name破百上千时,再打“蒟蒻”就会被打的。
好的,说正事吧。请注意,这还是题解。但我发现,网络流实在是太套路了(怪不得这两年几乎销声匿迹)。我们将分析两道题目,分别代表两类稍微有一点思想意义的题目。
啊啊啊啊啊。
3438: 小M的作物
Description
Input
Output
只有一行,包括一个整数,表示最大收益
Sample Input
4 2 1
2 3 2
1
2 3 2 1 2
Sample Output
样例解释A耕地种1,2,B耕地种3,收益4+2+3+2=11。
1<=k< n<= 1000,0 < m < = 1000 保证所有数据及结果不超过2*10^9。
这道题可能代表了BZOJ上的一类题,就像之前所说过的BZOJ 3894 文理分科一样,与BZOJ 1497 [NOI2006]最大获利也颇有类似之处。
这是最大负权回路:

而此题则是另一种策略。好水啊。
1877: [SDOI2009]晨跑
Description
Input
Output
两个数,第一个数为最长周期的天数,第二个数为满足最长天数的条件下最短的路程长度。
Sample Input
1 2 1
1 3 1
2 4 1
3 4 1
4 5 1
4 6 1
2 5 5
3 6 6
5 7 1
6 7 1
Sample Output
/**************************************************************
Problem: 1877
User: Doggu
Language: C++
Result: Accepted
Time:1484 ms
Memory:4856 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <algorithm> const int N = ;
const int M = ;
struct Edge {int v,u,upre,cap,flow,cost;}g[M];
int head[N], ne=-;
inline void adde(int u,int v,int cap,int cost) {
g[++ne]=(Edge){v,u,head[u],cap,,cost},head[u]=ne;
g[++ne]=(Edge){u,v,head[v],,,-cost},head[v]=ne;
} int d[N], p[N], a[N];
bool inq[N];
#include <queue>
std::queue<int> q;
bool SPFA(int s,int t,int &flow,int &cost) {
while(!q.empty()) q.pop();
memset(inq,,sizeof(inq));
memset(d,/,sizeof(d));
q.push(s);inq[s]=;d[s]=;p[s]=;a[s]=0x3f3f3f3f;
while(!q.empty()) {
int u=q.front();q.pop();inq[u]=;
for( int i = head[u]; i!=-; i=g[i].upre ) {
int v=g[i].v;
if(g[i].cap>g[i].flow&&d[v]>d[u]+g[i].cost) {
if(!inq[v]) q.push(v),inq[v]=;
d[v]=d[u]+g[i].cost;p[v]=i;a[v]=std::min(a[u],g[i].cap-g[i].flow);
}
}
}
if(d[t]==d[N-]) return false;
flow+=a[t];cost+=d[t]*a[t];
int u = t;
while(u != s) {
g[p[u]].flow+=a[t];
g[p[u]^].flow-=a[t];
u=g[p[u]].u;
}
return true;
}
void MxfMnc(int s,int t) {
int flow = , cost = ;
while(SPFA(s,t,flow,cost));
printf("%d %d\n",flow,cost);
} int main() {
memset(head,-,sizeof(head));
int n, m, a, b, c;scanf("%d%d",&n,&m);
adde(,n+,0x3f3f3f,);for( int i = ; i < n; i++ ) adde(i,n+i,,);
for( int i = ; i <= m; i++ ) {
scanf("%d%d%d",&a,&b,&c);
adde(n+a,b,,c);
}
MxfMnc(,n);
return ;
费用流
BZOJ 3438 小M的作物 & BZOJ 1877 [SDOI2009]晨跑的更多相关文章
- BZOJ 1877: [SDOI2009]晨跑 费用流
1877: [SDOI2009]晨跑 Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一 ...
- BZOJ 1877: [SDOI2009]晨跑( 最小费用最大流 )
裸的费用流...拆点, 流量限制为1, 最后的流量和费用即答案. ------------------------------------------------------------------- ...
- 1877: [SDOI2009]晨跑
1877: [SDOI2009]晨跑 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2007 Solved: 1085[Submit][Status][ ...
- BZOJ 3438: 小M的作物( 最小割 )
orz出题人云神... 放上官方题解... 转成最小割然后建图跑最大流就行了... ---------------------------------------------------------- ...
- 【BZOJ】1877: [SDOI2009]晨跑(最小费用最大流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1877 费用流做多了,此题就是一眼题. 拆点表示只能经过一次,容量为1,费用为0. 然后再连边即可,跑 ...
- bzoj 3438: 小M的作物
Description 背景 小M还是个特么喜欢玩MC的孩纸... 描述 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子有1个(就是可以种一 ...
- BZOJ 1877 [SDOI2009]晨跑(多条不交叉最短路)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1877 [题目大意] 找出最多有几条点不重复的从1到N的路,并且要求在满足这个条件的情况 ...
- bzoj 1877: [SDOI2009]晨跑
#include<cstdio> #include<iostream> #include<cstring> #define M 6009 #define inf 2 ...
- bzoj 1877 [SDOI2009]晨跑(最小费用最大流)
Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十 ...
随机推荐
- github在版本库中删除某个文件的所有历史记录
github的目的就是版本控制,记录每一个版本的变动.然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中.例如不小心上传了一堆错误的文件,或者不小心上传了帐号.密码,那么这个时候 ...
- MyCat安装与测试教程 超详细!
MyCat安装与测试教程 超详细! MyCat基础知识 一.什么是MYCAT? 1. 一个彻底开源的,面向企业应用开发的大数据库集群 2. 支持事务.ACID.可以替代MySQL的加强版数据库 3. ...
- 2019CSUST集训队选拔赛题解(二)
凛冬将至 Description 维斯特洛大陆的原住民是森林之子,他们长得如孩童一般,善于使用石器,威力值35,用树叶树枝作为衣物,在森林里繁衍生息,与万物和平相处.他们会使用古老的魔法(比如绿之视野 ...
- BP神经网络算法推导
目录 前置知识 梯度下降法 激活函数 多元复合函数求偏导的相关知识 正向计算 符号定义 输入层 隐含层 输出层 误差函数 反向传播 输出层与隐含层之间的权值调整 隐含层与输入层之间权值的调整 计算步骤 ...
- 升级Xcode 10 后报错问题记录([CP] Copy Pods Resources)
1.升级Xcode到Version 10.0 (10A255)后,运行已有项目,报如下错误: error: Multiple commands produce '/Users/galahad/Libr ...
- 在js中保存数据
localStorage: localStorage.setItem("key", "value"); localStorage.getItem("k ...
- iis托管管道模式-学习
文章;IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解 我们可以通过应用程序池设置管道模式,这项功能对IIS管理员尤其有用,因为这样既可以令一台服务器 ...
- C++编译与链接(2)-浅谈内部链接与外部链接
发现每次写技术博客时,都会在文章开头处花费一番功夫 ...从前,有一个程序员....他的名字叫magicsoar 为什么有时会出现aaa已在bbb中重定义的错误? 为什么有时会出现无法解析的外部符号? ...
- jmeter 常用内置变量
1. vars API:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html vars.get(& ...
- 每个Android开发者必须知道的内存管理知识
原文:每个Android开发者必须知道的内存管理知识 拷贝在此处,以备后续查看. 相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确 ...