Description:

给定n个闭区间[ai,bi] 和n个整数ci,你需要构造一个集合Z,使得对于任何的i∈[1,n],Z中满足x∈[ai,bi]的x不少于ci个 求这样的整数集合Z至少包含多少个数

思路:建立差分约束系统的模型s[k]表示0~k间选取多少个整数,根据题意有s[bi] -  s[ai - 1] ≥ c

不过还要增加一些隐含条件   s[k] - s[k - 1] ≥ 0,s[k]  - s[k  -1] ≤ 1

因此,将输入最大的数bi作为图中的节点,从每个k - 1到k连长度为0的有向边,k到k - 1连长度为 -1 的有向边。从每个到ai - 1 到 bi 连长度为ci的有向边

起点为0,终点为max(bi

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
const int N = , M = 1e6 + ;
typedef pair<int,int> P; int head[N], now;
struct edges{
int to, next, w;
}edge[M<<];
void add(int u, int v, int w){ edge[++now] = {v, head[u], w}; head[u] = now;} int n, d[N], s;
bool vis[N];
queue<int> q;
void spfa(){
d[s] = ;
q.push(s);
vis[s] = ;
while(!q.empty()){
int x = q.front(); q.pop();
vis[x] = ;
for(int i = head[x]; i; i = edge[i].next){
int v = edge[i].to;
if(d[v] < d[x] + edge[i].w || (d[v] == d[x] + edge[i].w && v == x + )){
d[v] = d[x] + edge[i].w;
if(!vis[v]) q.push(v), vis[v] = ;
}
}
}
}
int main(){
scanf("%d", &n);
int x, y, z;
int mx = ;
for(int i = ; i <= n; i++){
scanf("%d%d%d", &x, &y, &z);
x++, y++; // 全都向上加1,防止数组向下溢出
mx = max(mx, y);
add(x - , y, z);
}
for(int i = ; i <= mx; i++)
add(i - , i, ), add(i, i - , -);
s = ;
spfa();
printf("%d\n",d[mx]);
return ;
}

poj 1201 TYVJ 1415 Intervals的更多相关文章

  1. poj 1201/zoj 1508 intervals 差分约束系统

      // 思路 : // 图建好后 剩下的就和上一篇的 火烧连营那题一样了 求得解都是一样的 // 所以稍微改了就过了 // 最下面还有更快的算法 速度是这个算法的2倍#include <ios ...

  2. poj 1201 Intervals 解题报告

    Intervals Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %lld & %llu Submit Statu ...

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

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

  4. POJ 1201 &amp;&amp; HDU 1384 Intervals(差动制动系统)

    职务地址:POJ 1201   HDU 1384 依据题目意思.能够列出不等式例如以下: Sj-Si>=c; Si-S(i-1)>=0; S(i-1)-Si>=-1; 然后用最短路s ...

  5. POJ 1201 Intervals || POJ 1716 Integer Intervals 差分约束

    POJ 1201 http://poj.org/problem?id=1201 题目大意: 有一个序列,题目用n个整数组合 [ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai, ...

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

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

  7. POJ 1201 差分方程分析

    POJ 1201 给你N个闭区间.每个区间分别为[ai,bi],你必须在这个区间上至少取ci个不同的整数. 现要求所有区间满足各自的条件. 问最少需要选多少个点. 例如[3,7](3)  [8,10] ...

  8. POJ 3225 Help with Intervals(线段树)

    POJ 3225 Help with Intervals 题目链接 集合数字有的为1,没有为0,那么几种操作相应就是置为0或置为1或者翻转,这个随便推推就能够了,然后开闭区间的处理方式就是把区间扩大成 ...

  9. POJ 1201 &amp; HDU1384 &amp; ZOJ 1508 Intervals(差分约束+spfa 求最长路径)

    题目链接: POJ:http://poj.org/problem?id=1201 HDU:http://acm.hdu.edu.cn/showproblem.php? pid=1384 ZOJ:htt ...

随机推荐

  1. jquery 节点

    $("ul li:eq(3)")  // 元素的index位置工0开始计数,所以这里的3实际为第4个元素 $("ul").find("li" ...

  2. python更新mysql数据

    >>>cur.execute("update users set username=%s where id=2",("mypython")) ...

  3. 多线程编程以及socket编程_Linux程序设计4chapter15

    看了Linux程序设计4中文版,学习了多线程编程和socket编程.本文的程序参考自Linux程序设计4的第15章. 设计了一个客户端程序,一个服务端程序.使用TCP协议进行数据传输. 客户端进程创建 ...

  4. Android面试收集录 蓝牙与WiFi

    1.打开手机中的蓝牙功能有哪些方法? 法1:使用Intent  ==>new Intent(BluetoothAdaper.ACTION_REQUEST_ENABLE); startActivi ...

  5. PHP.38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改

    商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...

  6. RHCE7认证学习笔记17——KickStart安装系统

    一.自动化安装系统工具 1.Cobbler    另一个自动化安装工具: 2.Kickstart 二.使用kickstart自动化安装系统 服务器安装的软件: 1.dhcp服务   [root@lin ...

  7. PRO*C 函数事例 1 -- 数据库连接、事务处理

    1.程序结构        每一个Pro*C程序都包括两部分:(1)应用程序首部:(2)应用程序体        应用程序首部定义了ORACLE数据库的有关变量, 为在C语言中操纵ORACLE数据库做 ...

  8. 自动化测试--testNG

    该文章主要介绍 testNG(testing next generation,下一代测试技术)框架的使用. 1.首先安装testNG 2.安装完成后,创建maven项目,导入TESTNG和seleni ...

  9. 剑指offer-数值的整数次方12

    class Solution: def Power(self, base, exponent): # write code here if base==0: return 0 if exponent= ...

  10. 九度OJ--Q1167

    import java.util.Scanner;import java.util.TreeSet; /* * 题目描述: * 输入一个数组的值,求出各个值从小到大排序后的次序. * 输入: * 输入 ...