poj 1752 Advertisement (差分约束)
题目大意:题目大意:有n个人在一条路上跑步,广告商准备在这条路上设置广告牌,假设这条路上每一个点有一个广告牌
现在已知这n个人从Ai开始跑,到Bi结束,那么他可以看到max(Ai,Bi)-min(Ai,Bi)+1的广告牌数,现在广告商
需要每个人都要看到至少k个广告牌(如果区间长度不够K,那么需要看到区间长度),求需要设置的最少广告牌数以及一组合法解
经典的区间约束问题。
设dis[i]表示[1..i]中有最少的数量
对于所有区间的限制dis[y]−dis[x−1]>=min(k,y−x+1)
每个位置只能放一个广告牌,且前缀和一定是不降的0<=s[i+1]−s[i]<=1
那么上述条件都变成y−x>=z的形式,然后跑最长路即可。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#define N 100000
#define inf 1000000000
using namespace std; int tot,n,k,dis[N],nxt[N],point[N],v[N],c[N],can[N],cnt[N];
void add(int x,int y,int z)
{
tot++;nxt[tot]=point[x];point[x]=tot;v[tot]=y;c[tot]=z;
}
int spfa()
{
for (int i=;i<=;i++) dis[i]=-inf;
dis[]=; can[]=cnt[]=;
queue<int> p; p.push();
while (!p.empty()) {
int now=p.front(); p.pop();
for (int i=point[now];i;i=nxt[i])
if (dis[v[i]]<dis[now]+c[i]) {
dis[v[i]]=dis[now]+c[i];
if (!can[v[i]]) {
can[v[i]]=;
p.push(v[i]);
}
}
can[now]=;
}
return dis[];
}
int main()
{
int cas;
scanf("%d",&cas);
while(cas--)
{
tot=;
memset(point,,sizeof(point));
scanf("%d%d",&k,&n);
for (int i=;i<=n;i++)
{
int x,y; scanf("%d%d",&x,&y);
if (x>y) swap(x,y);
x+=; y+=;
add(x-,y,min(k,y-x+));
}
for (int i=;i<=;i++)
add(i+,i,-),add(i,i+,);
int ans=spfa();
printf("%d\n",ans);
for (int i=;i<=;i++)
if (dis[i]>dis[i-]) printf("%d\n",i-);
}
}
poj 1752 Advertisement (差分约束)的更多相关文章
- POJ.1752.Advertisement(差分约束 最长路SPFA)
题目链接 \(Description\) 有\(n\)个人在一条直线上跑步,每个人的起点 \(Si\).终点 \(Ei\) 已知:每个点可以放一个广告牌,一个人\(i\)能看到的广告牌数量为 \(Ei ...
- poj 1201 Intervals(差分约束)
题目:http://poj.org/problem?id=1201 题意:给定n组数据,每组有ai,bi,ci,要求在区间[ai,bi]内至少找ci个数, 并使得找的数字组成的数组Z的长度最小. #i ...
- poj 1201 Intervals——差分约束裸题
题目:http://poj.org/problem?id=1201 差分约束裸套路:前缀和 本题可以不把源点向每个点连一条0的边,可以直接把0点作为源点.这样会快许多! 可能是因为 i-1 向 i 都 ...
- POJ——3169Layout(差分约束)
POJ——3169Layout Layout Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14702 Accepted ...
- POJ 1364 King --差分约束第一题
题意:求给定的一组不等式是否有解,不等式要么是:SUM(Xi) (a<=i<=b) > k (1) 要么是 SUM(Xi) (a<=i<=b) < k (2) 分析 ...
- ShortestPath:Layout(POJ 3169)(差分约束的应用)
布局 题目大意:有N头牛,编号1-N,按编号排成一排准备吃东西,有些牛的关系比较好,所以希望他们不超过一定的距离,也有一些牛的关系很不好,所以希望彼此之间要满足某个关系,牛可以 ...
- POJ 3169 Layout (差分约束)
题意:给定一些母牛,要求一个排列,有的母牛距离不能超过w,有的距离不能小于w,问你第一个和第n个最远距离是多少. 析:以前只是听说过个算法,从来没用过,差分约束. 对于第 i 个母牛和第 i+1 个, ...
- POJ 3159 Candies 差分约束dij
分析:设每个人的糖果数量是a[i] 最终就是求a[n]-a[1]的最大值 然后给出m个关系 u,v,c 表示a[u]+c>=a[v] 就是a[v]-a[u]<=c 所以对于这种情况,按照u ...
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
随机推荐
- C# PropertyInfo(官网)
using System; using System.Reflection; class Module1 { public static void Main() { // This variable ...
- jmeter(四)检查点
JMeter也有像LR中的检查点,本篇就来介绍下JMeter的检查点如何去实现. JMeter里面的检查点通过添加断言来完成. 检查点:上一章讲到,我们对用户名和密码进行了参数化,那么怎样来判断jme ...
- jQuery select年月日(生日)选择器
实际项目中,在用户的个人中心,编辑用户资料时经常会遇到选择生日选项的问题. 因为我项目工程中没有使用如jQuery UI的插件性下拉列表,所以选择select + option的原生方式,实现选择器. ...
- Vue.js学习笔记--2.基础v-指令
整理自官网教程 -- https://cn.vuejs.org/ 1. v-bind绑定Class与Style a. 绑定Class 语法:v-bind:class="{classname: ...
- Android开发中查看未root真机的app数据库
在Android开发中,如果用到数据库来储存数据,那么难免就要查看数据库中的内容,可是对于未root的真机来说,查看数据库就不是那么容易了,如果仅仅为了查看数据库再把手机root了,有点得不偿失,所以 ...
- 掌握Spark机器学习库-07-回归分析概述
1)回归与分类算法的区别 回归的预测结果是连续的,分类的预测结果是离散的. 2)spark实现的回归算法有: 3)通过相关系数衡量线性关系的程度
- linux设置ssh连接时间
相信大家经常遇到SSH连接闲置一会就断开需要重新连接的痛苦,为了使SSH连接保持足够长的时间,我们可以使用如下两种设置 1.sshd服务配置: #vi /etc/ssh/sshd_config Cli ...
- [安卓开发板]迅为IMX6 四核Android开发板
工业级核心板-Android开发板 10层高速PCB设计,充分保证电磁兼容 处理器:开发板默认是四核商业扩展级芯片,可根据用户需求更换单核.双核.工业级.汽车级处理器,批量更省成本. 扩展引脚:320 ...
- (转)淘淘商城系列——发布dubbo服务
http://blog.csdn.net/yerenyuan_pku/article/details/72758639 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入, ...
- apropos - 在 whatis 数据库中查找字符串
总览 (SYNOPSIS) apropos keyword ... 描述 (DESCRIPTION) apropos 命令在一些特定的包含系统命令的简短描述的数据库文件里查找关键字, 然后把结果送到标 ...