题意:

      n个区间,m种点,每种点有ci个,如果一个点的范围在一个区间上,那么就可以消耗掉一个区间,问最多可以消耗多少个区间,就是这n个区间中,有多少个可能被抵消掉。

思路:

      方法不唯一,首先可以用贪心来做,看到网上说的都是优先队列的解法,我说下我的想法,我是直接sort排序后暴力(其实根本达不到n*m*l的时间复杂度),我先把所有老牛也就是区间按照上端点(***不是他们说的下端点)从小打到排序,然后在把护肤品按照第一个值从小到大排序,然后就是给给每一个护肤品尽可能找到一个点,同时这个点的右端点尽可能的小,为了后面别的护肤品留下更大的机会,下面分析枚举代码

第i个护肤品的第j个和第k只奶牛

for(i = 1 ;i <= m ;i ++)

for(j = 1 ;j <= sp[i].c ;j ++)

{

    for(k = 1 ;k <= n ;k ++)

    if(!mark[k] && cow[k].l <= sp[i].p && cow[k].r >= sp[i].p)

    {

          ans ++;

          mark[k] = 1;

          break;  

    }

    if(k == n + 1) 我个人觉得我加的这个地方可以很好的优化掉很多数据,这么加的

    break;         依据是如果第i种护肤品的第j个不能给剩下的奶牛用了,那么第i种

}                  的其他的也没用了,直接break

还有就是这个题目可以最大流来做,至于用那种算法,自己随意吧,我用的是DINC,建图比较简单,我不想说了,如果你做过流的话一下就能想到建图了,其实我感觉这个题目用最大流有点悬,但是AC了,因为边的条数可能达到 (2500*2500+5000)* 2 = 12510000。

贪心
#include<stdio.h>
#include<string.h>
#include<algorithm> #define N 2500 + 10 using namespace std; typedef struct
{
int l ,r;
}COW; typedef struct
{
int p ,c;
}SP; COW cow[N];
SP sp[N];
int mark[N]; bool camp1(COW a ,COW b)
{
return a.r < b.r;
} bool camp2(SP a ,SP b)
{
return a.p < b.p;
} int main ()
{
int n ,m, i ,j ,k;
while(~scanf("%d %d" ,&n ,&m))
{
for(i = 1 ;i <= n ;i ++)
scanf("%d %d" ,&cow[i].l ,&cow[i].r);
for(i = 1 ;i <= m ;i ++)
scanf("%d %d" ,&sp[i].p ,&sp[i].c);
sort(cow + 1 ,cow + n + 1 ,camp1);
sort(sp + 1 ,sp + m + 1 ,camp2); memset(mark ,0 ,sizeof(mark));
int ans = 0;
for(i = 1 ;i <= m ;i ++)
for(j = 1 ;j <= sp[i].c ;j ++)
{
for(k = 1 ;k <= n ;k ++)
if(!mark[k] && cow[k].l <= sp[i].p && cow[k].r >= sp[i].p)
{
ans ++;
mark[k] = 1;
break;
}
if(k == n + 1)
break;
}
printf("%d\n" ,ans);
}
return 0;
} DINIC #include<queue>
#include<stdio.h>
#include<string.h> #define N_node 2500 + 10
#define N_edge (2500 * 2500 + 5000) * 2 + 100
#define INF 1000000000 using namespace std; typedef struct
{
int to ,cost ,next;
}STAR; typedef struct
{
int x ,t;
}DEP; typedef struct
{
int l ,r;
}COW; typedef struct
{
int p ,c;
}SP; COW cow[N_node];
SP sp[N_node];
STAR E[N_edge];
int list[N_node] ,list2[N_node] ,tot;
int deep[N_node];
DEP xin ,tou; int minn(int x ,int y)
{
return x < y ? x : y;
} void add(int a ,int b ,int c)
{
E[++tot].to = b;
E[tot].cost = c;
E[tot].next = list[a];
list[a] = tot; E[++tot].to = a;
E[tot].cost = 0;
E[tot].next = list[b];
list[b] = tot;
} bool BFS_Deep(int s ,int t ,int n)
{
memset(deep ,255 ,sizeof(deep));
xin.x = s ,xin.t = 0;
deep[xin.x] = xin.t;
queue<DEP>q;
q.push(xin);
while(!q.empty())
{
tou = q.front();
q.pop();
for(int k = list[tou.x] ;k ;k = E[k].next)
{
int to = E[k].to;
if(deep[to] != -1 || !E[k].cost)
continue;
xin.x = to ,xin.t = tou.t + 1;
deep[xin.x] = xin.t;
q.push(xin);
}
}
for(int i = 0 ;i <= n ;i ++)
list2[i] = list[i];
return deep[t] != -1;
} int DFS_Flow(int s ,int t ,int flow)
{
if(s == t) return flow;
int nowflow = 0;
for(int k = list2[s] ;k ;k = E[k].next)
{
int to = E[k].to;
int c = E[k].cost;
list2[s] = k;
if(deep[to] != deep[s] + 1 || !c)
continue;
int tmp = DFS_Flow(to ,t ,minn(c ,flow - nowflow));
nowflow += tmp;
E[k].cost -= tmp;
E[k^1].cost += tmp;
if(flow == nowflow) break;
}
if(!nowflow) deep[s] = 0;
return nowflow;
} int DINIC(int s ,int t ,int n)
{
int ans = 0;
while(BFS_Deep(s ,t ,n))
{
ans += DFS_Flow(s ,t ,INF);
}
return ans;
} int main ()
{
int n ,m, i ,j;
while(~scanf("%d %d" ,&n ,&m))
{
memset(list ,0 ,sizeof(list));
tot = 1;
for(i = 1 ;i <= n ;i ++)
{
scanf("%d %d" ,&cow[i].l ,&cow[i].r);
add(0 ,i ,1);
}
for(i = 1 ;i <= m ;i ++)
{
scanf("%d %d" ,&sp[i].p ,&sp[i].c);
add(i + n ,m + n + 1 ,sp[i].c);
} for(i = 1 ;i <= n ;i ++)
for(j = 1 ;j <= m ;j ++)
if(cow[i].l <= sp[j].p && cow[i].r >= sp[j].p)
add(i ,j + n ,1); printf("%d\n" ,DINIC(0 ,n + m + 1 ,n + m + 1));
}
return 0; }



