USACO 4.2
洛谷 2740 草地排水
代码(网络最大流)
/*
ID:lemondi1
LANG:C++
TASK:ditch
*/
#include <cstdio>
#include <cctype>
#include <queue>
#define rr register
using namespace std;
const int N=211,inf=1e7; long long ans;
struct node{int y,w,next;}e[N*50];
int dis[N],v[N],n,m,S,T,et,as[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline bool bfs(int st){
for (rr int i=1;i<=n;++i) dis[i]=0;
rr queue<int>q; q.push(st),dis[st]=1;
while (!q.empty()){
rr int x=q.front(); q.pop();
for (rr int i=as[x];i;i=e[i].next)
if (e[i].w>0&&!dis[e[i].y]){
dis[e[i].y]=dis[x]+1;
if (e[i].y==T) return 1;
q.push(e[i].y);
}
}
return 0;
}
inline signed min(int a,int b){return a<b?a:b;}
inline signed dfs(int x,int now){
if (x==T||!now) return now;
rr int rest=0,f;
for (rr int i=as[x];i;i=e[i].next)
if (e[i].w>0&&dis[e[i].y]==dis[x]+1){
f=dfs(e[i].y,min(now-rest,e[i].w)),
rest+=f,e[i].w-=f,e[i^1].w+=f;
if (now==rest) return now;
}
if (!rest) dis[x]=0;
return rest;
}
signed main(){
freopen("ditch.in","r",stdin);
freopen("ditch.out","w",stdout);
m=iut(),n=iut(),S=1,T=n,et=1;
for (rr int i=1;i<=m;++i){
rr int x=iut(),y=iut(),w=iut();
e[++et]=(node){y,w,as[x]},as[x]=et;
e[++et]=(node){x,0,as[y]},as[y]=et;
}
while (bfs(S)) ans+=dfs(S,inf);
return !printf("%lld\n",ans);
}
洛谷 2751 工序安排
分析
考虑开一个小根堆,第一问直接取出最小完成时间丢入下一次完成时间。
第二问考虑用第一道工序结束最晚的匹配第二道最早的这样时间一定不会更劣
代码
/*
ID:lemondi1
LANG:C++
TASK:job
*/
#include <cstdio>
#include <cctype>
#include <queue>
#define rr register
using namespace std;
struct rec{
int x,w;
inline bool operator <(const rec &t)const{
return x>t.x;
}
};
priority_queue<rec>q;
int n,m0,m1,ans[1011],Ans,x;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
signed main(){
freopen("job.in","r",stdin);
freopen("job.out","w",stdout);
n=iut(),m0=iut(),m1=iut();
for (rr int i=1;i<=m0;++i) x=iut(),q.push((rec){x,x});
for (rr int i=1;i<=n;++i){
rr rec t=q.top(); q.pop();
ans[i]=t.x,t.x+=t.w,q.push(t);
}
while (!q.empty()) q.pop();
for (rr int i=1;i<=m1;++i) x=iut(),q.push((rec){x,x});
for (rr int i=n;i;--i){
rr rec t=q.top(); q.pop();
if (t.x+ans[i]>Ans) Ans=t.x+ans[i];
t.x+=t.w,q.push(t);
}
return !printf("%d %d\n",ans[n],Ans);
}
洛谷 1894 完美的牛栏
代码(二分图最大匹配)
/*
ID:lemondi1
LANG:C++
TASK:stall4
*/
#include <cstdio>
#include <cctype>
#include <cstring>
#define rr register
using namespace std;
const int N=211;
struct node{int y,next;}e[N*N];
int v[N],link[N],as[N],n,m,et,ans;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline bool match(int x){
for (rr int i=as[x];i;i=e[i].next)
if (!v[e[i].y]){
v[e[i].y]=1;
rr int q=link[e[i].y];
link[e[i].y]=x;
if (!q||match(q)) return 1;
link[e[i].y]=q;
}
return 0;
}
signed main(){
freopen("stall4.in","r",stdin);
freopen("stall4.out","w",stdout);
n=iut(),m=iut();
for (rr int i=1;i<=n;++i)
for (rr int j=iut();j;--j)
e[++et]=(node){iut(),as[i]},as[i]=et;
for (rr int i=1;i<=n;++i){
memset(v,0,sizeof(v));
if (match(i)) ++ans;
}
return !printf("%d\n",ans);
}
USACO 4.2的更多相关文章
- USACO . Your Ride Is Here
Your Ride Is Here It is a well-known fact that behind every good comet is a UFO. These UFOs often co ...
- 【USACO 3.1】Stamps (完全背包)
题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...
- USACO翻译:USACO 2013 NOV Silver三题
USACO 2013 NOV SILVER 一.题目概览 中文题目名称 未有的奶牛 拥挤的奶牛 弹簧牛 英文题目名称 nocow crowded pogocow 可执行文件名 nocow crowde ...
- USACO翻译:USACO 2013 DEC Silver三题
USACO 2013 DEC SILVER 一.题目概览 中文题目名称 挤奶调度 农场航线 贝西洗牌 英文题目名称 msched vacation shuffle 可执行文件名 msched vaca ...
- USACO翻译:USACO 2014 DEC Silver三题
USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...
- USACO翻译:USACO 2012 FEB Silver三题
USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...
- USACO翻译:USACO 2012 JAN三题(3)
USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...
- USACO翻译:USACO 2012 JAN三题(2)
USACO 2012 JAN(题目二) 一.题目概览 中文题目名称 叠干草 分干草 奶牛联盟 英文题目名称 stacking baleshare cowrun 可执行文件名 stacking bale ...
- USACO翻译:USACO 2012 JAN三题(1)
USACO 2012 JAN(题目一) 一.题目概览 中文题目名称 礼物 配送路线 游戏组合技 英文题目名称 gifts delivery combos 可执行文件名 gifts delivery c ...
- USACO翻译:USACO 2013 JAN三题(1)
USACO 2013 JAN 一.题目概览 中文题目名称 镜子 栅栏油漆 奶牛排队 英文题目名称 mirrors paint lineup 可执行文件名 mirrors paint lineup 输入 ...
随机推荐
- win32 - 内存映射(CreateFileMapping)
目标:创建一个app,使用CreateToolhelp32Snapshot扫描所有的进程,并将进程的pid和exe名字映射到内存中,再在另一个app中使用OpenFileMapping打开该映射读取相 ...
- 【libGDX】Mesh立方体贴图(6张图)
1 前言 本文通过一个立方体贴图的例子,讲解三维纹理贴图的应用,案例中使用 6 张不同的图片给立方体贴图,图片如下. 读者如果对 libGDX 不太熟悉,请回顾以下内容. 使用Mesh绘制三角 ...
- django学习第七天---创建多表结构,创建第三张表的三种方式,创建模型类时的一些元信息配置,多表增加
图书管理系统作业知识点整理 知识点1: print(request.POST.dict())#dict()方法能将QueryDict类型数据转换为普通字典类型数据 传数据时,可以用**{}打散的方式来 ...
- 03-Redis系列之-高级用法详解
慢查询 生命周期 我们配置一个时间,如果查询时间超过了我们设置的时间,我们就认为这是一个慢查询. 慢查询发生在第三阶段 客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素 两个配置 slowl ...
- 【LeetCode动态规划#17】知道秘密的人,维护多个dp数组
知道秘密的人数 在第 1 天,有一个人发现了一个秘密. 给你一个整数 delay ,表示每个人会在发现秘密后的 delay 天之后,每天 给一个新的人 分享 秘密.同时给你一个整数 forget ,表 ...
- Centos8上安装Redis5.X
一.下载Redis 下载地址:wget http://download.redis.io/releases/redis-5.0.7.tar.gz 解压:tar -xzvf redis-5.0.7.ta ...
- linux基本知识汇总2(系统编程) 60000字汇总
/////////////进程/任务 -- task任何启动并运行程序的行为,都是由操作系统帮助我们将程序转换成进程 -- 进程:完成特定的任务 进程控制块:PCB(win) / task_struc ...
- C# 操作国产数据库之【 人大金仓 】之四大模式
人大金仓优点 人大金仓是国产最主流ORM之一 具有和PgSql一样强悍的性能,同时人大金仓支持了四种数据库模式 : Oracle.PgSql.MySql和SqlServer ,假如你们系统有多种数据库 ...
- 十: SQL执行流程
SQL执行流程 1. MySQL 中的 SQL执行流程 MySQL的查询流程: 1.1 查询缓存 Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端:如果没 有,就进入 ...
- Kafka的Controller
控制器组件(Controller),是 Apache Kafka 的核心组件.它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群.集群中任意一台 Broker ...