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个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
随机推荐
- MFC显示文本文档 分类: MFC 2014-12-30 10:03 457人阅读 评论(1) 收藏
新建基于对话框的MFC应用程序.资源视图的对话框上添加编辑框(Edit Control)和按钮(Button), 将编辑框属性:Mutiline.Auto HScroll.Auto VScroll设为 ...
- 框架系列~OwinSelfHost自宿主的使用
在进入mvc5之后,OWIN变更很主推,很热,关于OWIN的文章也就出来了,下面阅读了dudu和一些园友的文章,自己也做了一个SelfHost的程序,测试了一下,感觉还是比较有Core的风格,可能也是 ...
- css3中content属性的应用
可以使用css3中content功能为html元素增减内容.content需要配合 E:before和E:after使用. 废话少说,看代码和效果说明: 第一种: css代码: #div1:befor ...
- debian设置英文模式
Ubuntu太臃肿了,遂换回debian系统.在虚拟机上装debian,发现console下中文不显示. 各种export方法试过,始终无效.废了一个小时终于找到方法了.记录之. debian设置语言 ...
- SQL Server性能调优——报表数据库与业务数据库分离
前段时间把公司的主数据库切了,分成业务库和报表库,业务库向报表库进行实时的Replication.这个项目的上线提升了系统的性能和可维护性,现在把设计时的考量和所做的工作重新回顾一下,作为备忘. 项目 ...
- 机器学习_决策树Python代码详解
决策树优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据: 决策树缺点:可能会产生过度匹配问题. 决策树的一般步骤: (1)代码中def 1,计算给定数据集的香农熵: ...
- flutter 实现圆角头像的2种方法
圆角头像在开发中应用太普遍了,我总结了2种实现方法,分享给大家 方法一: 使用Container组件的decoration可以实现 Container( width: 40, height: 40, ...
- html引用ttf字体文件
在样式表如此定义: @font-face { font-family: MyFontName;//自定义字体名称 src: url(../Gloss_And_Bloom.ttf) } 然后,具体使用: ...
- php 阿里云短信验证码
阿里云短信服务:https://dysms.console.aliyun.com 1.准备 1.1.创建签名.模板 1.2.创建.使用阿里云秘钥 地址:https://usercenter.conso ...
- 除了上万的月薪之外,还有什么理由让我们必须学Python?
虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的.可以做到一通百通.所以没有必要为了学哪门语言纠结太多. python是目前市面上,我个人认为是最简洁&&最优雅& ...