POJ3614奶牛晒阳光DINIC或者贪心的更多相关文章

  1. [NOIP模拟赛][贪心]奶牛晒衣服.

    奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任.洗 ...

  2. NOIP模拟赛-奶牛晒衣服(dry)

    一.奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任 ...

  3. NOIP2012模拟试题【奶牛晒衣服】

    1.奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任 ...

  4. A. 【例题1】奶牛晒衣服

    A . [ 例 题 1 ] 奶 牛 晒 衣 服 A. [例题1]奶牛晒衣服 A.[例题1]奶牛晒衣服 关于很水的题解 既然是最少时间,那么就是由最湿的衣服来决定的.那么考虑烘干机对最湿的衣服进行操作 ...

  5. 洛谷 P1843 奶牛晒衣服

    题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在自然条件下用 ...

  6. [Luogu1843]奶牛晒衣服

    题目大意: 你要晒n件衣服,第i件衣服有w[i]滴水, 每件衣服每秒钟会自然风干a滴水,将这件衣服放入烘干机中每秒钟会烘干a+b滴水. 一秒钟不可以拆开,问晒干所有的衣服至少要多少时间? 思路: 二分 ...

  7. 洛谷——P1843 奶牛晒衣服

    https://www.luogu.org/problem/show?pid=1843#sub 题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣 服就成了很不爽的事情. ...

  8. P1843 奶牛晒衣服

    链接:Miku -------------------------------- 这是一道二分答案的题,我们要二分时间. 对于每件衣服,我们自然是能让它自己蒸发就自己蒸发,这样才是最优的. 那么我闷可 ...

  9. P1843 奶牛晒衣服(二分)

    思路:就是一个模板,只是找最小化而已.在判断函数里面:当湿度<=x*A不判断, 反之sum+=(a[i]-x*A)/B+(a[i]-x*A)%B?1:0; #include<iostrea ...

随机推荐

  1. JVM笔记 -- JVM经历了什么?

    Sun Classic VM 世界上第一款商用 Java 虚拟机,JDK1.4 已经淘汰. 内部只有解释器,可以自己外挂JIT编译器,但是二者只能使用其一,不能配合工作. hotspot 内置了该虚拟 ...

  2. vue全家桶和react全家桶

    vue全家桶:vue  +  vuex (状态管理)  + vue-router (路由) + vue-resource +axios +elementui react全家桶 : react + re ...

  3. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  4. Announcing cnblogs-hardening 1.0 Preview 1

    Release Notes Write about coding Note About coding Share about coding Talk about coding Comment abou ...

  5. go中semaphore(信号量)源码解读

    运行时信号量机制 semaphore 前言 作用是什么 几个主要的方法 如何实现 sudog 缓存 acquireSudog releaseSudog semaphore poll_runtime_S ...

  6. limanmanExp数据库审计设计思路与重要代码

    目的 在代码审计的时候经常会想看看某个访问会触发哪些数据库操作.目前已知的数据库审计有多家大型厂商的设备,还有seay源码审计系统中的数据库监控1.0 但是.开源的已知的就只有seay源码审计系统中的 ...

  7. maven 打包和构建的Linux命令(mvn)

    maven 打包构建相关命令 命令 mvn clean package 依次执行clean.resources.compile.testResources.testCompile.test.jar(打 ...

  8. 第25 章 : Kubernetes 网络模型进阶

    Kubernetes 网络模型进阶 本文将主要分享以下五个方面的内容: Kubernetes 网络模型来龙去脉 Pod 究竟如何上网? Service 究竟怎么工作? 啥?负载均衡还分内部外部? 思考 ...

  9. " "( 双引号) 与 ' '( 单引号) 差在哪?-- Shell十三问<第四问>

    " "( 双引号) 与 ' '( 单引号) 差在哪?-- Shell十三问<第四问> 经过前面两章的学习,应该很清楚当你在 shell prompt 后面敲打键盘.直到 ...

  10. 干货!Apache Hudi如何智能处理小文件问题

    1. 引入 Apache Hudi是一个流行的开源的数据湖框架,Hudi提供的一个非常重要的特性是自动管理文件大小,而不用用户干预.大量的小文件将会导致很差的查询分析性能,因为查询引擎执行查询时需要进 ...