Intervals
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 24134   Accepted: 9177

Description

You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. 
Write a program that: 
reads the number of intervals, their end points and integers c1, ..., cn from the standard input, 
computes the minimal size of a set Z of integers which has at least ci common elements with interval [ai, bi], for each i=1,2,...,n, 
writes the answer to the standard output. 

Input

The first line of the input contains an integer n (1 <= n <= 50000) -- the number of intervals. The following n lines describe the intervals. The (i+1)-th line of the input contains three integers ai, bi and ci separated by single spaces and such that 0 <= ai <= bi <= 50000 and 1 <= ci <= bi - ai+1.

Output

The output contains exactly one integer equal to the minimal size of set Z sharing at least ci elements with interval [ai, bi], for each i=1,2,...,n.

Sample Input

5
3 7 3
8 10 3
6 8 1
1 3 1
10 11 1

Sample Output

6
差分约束系统模板题;转换为最短路来求解,关键是建图;
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<queue>
#include<algorithm>
#include<iostream>
#include<vector>
void spaf(int n,int ans);
using namespace std;
const int N=1e9;
int d[30005*5];
bool flag[30005*5];
void add(int x,int y,int z,int co);
typedef struct pp
{
int x;
int y;
int cost;
int pre;
}ss;ss aa[30005*5];
int id[30005*5];
int main(void) {
int i,j,k,p,q;int z;
int maxx=0;
while(scanf("%d",&k)!=EOF) {int ans=0;
fill(id,id+30005*5,-1);
while(k--) {
scanf("%d %d %d",&p,&q,&z);
if(maxx<p)maxx=p;
if(maxx<q)maxx=q;
add(p-1,q,ans++,-z);
}
for(i=1; i<=maxx; i++) {
add(i-1,i,ans++,0);
add(i,i-1,ans++,1);
}spaf(0,maxx);printf("%d\n",-d[maxx]);
}
} void spaf(int n,int ans) {
fill(d,d+30005*5,N);
d[n]=0;
queue<int>que;int i;
memset(flag,0,sizeof(flag));
flag[n]=true;
que.push(n);
while(!que.empty()) {
int c=que.front();
que.pop();
flag[c]=false;
int x=id[c];
while(x!=-1)
{
int uu=aa[x].y;
if(d[uu]>d[c]+aa[x].cost)
{d[uu]=d[c]+aa[x].cost;
if(!flag[uu])
{que.push(uu);
flag[uu]=true;
}
}
x=aa[x].pre;
} }
}
void add(int x,int y,int z,int co)
{
aa[z].x=x;
aa[z].y=y;
aa[z].cost=co;
aa[z].pre=id[x];
id[x]=z;
}
Integer Intervals
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 13511   Accepted: 5756

Description

An integer interval [a,b], a < b, is a set of all consecutive integers beginning with a and ending with b. 
Write a program that: finds the minimal number of elements in a set containing at least two different integers from each interval.

Input

The first line of the input contains the number of intervals n, 1 <= n <= 10000. Each of the following n lines contains two integers a, b separated by a single space, 0 <= a < b <= 10000. They are the beginning and the end of an interval.

Output

Output the minimal number of elements in a set containing at least two different integers from each interval.

Sample Input

4
3 6
2 4
0 2
4 7

Sample Output

4
 1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<queue>
5 #include<algorithm>
6 #include<iostream>
7 #include<vector>
8 void spaf(int n,int ans);
9 using namespace std;
10 const int N=1e9;
11 int d[30005];
12 bool flag[30005];
13 void add(int x,int y,int z,int co);
14 typedef struct pp
15 {
16 int x;
17 int y;
18 int cost;
19 int pre;
20 }ss;ss aa[30005];
21 int id[30005];
22 int main(void) {
23 int i,j,k,p,q;
24 int maxx=0;
25 while(scanf("%d",&k)!=EOF) {int ans=0;
26 fill(id,id+30005,-1);
27 while(k--) {
28 scanf("%d %d",&p,&q);
29 p++;
30 q++;
31 if(maxx<p)maxx=p;
32 if(maxx<q)maxx=q;
33 add(p-1,q,ans++,-2);
34 }
35 for(i=1; i<=maxx; i++) {
36 add(i-1,i,ans++,0);
37 add(i,i-1,ans++,1);
38 }spaf(0,maxx);printf("%d\n",-d[maxx]);
39 }
40 }
41
42 void spaf(int n,int ans) {
43 fill(d,d+30005,N);
44 d[n]=0;
45 queue<int>que;int i;
46 memset(flag,0,sizeof(flag));
47 flag[n]=true;
48 que.push(n);
49 while(!que.empty()) {
50 int c=que.front();
51 que.pop();
52 flag[c]=false;
53 int x=id[c];
54 while(x!=-1)
55 {
56 int uu=aa[x].y;
57 if(d[uu]>d[c]+aa[x].cost)
58 {d[uu]=d[c]+aa[x].cost;
59 if(!flag[uu])
60 {que.push(uu);
61 flag[uu]=true;
62 }
63 }
64 x=aa[x].pre;
65 }
66
67 }
68 }
69 void add(int x,int y,int z,int co)
70 {
71 aa[z].x=x;
72 aa[z].y=y;
73 aa[z].cost=co;
74 aa[z].pre=id[x];
75 id[x]=z;
76 }

