贪心题。

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

我一开始是以为按照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. 查看端口占用cmd命令

    查看端口被占用的进程: 在任务管理器中结束进程:

  2. JQ判断在不同分辨率电脑下使用不同的banner尺寸

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 解决 Redis 只读不可写的问题

    本文转载:https://blog.csdn.net/han_cui/article/details/54767208?tdsourcetag=s_pcqq_aiomsg 解决 Redis 只读不可写 ...

  4. C-Lodop打印服务没启动怎么办

    C-Lodop作为服务,解决了高版本火狐谷歌不支持np插件问题,支持跳出来浏览器的限制,支持所有浏览器,默认是只需安装一次,以后每次开机自启动,但是如果禁止了开机启动项等问题,会造成之后突然出现没启动 ...

  5. LODOP打印控件进行批量打印

    Lodop打印控件批量打印的方式:1.批量打印每页内容相同的:(1)批量打印相同内容的很多纸张,可以设置打印份数,把该内容打印出多份.2.批量打印每页不同内容的:(1)通过在一个任务中分页,循环添加页 ...

  6. 前端部分-CSS基础介绍

    CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素.也就是定义相应的标签语言来定制显示样式达到一定的显示效果. 每个CSS样式由两个组成部分:选择器和 ...

  7. Spring 使用介绍(七)—— Spring事务

    一.数据库事务概述 1.基本介绍 事务必需满足ACID(原子性.一致性.隔离性和持久性)特性,缺一不可: 原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做 ...

  8. 使用Guava获取某一个类的指定超类上的泛型Type T

    package com.geostar.gfstack.operationcenter.log.common.hibernate; import com.geostar.gfstack.operati ...

  9. alter table,复制, 单表查询

    修改表 语法:1. 修改表名      ALTER TABLE 表名                           RENAME 新表名; 2. 增加字段      ALTER TABLE 表名 ...

  10. Codeforces Round #545 Div1 题解

    Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...