Intervals(poj1201)
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 24134 | Accepted: 9177 |
Description
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
Output
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;
}
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 13511 | Accepted: 5756 |
Description
Write a program that: finds the minimal number of elements in a set containing at least two different integers from each interval.
Input
Output
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)的更多相关文章
- Integer Intervals(贪心)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12123 Accepted: 5129 Description An i ...
- 【leetcode】Merge Intervals(hard)
Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...
- 1089 Intervals(中文版)
开始前先讲几句废话:这个题我开始也没看懂,后来借助百度翻译,明白了大概是什么意思. 试题描述 输入一个n,然后输入n组数据,每个数据有两个数,代表这个闭区间是从几到几.然后看,如果任意两个闭区间有相重 ...
- LeetCode: 56. Merge Intervals(Medium)
1. 原题链接 https://leetcode.com/problems/merge-intervals/description/ 2. 题目要求 给定一个Interval对象集合,然后对重叠的区域 ...
- [LeetCode]题解(python):056-Merge Intervals
题目来源 https://leetcode.com/problems/merge-intervals/ Given a collection of intervals, merge all overl ...
- poj1716 Integer Intervals(差分约束)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Integer Intervals Time Limit: 1000MS Me ...
- POJ 1384 Intervals (区间差分约束,根据不等式建图,然后跑spfa)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1384 Intervals Time Limit: 10000/5000 MS (Java/Others ...
- 【POJ 1716】Integer Intervals(差分约束系统)
id=1716">[POJ 1716]Integer Intervals(差分约束系统) Integer Intervals Time Limit: 1000MS Memory L ...
- 【POJ 1201】 Intervals(差分约束系统)
[POJ 1201] Intervals(差分约束系统) 11 1716的升级版 把原本固定的边权改为不固定. Intervals Time Limit: 2000MS Memory Limit: ...
随机推荐
- FFmpeg笔记:使用MSVC工具链编译Windows版本静态库、动态库
2019年3月开始,为了将音视频编解码功能集成到Cocos2d-x中,开始接触到FFmpeg: 当时开发环境还在Mac下,编译FFmpeg相比现在用Windows平台要方便的多: 最近,公司内部有个U ...
- Vue3项目搭建规范
Vue3项目搭建规范 一. 代码规范 1.1 集成editorconfig配置 EditorConfig有助于为不同IDE编辑器上维护一致的编码风格 安装插件:EditorConfig for VS ...
- A Child's History of England.1
A Child's History of England, by Charles Dickens (狄更斯) CHAPTER I ANCIENT ENGLAND AND THE ROMANS If y ...
- 自定义控件CustomAlertView
[记录][完整代码最下] 效果如下: 可行性分析: 由于系统自带的UIAlertView样式简单,只有两种样式,想要理想的样式就要自定义控件了 文件名取为:CustomAlertView 创建文件如下 ...
- Oracle—数据库名、数据库实例名、数据库域名、数据库服务名的区别
Oracle-数据库名.数据库实例名.数据库域名.数据库服务名的区别 一.数据库名 1.什么是数据库名 数据库名就是一个数据库的标识,就像人的身份证号一样.他用参数DB_NAME表示,如果 ...
- UIImageView总结
UIImageView UIKit框架提供了非常多的UI控件,但并不是每一个都很常用,有些控件可能1年内都用不上,有些控件天天用,比如UIButton.UILabel.UIImageView.UITa ...
- 【编程思想】【设计模式】【行为模式Behavioral】观察者模式Observer
Python转载版 https://github.com/faif/python-patterns/blob/master/behavioral/observer.py #!/usr/bin/env ...
- 2.VUEJS-安装
Vue.js 安装 1.独立版本 我们可以在 Vue.js 的官网上直接下载 vue.min.js 并用 <script> 标签引入. 2.使用 CDN 方法 以下推荐国外比较稳定的两个 ...
- Jenkins获取发版人的人名
目录 一.简介 二.自由风格使用 三.pipeline使用 脚本式 声明式 一.简介 Jenkins在构建记录中,是可以看到谁点的构建的,但pipeline中的全局变量,默认是不支持获取当前构建任务的 ...
- Nginx平滑升级版本
目录 一.简介 说明 环境 二.安装 三.使用验证 一.简介 说明 Nginx版本迭代迅速,新版本提供了很多功能,好在Nginx支持不停服务进行升级. 版本之间差距不要太大,不然会导致很多东西不支持 ...