BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜
我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1707
显然,如果一头奶牛能找到自己可以用的防晒霜就直接用,它用这一瓶防晒霜比它不用防晒霜留给别的牛用会更优,因为防晒霜与奶牛是一一对应的关系。那么问题就转化成了,如果一头奶牛有多瓶防晒霜可以用,用哪一瓶更好?
假设有两瓶防晒霜的\(spf\)值分别为\(x\)和\(y\),且\(x<y\)。由于奶牛在无序的情况下我们并不能明显的区分出\(x\)与\(y\)孰轻孰重,所以我们先将奶牛按照\(maxspf\)为第一关键字,\(minspf\)为第二关键字从小到大排序。对于第\(i\)头奶牛都可以接受的\(x\)和\(y\),对于\(i\)后面的奶牛只有这三种情况:
\(1\)、\(x\)和\(y\)都可用
\(2\)、\(x\)和\(y\)都不可用
\(3\)、\(x\)不可用,\(y\)可用
因为第\(3\)种情况,第\(i\)头奶牛使用\(spf\)值为\(x\)的防晒霜显然更优。所以每一头牛只需要找到在自己能接受范围内并且\(spf\)值最小的那一瓶防晒霜就可以了。
时间复杂度:\(O(nm)\)
空间复杂度:\(O(n)\)
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;const int maxn=2505;int n,m,ans;int read() {int x=0,f=1;char ch=getchar();for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';return x*f;
}struct Cows {int min_spf,max_spf;bool operator<(const Cows &a)const {if(max_spf==a.max_spf)return min_spf<a.min_spf;return max_spf<a.max_spf;}
}c[maxn];struct SPF {int v,sum;bool operator<(const SPF &a)const {return v<a.v;}
}s[maxn];bool find(int l,int r) {for(int i=1;i<=m;i++)if(s[i].v>=l&&s[i].v<=r&&s[i].sum) {//防晒霜spf值在l到r内并且还有s[i].sum--;return 1;}return 0;
}int main() {n=read(),m=read();for(int i=1;i<=n;i++) {c[i].min_spf=read();c[i].max_spf=read();}sort(c+1,c+n+1);//牛排序for(int i=1;i<=m;i++) {s[i].v=read();s[i].sum=read();}sort(s+1,s+m+1);//防晒霜排序for(int i=1;i<=n;i++)if(find(c[i].min_spf,c[i].max_spf))ans++;//如果有可以用的防晒霜就用printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/AKMer/p/9776705.html
BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜相关推荐
- bzoj1707[Usaco2007 Nov]tanning分配防晒霜*
bzoj1707[Usaco2007 Nov]tanning分配防晒霜 题意: n头牛,第i头适应spf值在ai到bi之间的防晒霜.m种防晒霜,每种spf值为ci,有di瓶,问最多多少奶牛能得到合适的 ...
- BZOJ1707 : [Usaco2007 Nov]tanning分配防晒霜
S向每头奶牛连边,容量1 每个防晒霜向T连边,容量cover 每头奶牛向SPF在自己范围内的防晒霜连边,容量inf 用线段树优化建图跑最大流即可. #include<cstdio> con ...
- BZOJ1707: [Usaco2007 Nov]tanning分配防晒霜
n头牛,第i头要SPF(某个参数)在Lowi到Highi的药,药m种每种SPF为Vi,数量为Numi,求最多能满足几头牛. 方法一:什么都看不出来,只知道第i头牛能和一些药匹配,于是网络流,牛向药连容 ...
- 【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜
[算法]贪心扫描线(+堆) [题意]给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数. [题解] 参考:[bzoj1707]: [U ...
- 1707: [Usaco2007 Nov]tanning分配防晒霜
1707: [Usaco2007 Nov]tanning分配防晒霜 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 548 Solved: 262 [S ...
- BZOJ 1707 [Usaco2007 Nov]tanning分配防晒霜
1707: [Usaco2007 Nov]tanning分配防晒霜 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 810 Solved: 387 [S ...
- 1707. [Usaco2007 Nov]tanning分配防晒霜
传送门 一眼贪心,先把每头牛的忍受范围变成区间 对于每个防晒霜,肯定优先给,能给的,区间右端点最小的 因为右端点大的之后还有更多机会,然后搞一个 $set$ 什么的乱维护一下就行 改了半天原来是要开 ...
- [Usaco2007 Nov]tanning分配防晒霜
Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1<=C<=2500)C(1 头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...
- BZOJ——T 1707: [Usaco2007 Nov]tanning分配防晒霜
http://www.lydsy.com/JudgeOnline/problem.php?id=1707 Time Limit: 5 Sec Memory Limit: 64 MB Submit: ...
最新文章
- 深度学习中的注意力机制(二)
- 在C#用GDI+实现图形图像的任意变形效果(转载)
- 任务间资源共享问题示例
- 【JFreeChart】JFreeChart—输出组合图表
- java Arrays Generic
- 浅谈html的语义化和一些简单优化,html标签语义化
- Ubuntu 16.04 安装 cuda 7.5.run BEGIN failed--compilation aborted at ./cuda-installer.pl line 5
- 【算法精讲】分享一道很不错的算法题
- UI设计素材模板|首页解析
- Jenkins 配置mirrors
- paip.hadoop的应用研究总结
- 凸包问题(包含蛮力算法和快速凸包算法)+最优二叉查找树详解
- 系统集成项目管理工程师题型分析及章节占分比
- 计算机科学与导论知识点总结,计算机科学导论复习资料整理.doc
- Java实现文件传输
- 阿里云RDS Serverless测评
- 终于知道为啥网页不让我复制粘贴了!
- vue3+ts+vite 路径别名配置
- 公路多孔箱涵设计_箱涵结构设计.pdf
- 【算法】妙不可言---算法复杂性