Intervals(poj1201)的更多相关文章

  1. Integer Intervals(贪心)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12123   Accepted: 5129 Description An i ...

  2. 【leetcode】Merge Intervals(hard)

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  3. 1089 Intervals(中文版)

    开始前先讲几句废话:这个题我开始也没看懂,后来借助百度翻译,明白了大概是什么意思. 试题描述 输入一个n,然后输入n组数据,每个数据有两个数,代表这个闭区间是从几到几.然后看,如果任意两个闭区间有相重 ...

  4. LeetCode: 56. Merge Intervals(Medium)

    1. 原题链接 https://leetcode.com/problems/merge-intervals/description/ 2. 题目要求 给定一个Interval对象集合,然后对重叠的区域 ...

  5. [LeetCode]题解(python):056-Merge Intervals

    题目来源 https://leetcode.com/problems/merge-intervals/ Given a collection of intervals, merge all overl ...

  6. poj1716 Integer Intervals(差分约束)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Integer Intervals Time Limit: 1000MS   Me ...

  7. POJ 1384 Intervals (区间差分约束,根据不等式建图,然后跑spfa)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1384 Intervals Time Limit: 10000/5000 MS (Java/Others ...

  8. 【POJ 1716】Integer Intervals(差分约束系统)

    id=1716">[POJ 1716]Integer Intervals(差分约束系统) Integer Intervals Time Limit: 1000MS   Memory L ...

  9. 【POJ 1201】 Intervals(差分约束系统)

    [POJ 1201] Intervals(差分约束系统) 11 1716的升级版 把原本固定的边权改为不固定. Intervals Time Limit: 2000MS   Memory Limit: ...

随机推荐

  1. java面试题目偏基础

    一.JAVA基础篇-概念1.简述你所知道的Linux:Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机(An ...

  2. jsp页面中HTML注释与jsp注释的区别

    jsp页面中HTML注释与jsp注释的区别 HTML注释 html注释是 : HTML注释:参与编译,会生成到源码中. 所以,不能使用html注释EL表达式和JSTL标签库 jsp注释 jsp注释是 ...

  3. 大数据学习day14-----第三阶段-----scala02------1. 元组 2.类、对象、继承、特质 3.函数(必须掌握)

    1. 元组 映射是K/V对偶的集合,对偶是元组的最简单的形式,元组可以装着多个不同类型的值 1.1 特点 元组相当于一个特殊的数组,其长度和内容都可变,并且数组中可以装任何类型的数据,其主要用处就是存 ...

  4. jenkins的sonarqube之代码检测的两种方法

    #:sonarqube下载地址,我们安装6.7  高版本已经不支持MySQL和Mariadb(最小3G内存) https://www.sonarqube.org/downloads/ #:安装文档 h ...

  5. 基于jar的Spring Boot工程

    一.Spring Boot简介 Spring Boot是由Pivotal[ˈpɪvətl]团队(一家做大数据的公司)提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架 ...

  6. 1.ElasticSearch相关概念

    1.为ElasticSearch设置跨域访问 http.cors.enabled: truehttp.cors.allow-origin: "*" 2.什么是ElasticSear ...

  7. 『学了就忘』Linux启动引导与修复 — 72、Linux系统的修复模式(单用户模式)

    目录 1.单用户模式常见的错误修复 2.通过单用户模式修改系统密码 (1)进入grub启动引导程序中 (2)编辑相应的系统启动内容 (3)编辑grub配置文件内容 (4)启动系统 (5)修改root用 ...

  8. 一文详解 纹理采样与Mipmap纹理——构建山地渲染效果

    在开发一些相对较大的场景时,例如:一片铺满相同草地纹理的丘陵地形,如果不采用一些技术手段,就会出现远处的丘陵较近处的丘陵相比更加的清晰的视觉效果,而这种效果与真实世界中近处的物体清晰远处物体模糊的效果 ...

  9. 转:UITableView学习笔记

    UITableView学习笔记        作者:一片枫叶 看TableView的资料其实已经蛮久了,一直想写点儿东西,却总是因为各种原因拖延,今天晚上有时间静下心来记录一些最近学习的 TableV ...

  10. heap exploit about ptmalloc in glibc version 2.31

    学习的一下高版本的libc的利用方式. 项目地址:https://github.com/StarCross-Tech/heap_exploit_2.31 tcache_dup 源代码: 1 #incl ...