贪心题。

如何找出正确的贪心策略呢?

我一开始是以为按照l排序,然后从1到n遍历,挑最大的满足的防晒霜。后来发现不行。挑最小的也不行。

看了题解发现是从n到1遍历。

为什么?

因为i-1的l比i的l承受能力要大些,我们只需考虑r!

而i+1的l比i的l承受能力要小一些!我们要两头考虑!失败!

然后是一些实现小细节了,包括手写二分......

 #include <cstdio>
#include <algorithm>
/// poj 3614
using namespace std;
const int N = ;
int n, L;
struct Cow{
int a, b;
bool operator < (const Cow &x) const {
if(this->a != x.a) {
return this->a < x.a;
}
return this->b < x.b;
}
}c[N], a[N];
int main() {
scanf("%d%d", &n, &L);
for(int i = ; i <= n; i++) {
scanf("%d%d", &c[i].a, &c[i].b);
}
for(int i = ; i <= L; i++) {
scanf("%d%d", &a[i].a, &a[i].b);
}
sort(c + , c + n + );
sort(a + , a + L + );
int ans = ;
a[L + ].a = 0x7f7f7f7f;
/*
printf("\n");
for(int i = 1; i <= n; i++) {
printf("%d %d\n", c[i].a, c[i].b);
}
printf("\n");
for(int i = 1; i <= L + 1; i++) {
printf("%d %d\n", a[i], sum[i]);
}
printf("\n");
*/
for(int i = n; i >= ; i--) {
int p, l = , r = L + ;
while(l < r) {
p = (l + r) >> ;
if(a[p].a <= c[i].b) {
l = p + ;
}
else r = p;
}
if(a[p].a > c[i].b) p--;
//printf("%d ", p);
while(!a[p].b && a[p].a >= c[i].a) {
p--;
}
//printf("%d\n", p);
if(p && a[p].a <= c[i].b && a[p].a >= c[i].a) {
ans++;
a[p].b--;
}
}
printf("%d", ans);
return ;
}

AC代码

poj3614 Sunscreen的更多相关文章

  1. POJ3614 Sunscreen 优先队列+贪心

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  2. POJ--3614 Sunscreen(贪心)

    题目 3614 Sunscreen 2500*2500直接排序暴力贪心 #include<iostream> #include<cstring> #include<alg ...

  3. poj3614 Sunscreen(贪心+STL)

    https://vjudge.net/problem/POJ-3614 如果这不是优先队列专题里的,我可能不一定能想到这么做. 结构体命名得有点不好,解题中看着Edge这个不恰当的命名,思路老是断掉. ...

  4. poj3614 Sunscreen【贪心】

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11772   Accepted: 4143 Descri ...

  5. [POJ3614]Sunscreen (贪心)

    题意 (依然来自洛谷) 有C个奶牛去晒太阳 (1 <=C <= 2500),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值,太大就晒伤了,太小奶牛没感觉. 而刚开始的阳光的强度非常 ...

  6. POJ3614 Sunscreen 贪心入门

    题目大意 给出一些区间和一些点,一个点如果在一个区间内,那么此两者可以匹配.问匹配数最大是多少. 题解 这样的题我们一般都是站在区间上去找与其配对的点.我们可以得到如下性质: 对于一段区间\([l_1 ...

  7. 【POJ3614 Sunscreen】【贪心】

    题面: 有c头牛,需要的亮度在[min_ci,max_ci]中,有n种药,每种m瓶,可以使亮度变为v 问最多能满足多少头牛 算法 我们自然考虑贪心,我们首先对每头牛的min进行排序,然后对于每种药,将 ...

  8. POJ3614 [USACO07NOV]防晒霜Sunscreen

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9333   Accepted: 3264 Descrip ...

  9. Sunscreen [POJ3614] [贪心]

    描述 C (1 ≤ C ≤ 2500) 头奶牛在海滩边晒太阳,要避免在日光浴时产生难看的灼伤,每头奶牛必须用防晒霜覆盖它的皮肤.第 i 头奶牛有一个最小和最大 SPF 值 (1 ≤ minSPFi ≤ ...

随机推荐

  1. UTC时间、GMT时间、本地时间、Unix时间戳

    引用: https://blog.csdn.net/u012102306/article/details/51538574 https://blog.csdn.net/foxir/article/de ...

  2. springmvc通过HttpServletRequest进行参数传递

    @RequestMapping("/itemEdit") public String itemEdit(HttpServletRequest request, Model mode ...

  3. 关于vagrant一个虚拟机搭建多个项目配置(总结)

    问题1:执行vagrant status命令,报错,没有找到命令,翻译:“vargrant bash命令没有找到.” 解答:因为在/home目录中,所有无法执行该命令,需要切换到外部进行执行 问题2: ...

  4. centos6.5安装配置NTP,集群各机器间时间同步

    试验环境 提君博客原创 >>提君博客原创  http://www.cnblogs.com/tijun/  << IP 主机名 角色 描述 同步方式 192.168.11.11 ...

  5. 《笔记》Python itertools的groupby分组数据处理

    今天遇到这么一个需求,需要将这样的数据进行分组处理: [(, ), (, ), (, ), (, ), (, ), (, )] 处理之后我可能需要得到这样的结果: [(, (, , (, , (, ) ...

  6. css last

  7. js模拟ctrl+c的问题

    1.这种方式只可以对显示的textbox和textarea使用,对于display:none和visibility hidden 以及其他标签无效 var message = document.get ...

  8. matlab中randn(‘state’)

    matlab中randn(‘state’)转载:http://www.cnblogs.com/rong86/p/3572284.html randn('state') 随机数都是由RandStream ...

  9. RESTful 架构详解

    RESTful 架构详解 分类 编程技术 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次 ...

  10. fastjson 操作

    1.String 转 bean String addition = ...; CoffeeFormula formula = JSON.parseObject(addition, new TypeRe ...