poj 1752 差分约束(沿路建广告)

最短路径条数(floyd) 题意:给定一个n顶点有向图,求从顶点1到顶点n之间最短路径的条数(题目连接http://acm.cs.ecnu.edu.cn/problem.php?problemid=1818)。 思路: 阅读详情

题意:有n个人在一条路上跑步,假设这条路上每一个点有一个广告牌,广告商准备在广告牌上贴广告。现在已知这n个人从ai开始跑,到bi结束,现在广告商需要每个人都至少要看到k个广告(对于跑步全程都小于k的人来说,需要他经过的每个广告牌上都有广告)。问满足条件的总的广告数和哪些广告牌上应该张贴广告。

思路:差分约束。Xi表示用起始点到Xi总共需要张贴的广告数量。那么对于第i个人,X(bi+1)-X(ai)>=min(k,bi+1-ai);其次有对于每个i,1>=X(i+1)-X(i)>=0。

我使用hash来表示顶点以减少空间复杂度。注意此时1>=X(i+1)-X(i)需要根据hash做出相应改变,而且这句话必不可少。反例为:

6 2

1 10

8 9

另外因为坐标有负数,所以我向右平移了10000个单位长度。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 1005
#define M 10000
int flag[(M<<1)+10],hh[N<<1];
int dis[N<<1],first[N<<1],q[1000000],used[N<<1];
int n,m,k,top;
struct point{
    int l,r;
}p[N];
struct edge{
    int y,next,w;
}e[8*N];
void add(int x,int y,int w){
    e[top].y = y;
    e[top].w = w;
    e[top].next = first[x];
    first[x] = top++;
}
int relax(int x,int y,int w){
    if(dis[y] < dis[x] + w){
        dis[y] = dis[x] + w;
        return 1;
    }
    return 0;
}
int spfa(){
    int rear,front,now,i;
    memset(used, 0, sizeof(used));
    rear = front = -1;
    for(i = 0;i<=m;i++)
        dis[i] = -0x3fffffff;
    dis[0] = 0;
    q[++rear] = 0;
    used[0] = 1;
    while(front < rear){
        now = q[++front];
        used[now] = 0;
        for(i = first[now];i!=-1;i=e[i].next)
            if(relax(now,e[i].y,e[i].w) && !used[e[i].y]){
                q[++rear] = e[i].y;
                used[e[i].y] = 1;
            }
    }
    return dis[m];
}
void print(int j,int d){
    if(d){
        print(j-1,d-1);
        printf("%d\n",j);
    }
}
int main(){
    int i;
    memset(flag, 0, sizeof(flag));
    memset(first, -1, sizeof(first));
    top = 0;
    scanf("%d %d",&k,&n);
    for(i = 1;i<=n;i++){
        scanf("%d %d",&p[i].l,&p[i].r);
        if(p[i].l > p[i].r)
            swap(p[i].l,p[i].r);
        p[i].l += M;
        p[i].r += M;
        flag[p[i].l] = 1;
        flag[p[i].r+1] = 1;
    }
    for(i = 0,m = 0;i<=2*M+1;i++)
        if(flag[i]){
            flag[i] = ++m;
            hh[m] = i;
        }
    for(i = 1;i<=n;i++)
        add(flag[p[i].l],flag[p[i].r+1],min(k,p[i].r+1-p[i].l));
    for(i = 1;i<m;i++){
        add(i,i+1,0);
        add(i+1,i,-(hh[i+1]-hh[i]));//这句话至关重要
    }
    for(i = 1;i<=m;i++)
        add(0,i,0);
    printf("%d\n",spfa());
    for(i = 2;i<=m;i++)
        if(dis[i] > dis[i-1])
            print(hh[i]-1-M,dis[i]-dis[i-1]);
    return 0;
}


树莓派CSI/DSI二合一接口深度玩法:同时驱动MIPI摄像头和屏幕的配置秘籍 本文详细解析了树莓派5上CSI/DSI二合一接口的深度玩法,提供了同时驱动MIPI摄像头和屏幕的完整配置秘籍。从硬件连接到软件设置,包括config.txt的优化配置,帮助用户充分利用树莓派5的双多功能接口,实现高效的双设备工作模式。 阅读详情

相关推荐

ASF-YOLO:一种基于注意尺度序列融合的细胞实例分割YOLO模型

随着样本制备技术和显微成像技术的快速发展,细胞图像的定量处理和分析在医学、细胞生物学等领域发挥着重要作用。基于卷积神经网络(CNN),可以通过神经网络训练学习不同细胞图像的特征信息,具有很强的泛化性能。两阶段的R-CNN系列[1,2,3]及其一阶段变体[4,5]是实例分割任务的经典CNN基础框架。在最近的研究中,You Only Look Once(YOLO)系列[6,7,8,9]已经成为实时实例分割中速度最快、最准确的模型之一。

m0_47867638的博客 9789

POJ--1752--差分约束

题目要求: 求最少个数的数字使得所有[a,b]区间内所取的个数>=k,要是b-a+1<k,则全部取完,最后输出个数以及所取的数字 思路: 差分约束求最少,构造>=不等式,求最长路,求完最长路后,从最小的数字开始遍历,要是dis[i+1]>dis[i],说明当前数字必须要取,则输出 #include<iostream> #include<algorithm&...

qq_40628208的博客 278

Code Composer Studio 12.0.0版本 官方例程导入实战指南

本文详细介绍了在Code Composer Studio 12.0.0版本中,如何利用内置的Resource Explorer工具高效导入官方例程的完整实战指南。通过分步讲解定位开发板、导入工程、配置编译器及调试验证等关键操作,帮助开发者快速上手TI微控制器开发,避免常见错误,有效提升学习与开发效率。

weixin_29169899的博客 120

poj 1752 Advertisement (差分约束)

题目描述传送门题目大意:题目大意:有n个人在一条路上跑步,广告商准备在这条路上设置广告牌,假设这条路上每一个点有一个广告牌 现在已知这n个人从Ai开始跑,到Bi结束,那么他可以看到max(Ai,Bi)-min(Ai,Bi)+1的广告牌数,现在广告商 需要每个人都要看到至少k个广告牌(如果区间长度不够K,那么需要看到区间长度),求需要设置的最少广告牌数以及一组合法解题解经典的区间约束问题。 设d

clover_hxy的博客 690

每天一个优秀提示词学习收藏 - 文本创作篇(二)

宝子们,今天不藏私啦!我把这段时间四处搜罗、潜心钻研出来的文本创作 Prompt 提示词大礼包双手奉上,这可都是能让你的 AI 创作水平原地起飞的干货!走过路过不要错过,赶紧码住,开启你的 AI 创作进阶之旅吧!

2397

英飞凌TC3xx DSADC旋变软解码实战:从示波器波形到VX1000数据,手把手教你避坑

本文详细介绍了英飞凌TC3xx系列微控制器的DSADC模块在电机旋变软解码中的实战应用。从示波器波形分析到VX1000数据采集,提供了一套完整的调试方法论,帮助工程师快速定位和解决常见问题,提升解码精度和系统性能。

weixin_30598225的博客 517

poj1752 Advertisement(翻译)

译文 题目描述 娱乐部门已经下定决心要增加盈利,因此决定在当地公园的一条很火的慢跑道上出售广告牌。他们已经在这条道路上建造了许多广告牌,并决定出售在这些广告牌上的广告空间。在慢跑道上,广告牌是均匀分布的,慢跑路径一定一段连续的整数。一个广告牌上只能登出一个广告。 有一天,一位VIP客户想购买一些广告牌,但是需要保证每个慢跑者在沿着小路跑步时都会看到K次ta的广告。 然而,不同的慢跑者会...

Coco_T的博客 641

黑猫带你学eMMC协议第22篇:emmc可靠写详解(Write Reliability)

1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有部分错误请留言。 本文部分内容可能源自网络,侵删。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 1、什么是可靠性写属性(Write Reliability)? 2、可靠写和普通的写有什么区别? 3、设置可靠写的流程及流程框图。 4、可靠写需要遵循哪些规则? 1.3 参考链接 本文主要参考链接:http://www.up48.com/cn/support/8_37.html 2 什么

黑猫奥利奥的博客 3119

ZOJ2049 POJ1752 Advertisement

本来算是差分约束的水题来的,一开始用的是list建表,ZOJ过了,但是POJ死活超时。 后来测试了一下,用vector建表速度快了许多,但是POJ上还是超时。 后来直接手工建表了。 得出了两个经验,一,SPFA中用queue比用stack快很多;二,一定要用vector建表,如果卡时间就直接手工建表。 /*******************************************

Neo Fung的专栏 879

Allegro技巧----相同模块复用实现快速布局

使用Allegro软件进行PCB Layout设计时,当电路图中有很多路相同的模块,使用模块复用的的操作方法,可以显著提高工作效率,同时也可以使PCB布局在整体上显得美观。 如图,有8个相同的ADC采样电路模块,它们在原理图中的电路也是一样的,对于这多个相同的电路模块,如果一个个元器件布局很明显做了很多重复机械的劳动,效率低下;但是强大的Allegro软件早就考虑到了这点,只需要在PCB中做好其中的一个,则其余相同的模块通过复用的方式,可以快速完成,方便省事还美观。 具体步骤: 1.首先完成一个模块的PC

sinat_15677011的博客 5655

21、空间数据处理中的克里金方法及应用

本文介绍了空间数据处理中的克里金方法,特别是带外部漂移的克里金法(KED)及其在遥感数据融合和支持变化问题中的应用。讨论了克里金方法的基本原理、优缺点以及在不同空间分辨率遥感图像融合中的具体操作流程。同时,还涉及了地统计数据融合和支持变化问题的解决方案,包括块克里金法、面到点克里金法和多边形克里金法等。

gold的博客 86

差分约束_POJ 1752 Advertisement

好久没做差分约束系统了,有点陌生。     简述:给定一个数K和若干个区间Li , Ri(Li可能大于Ri,交换下即可)。|Li|,|Ri|。要在区间 [ Li , Ri ]上选出 K个点涂上颜色。求数轴上最少的被涂色的点的个数。(简单起见,假设 Li,Ri>=0)     思路:差分约束系统:     记 S_i 为 [ 0 , i ] 这个区间内染色的点的个数。那么就有S

grandpi的专栏 510

免费教你快速学会分析运算放大器电路(保证学会)

本文旨在学习如何快速简单地对运算放大器进行分析

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 1万+

POJ 1752 差分约束

题目链接题意:有一段区间,n条限制区间以及一个常数k。现在要求长度&gt;=k的限制区间至少有k个点被选中,长度小于k的区间所有点都要被选中,问最少需要选中多少个点才能满足限制要求,并升序输出其中一个可行解。思路:大量不等式关系求最小值,直接想到差分约束。建图后spfa()一个最长路,然后遍历区间判断dis[i]&gt;dis[i-1],是则表明被选中反之不选中。对于区间可能涉及负数,可以进行移位...

maze_illusion的博客 262

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Advertisement POJ - 1752 (差分约束+扩大区间+输出路径)

传送门 题意:给出k和n,给出n个区间,如果这个区间的大小大于等于k,那么至少需要k个广告牌,如果小于k,只需要这个区间的大小即可,最后问至少需要多少广告牌以及都在哪些位置,广告牌只能一个位置有一个。 题解:用s[i]表示从头到i这个位置所需的广告牌,因为部分位置是负数,所以统一将区间右移10001个,然后开始建图,如果这个区间的大小大于等于k,那么至少需要k个广告牌,也就是s[v]-s[u-...

肘子的博客 516

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【POJ 2572 Advertisement】

Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 947Accepted: 345Special Judge Description The Department of Recreation has decided that it must be more profitable, and it wants to se...

dichenbo4001的博客 205

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

poj 1752 Advertisement (区间差分约束+最长路 输出可行解)

Advertisement Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 919   Accepted: 331   Special Judge Description The Department of Recreation has decided th

K键盘里的青春K 1001

POJ 1752 Advertisement(差分约束+最短路/最长路+输出路径)

Advertisement Time Limit:1000MS Memory Limit:10000K Total Submissions:1098 Accepted:409 Special Judge Description The Department of Recreation has decided that it ...

pxlsdz的博客 685

POJ 1752 差分约束 + 输出路径

题目链接: http://poj.org/problem?id=1752 收获:1.等式如 A - B = C。可以转化为 A - B >= C 和 A - B   2. 输出路径: 可以通过判断 dis[i] - dis[i-1] == 1?  如成立则说明 i 是那个发生变化的点,即需要输出的节点。  3.最长路 和 最短路 的区别:这道题是spj ,

新熊君的博客 570

poj1752 - Advertisement

想看更多的解题报告: http://blog.youkuaiyun.com/wangjian8006/article/details/7870410                                   转载请注明出处:http://blog.youkuaiyun.com/wangjian8006 题目大意:有n个人在一条路上跑步,广告商准备在这条路上设置广告牌,假设这条路上每一个点有一个广告牌

贰圣 1043

poj1752 Advertisement(差分约束)

题目链接 分析: 看到这道题,我的反应就是线性规划 我一开始把问题抽象成: 给出一条数轴和n个区间,在数轴上选取尽量少的数,使得每个区间内都有K个数被选中 经过转化后,这道题就和bzoj3550一样了 但是这道题的数据范围有点大,所以我们要另辟蹊径 设dis[i]" role="presentation" style="position: relative;">dis[i]dis[i

Coco_T的博客 394

POJ 1716 Integer Intervals(差分约束)

Integer Intervals Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14689   Accepted: 6226 Description An integer interval [a,b], a Wri

Dust_heart的博客 2513

poj 2240 Floyd判断有向图负环(arbitrage)

题意:Arbitrage问题(套汇)。给定若干币种及一些币种转换的汇率,问能否有套汇的可能。 思路:如果以币种为定点,汇率为边建图,则相当于求一个圈,其上权值乘积大于1。将权值取对数再取负,变成求有向图负环。用floyd算法即可。(直接上Floyd,三层循环中判断直接用乘法也OK) #include #include #include #define min(a,b) ((a)<(b)?

dearmango 2126

poj 1122 最短路+路径追踪(消防路径)

题意:在一个n顶点图上,找出从消防站到着火点的最短时间与最短时间中所走的点。路的长度由一个n×n的矩阵给出,矩阵中的第(i,j)个元素代表从i到j的时间,-1代表不能到达。最后一行,第一个数代表着火点;后面多个数代表消防站。输出的是消防站 着火点 时间 路径,按照时间从小到大排序输出(如果有相同的则任意输出,如果有不同的路径也是任意输出)。 思路:非常显然的最短路,不过是多源点单汇点,这个可以通

dearmango 881

poj 1734 Floyd输出路径(长度大于等于3的最小圈)

题意:给定一个无向带权图,求其中长度大于等于3的最小圈(实际上长度等于2的圈就是重边,所以存边的时候忽略重边,只存储权值最小的边) 思路:Floyd的应用。找到圈的办法就是判断d[i][j] + map[i][k] + map[k][j] k -> j -> j到i的最短路)这样一个环就找到了,接下来我们要记录路径,用path[i][j]表示在最短路i到j的路径上j的前一个结点,所以我们在更新

dearmango 860

sgu 103(poj 1158) 最短路(含蓝紫灯的最短路)

题意:一个普通最短路模型(节点间最多zhi

dearmango 792
上一篇: poj 2505 博弈(乘以[2,9])
下一篇: 将多个PDF合成一个的方法
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值