题目大意:在[0,10000]上给出n个区间,要求在区间选整数点,每个区间至少包含两个点,问至少要几个点。题目保证有解决方案。

题目分析:

  我们做过在区间上至少包含一个点的题目。类似的方法,我们先排序后去掉区间包含的情况。接着我们贪心。对于第i个区间,取最后两个点,如果第i+1个区间包含这两个点,那么跳到第i+2个区间。如果第i+1个区间一个点也不包括,那么对于第i+1个区间取最后两个点。如果只包含一个点,那么在第i+1个区间取最后一个点,继续判断。

题目代码:

  

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std; struct edge{int to,w;}; int n;
vector <edge> g[];
int d[];
queue<int> que;
int maxx; void read(){
for(int i=;i<=;i++) g[i].clear();
maxx = -;
for(int i=;i<=n;i++){
int x,y; scanf("%d%d",&x,&y);
maxx = max(maxx,y+);
x++;y++;
edge ed;ed.to = y;ed.w = ;
g[x-].push_back(ed);
}
for(int i=;i<=maxx;i++){
edge ed;ed.to=i+;ed.w=;
g[i].push_back(ed);
ed.to=i;ed.w=-;
g[i+].push_back(ed);
}
} void work(){
for(int i=;i<=maxx;i++) d[i]=-;
que.push();
d[] = ;
while(!que.empty()){
int k = que.front();que.pop();
for(int i=;i<g[k].size();i++){
if(g[k][i].w+d[k] > d[g[k][i].to]){
d[g[k][i].to] = g[k][i].w + d[k];
que.push(g[k][i].to);
}
}
}
printf("%d\n",d[maxx]);
} int main(){
scanf("%d",&n);
read();
work();
return ;
}

思考:我们不妨对问题加以拓展。

  问题一:我们做过一个区间选一个点的题,做过一个区间选两个点的题。那么当一个区间选n个点时怎么去做?

  问题二:上面的区间选点数量都是相同的,当区间选点数量不同时怎么做?

解法:

  对于问题一:很容易就能想出拓展方法,每次对每个区间都选最后n个点,容易证明这是最优的。

  对于问题二:发现上面的贪心无法使用,需要另辟蹊径。不妨令s[i]表示前i个点被选的情况。那么有s[r]-s[l-1]>=c[i]。c[i]该区间应选点数。

        由于这里有很多个不等式,又要求最小化s[10000],容易思考到这可能是要用到线性规划去解决。

        接着我们打了一个单纯形法。

        

        收获了一个TLE。仔细想想就会发现问题并不是这么难。这里的不等式并不如线性规划里面的那么复杂。

        那么我们可以建图跑最长路。这就是答案。具体怎么建图可以参考网上其它人的博客。我不想再写下去了。

POJ1716 贪心的更多相关文章

  1. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

  2. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  3. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  5. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  6. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 486  Solved: 266[Submit][Sta ...

  7. code vs 1098 均分纸牌(贪心)

    1098 均分纸牌 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 有 N 堆纸牌 ...

  8. 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心

    SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...

  9. 【贪心】HDU 1257

    HDU 1257 最少拦截系统 题意:中文题不解释. 思路:网上有说贪心有说DP,想法就是开一个数组存每个拦截系统当前最高能拦截的导弹高度.输入每个导弹高度的时候就开始处理,遍历每一个拦截系统,一旦最 ...

随机推荐

  1. 登入时session的处理方式

    暂时理解不够彻底  有空在详细介绍,先记录代码 1:创建一个工具类  存取当前登录用户 package com.liveyc.eloan.util; import javax.servlet.http ...

  2. NYOJ 221 Tree (二叉树)

    题目链接 描述 Little Valentine liked playing with binary trees very much. Her favorite game was constructi ...

  3. ruby post json

    require 'net/http' require 'json' uri = URI('http://localhost/test1.php') req = Net::HTTP::Post.new ...

  4. PEB及LDR链

    PEB地址的取得在NT内核系统中fs寄存器指向TEB结构,TEB+0x30处指向PEB结构,PEB+0x0c处指向PEB_LDR_DATA结构,PEB_LDR_DATA+0x1c处存放一些指向动态链接 ...

  5. kvm命令参数记录

    /usr/libexec/qemu-kvm -cpu host -m 1024 -enable-kvm -drive file=/var/lib/libvirt/images/zxc_linux1.i ...

  6. 使用 Xtrabackup 在线对MySQL做主从复制【转】

    1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldu ...

  7. UFT12.续期的操作方法

    安装完毕UFT后,页面中报install错误,此时报此错误的原因是因为UFT的许可证过期了,解决方法如下: 方法是找到C:\ProgramData目录下的SafeNet Sentinel文件夹将其删除 ...

  8. Pylint在项目中的使用

    需求背景: Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. Pylint 是一个 Python 工具,除了平常代码分析 ...

  9. scrollview 滚动布局

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"    android:layou ...

  10. Templated Helper Methods(二)

      1.Label and Display Elements   2.Whole-Model Templated Helpers     3.Using Metadata to Control Edi ...