Description

为了表示不能输给人类,农场的奶牛们决定成立一家航空公司.她们计划每天早晨,从密歇根湖湖岸的最北端飞向最南端,晚上从最南端飞往最北端.在旅途中,航空公司可以安排飞机停在某些机场.他们需要你帮助来决定每天携带哪些旅客.沿着湖岸,有N(1≤N≤10000)个由北至南编号为1到N的农场.每个农场都有一个机场.这天,有k(l≤七≤50000)群牛想要乘坐飞机旅行.每一群牛想要从一个农场飞往另一个农场.航班可以在某些农场停下带上部分或全体的牛.奶牛们登机后会一直停留直至达到目的地 提供给你飞机的容量C(1≤C≤100),同时提供给你想要旅行的奶牛的信息,请你计算出这一天的航班最多能够满足几只奶牛的愿望.

Input

第1行:3个用空格隔开的整数K,N和C.

第2到K+1行:每一行有3个用空格隔开的整数S,E,M.表示有M只奶牛想从农场S乘飞机到农场E.

Output

可以完成旅行的奶牛人数的最大值.

Sample Input

4 8 3

1 3 2

2 8 3

4 7 1

8 3 2

Sample Output

6


双倍经验题啊,参考[Usaco2009 Feb]庙会捷运Fair Shuttle,来回一趟,翻倍就好了啊

  1. /*program from Wolfycz*/
  2. #include<cmath>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<iostream>
  6. #include<algorithm>
  7. #define inf 0x7f7f7f7f
  8. using namespace std;
  9. typedef long long ll;
  10. typedef unsigned int ui;
  11. typedef unsigned long long ull;
  12. inline int read(){
  13. int x=0,f=1;char ch=getchar();
  14. for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;
  15. for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0';
  16. return x*f;
  17. }
  18. inline void print(int x){
  19. if (x>=10) print(x/10);
  20. putchar(x%10+'0');
  21. }
  22. const int N=1e4,M=5e4;
  23. int n,m,K,Ans;
  24. struct S1{
  25. int l,r,v;
  26. void insert(int _l,int _r,int _v){l=_l,r=_r,v=_v;}
  27. bool operator <(const S1 &x)const{return r!=x.r?r<x.r:l>x.l;}
  28. }A[M+10];
  29. struct Segment{
  30. #define ls (p<<1)
  31. #define rs (p<<1|1)
  32. int tree[(N<<3)+10],Lazy[(N<<3)+10];
  33. Segment(){
  34. memset(tree,0,sizeof(tree));
  35. memset(Lazy,0,sizeof(Lazy));
  36. }
  37. void build(int p,int l,int r){
  38. tree[p]=K;
  39. if (l==r) return;
  40. int mid=(l+r)>>1;
  41. build(ls,l,mid),build(rs,mid+1,r);
  42. }
  43. void Add_tag(int p,int v){tree[p]+=v,Lazy[p]+=v;}
  44. void pushdown(int p){
  45. if (!Lazy[p]) return;
  46. Add_tag(ls,Lazy[p]);
  47. Add_tag(rs,Lazy[p]);
  48. Lazy[p]=0;
  49. }
  50. void Modify(int p,int l,int r,int x,int y,int v){
  51. if (x<=l&&r<=y){
  52. Add_tag(p,v);
  53. return;
  54. }
  55. pushdown(p);
  56. int mid=(l+r)>>1;
  57. if (x<=mid) Modify(ls,l,mid,x,y,v);
  58. if (y>mid) Modify(rs,mid+1,r,x,y,v);
  59. tree[p]=min(tree[ls],tree[rs]);
  60. }
  61. int Query(int p,int l,int r,int x,int y){
  62. if (x<=l&&r<=y) return tree[p];
  63. pushdown(p);
  64. int mid=(l+r)>>1,res=inf;
  65. if (x<=mid) res=min(res,Query(ls,l,mid,x,y));
  66. if (y>mid) res=min(res,Query(rs,mid+1,r,x,y));
  67. return res;
  68. }
  69. }Tree;
  70. int main(){
  71. n=read(),m=read()<<1,K=read();
  72. for (int i=1;i<=n;i++){
  73. int x=read(),y=read(),z=read();
  74. if (x<y) A[i].insert(x,y-1,z);
  75. else A[i].insert(m-x,m-y-1,z);
  76. }
  77. sort(A+1,A+1+n);
  78. Tree.build(1,1,m);
  79. for (int i=1;i<=n;i++){
  80. int tmp=min(A[i].v,Tree.Query(1,1,m,A[i].l,A[i].r));
  81. Tree.Modify(1,1,m,A[i].l,A[i].r,-tmp),Ans+=tmp;
  82. }
  83. printf("%d\n",Ans);
  84. return 0;
  85. }

[Usaco2005 oct]Flying Right 飞行航班的更多相关文章

  1. bzoj1745[Usaco2005 oct]Flying Right 飞行航班*

    bzoj1745[Usaco2005 oct]Flying Right 飞行航班 题意: n个农场,有k群牛要从一个农场到另一个农场(每群由一只或几只奶牛组成)飞机白天从农场1到农场n,晚上从农场n到 ...

  2. bzoj1745: [Usaco2005 oct]Flying Right 飞行航班(贪心+map)

    之前做过一道基本一样的题目,抽象出来就是有个容量为c的载体,一些线段上某个点到另一个点要运输w个东西,求从头到尾最多能运多少东西. 这种模型可以用贪心做,用map,map[r]表示r的那个点,我们准备 ...

  3. BZOJ 1684: [Usaco2005 Oct]Close Encounter

    题目 1684: [Usaco2005 Oct]Close Encounter Time Limit: 5 Sec  Memory Limit: 64 MB Description Lacking e ...

  4. 1684: [Usaco2005 Oct]Close Encounter

    1684: [Usaco2005 Oct]Close Encounter Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 181[ ...

  5. bzoj1684 [Usaco2005 Oct]Close Encounter

    Description Lacking even a fifth grade education, the cows are having trouble with a fraction proble ...

  6. bzoj:1685 [Usaco2005 Oct]Allowance 津贴

    Description As a reward for record milk production, Farmer John has decided to start paying Bessie t ...

  7. 【BZOJ】1685: [Usaco2005 Oct]Allowance 津贴(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1685 由于每个小的都能整除大的,那么我们在取完大的以后(不超过c)后,再取一个最小的数来补充,可以证 ...

  8. 【BZOJ】1684: [Usaco2005 Oct]Close Encounter(暴力+c++)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1684 这货完全在考精度啊.. 比如奇葩 (llf)a/b*i (llf)(a/b*i)和(llf)( ...

  9. BZOJ 1685 [Usaco2005 Oct]Allowance 津贴:贪心【给硬币问题】

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1333 题意: 有n种不同币值的硬币,并保证大币值一定是小币值的倍数. 每种硬币的币值为 ...

随机推荐

  1. spring-session(一)揭秘

    前言 在开始spring-session揭秘之前,先做下热脑(活动活动脑子)运动.主要从以下三个方面进行热脑: 为什么要spring-session 比较traditional-session方案和s ...

  2. SPOJ NSUBSTR (后缀自动机)

    SPOJ NSUBSTR Problem : 给一个长度为n的字符串,要求分别输出长度为1~n的子串的最多出现次数. Solution :首先对字符串建立后缀自动机,在根据fail指针建立出后缀树,对 ...

  3. io计算

    http://www.cnblogs.com/yalong_xiang/archive/2011/11/15/2249530.html ぬ儱←OWEN★   windows下如何查看磁盘IO性能 复制 ...

  4. Good Zookeeper Tutorial with Java client

    参考: https://stackoverflow.com/questions/33524537/good-zookeeper-tutorial-with-java-client I was tryi ...

  5. PS如何绘制虚线圆

    1 绘制一个圆的路径   2 选择铅笔工具,然后点击"画笔笔尖形状",选好笔尖的直径和间距(不同的直径对应不同的间距,没有标准数值,自己推拉滑动条就可以了)   3 在路径选项卡, ...

  6. CSS Modules 解决 react 项目 css 样式互相影响的问题

    1. CSS Modules引入目的 写过CSS的人,应该都对一大长串选择器选中一个元素不陌生吧,这种方式,其实定义的就是全局样式,我们时常会因为选择器权重问题,没有把我们想要的样式加上去. 另外,每 ...

  7. c语言有头循环单链表

    /************************************************************************* > File Name: singleLin ...

  8. TMS320F28335项目开发记录6_28335之cmd文件具体解释

    1.CMD文件的作用 CMD文件的作用就像仓库的货物摆放记录一样,为程序代码和数据分配指定的空间. 2.C语言生成的段 C语言生成的段大致分为两大类:初始化和未初始化,已初始化的段含有真正的指令和数据 ...

  9. 【手势交互】8. Nimble Sense

    早在2012.2013年度,手势识别领域就发生了几起重要的行业并购.比方英特尔对Omek的收购,谷歌对Flutter的收购.而苹果公司更是以3.45亿美金得高价收购了之前为微软Kinect提供技术支持 ...

  10. Eclipse Android环境配置

    1.离线安装ADT插件,先将ZIP包下载 Help- Install New Software- Add 重启 2.WIndows -Preference设置SDK目录