【CPLUSOJ】【USACO】【差分约束】排队(layout)

【项目】基于C++搭建的OJ系统 文章目录环境搭建 环境搭建 #include <iostream> #include <string> #include "httplib.h" int main() { // 1.创建一个Server类对象 httplib::Server http_svr; // 2.注册Get方法 http_svr.Get("/index", [](const httplib::Request& req, httplib::Response& resp){ 阅读详情

【题目描述】
Robin喜欢将他的奶牛们排成一队。假设他有N头奶牛,编号为1至N。这些奶牛按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多头奶牛挤在同一位置的情况(也就是说,如果我们认为所有奶牛位于数轴上,那么多头奶牛的位置坐标可能相同)。

因为众所周知的原因,某些奶牛之间互相喜欢,他们希望互相之间的距离至多为一个定值。但某些奶牛之间互相厌恶,他们希望互相之间的距离至少为一个定值。现在给定ML个互相喜爱的奶牛对以及他们之间距离的最大值,MD个互相厌恶的奶牛对以及他们之间距离的最小值。

你的任务是计算在满足以上条件的前提下,帮助Robin计算出编号为1和编号为N的奶牛之间距离的最大可能值。

【输入格式】

第一行有 3 个整数,每两个整数之间用一个空格隔开,依次表示 n,ML和DL ;

此后ML行,每行包含三个用空格分开的整数A,B和D,其中A,B满足1<=A<=B<=N。表示编号为A和B的奶牛之间的距离至多为D。

此后MD行,每行包含三个用空格分开的整数A,B和D,其中A,B满足1<=A<=B<=N。表示编号为A和B的奶牛之间的距离至少为D。

【输出格式】

仅包含一个整数。如果不存在任何合法的排队方式,就输出-1。如果编号1和编号N的奶牛间距离可以任意,就输出-2 。否则输出他们之间的最大可能距离。

【输入样例】

4 2 1

1 3 10

2 4 20

2 3 3

【输出样例】

27

【数据范围】

对于40%的数据,N<=100;

对于100%的数据,N<=1000;ML,MD<=10000;D<=1000000。

【来源】
USACO

【解题思路】
经典的差分约束系统,由于要求最大值,根据不等式组解集的求法,符合条件的最大值正是不等号右边的最小值,所以要用最短路。
依题意可以得出两种不等式:
喜欢:B-A<=D
讨厌:B-A>=D
由于要使用最短路,所以统一符号采用小于等于号(根据最短路中的松弛原理d[e]<<d[s]+val[s,e]移项就可以得到这个结论)
所以把讨厌的不等式变成A-B>=−−D
接下来就是建图
把A和B看做图中的节点,权值为D,那么就形成一条有向边。
A→(权值为D)B
以此建图即可
【解题反思】
做的时候卡了很久,最后发现自己的SPFA出队忘记把出队的元素标记为未访问。
【参考程序】

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
long long n,l,h,cost[1001],a,b,c;
bool visit[1001];
struct data
{
    long long e;
    long long v;
};
vector<data> edge[2005];
long long cnt[1001];
void add(int sta,int end,int val)
{
    data tmp;
    tmp.e=end;
    tmp.v=val;
    edge[sta].push_back(tmp);
}
queue<int> que;
void First()
{
    for (int i=1;i<=n;i++) cost[i]=0xfffffff;
    cost[1]=0;
}
bool SPFA()
{
    que.push(1);
    visit[1]=true;
    int f;
    while (!que.empty())
    {
        f=que.front();
        for (int i=0;i<edge[f].size();i++)
        {
            long long end=edge[f][i].e;
            long long val=edge[f][i].v;
            if (cost[end]>cost[f]+val)
            {
                cost[end]=cost[f]+val;
                if (!visit[end])
                {
                    visit[end]=true;
                    que.push(end);
                }
                cnt[end]++;//记录松弛次数 
                if (cnt[end]>=n) return true;//松弛n次就必然出现负环,无解 
            }
        }
        que.pop();
        visit[f]=false;//打SPFA一定要记得写这句。 
    }
    return false;
}
int main()
{
    cin>>n>>l>>h;
    for (int i=1;i<=l;i++)
    {
        cin>>a>>b>>c;
        add(a,b,c);//建图 
    }
    for (int j=1;j<=h;j++)
    {
        cin>>a>>b>>c;
        add(b,a,-c);//建图 
    }
    First();//初始化 
    if (SPFA()) printf("-1");//负环无解 
    else if (cost[n]==0xfffffff) printf("-2");//不连通 
    else cout<<cost[n]; //有解情况 
    return 0;
}
CMIP6数据处理及在气候变化、水文、生态等领域中的应用 CMIP6、Biome-BGC、生态、气候变化、气象、水文、气候模式、植被、生态模式、遥感、极端气候、降水、WRF模式、动力降尺度、RCM、大气环流模型、贝叶斯模型、、降尺度 阅读详情

相关推荐

opencv去除印章痕迹

今天看到一个很有意思的程序,就是去除票据上的红色印章,觉得很有意思,就把它抄过来记录一下,同时自己也开了一下脑洞。 原来的程序来自:https://www.cnblogs.com/skyfsm/p/7638301.html 可以看到图像效果很不错,下面是源码实现: #include &lt;iostream&gt; #include &lt;opencv2/imgproc/imgpro...

zeng_haoyu的博客 7956

【CPLUSOJ】【动态规划】最短回文串

【问题描述】 如果一个字符串正过来读和倒过来读是一样的,那么这个字符串就被称作回文串。例如abcdcba,abcddbca就是回文串,而abcdabcd不是。 你要解决的问题是:对于任意一个字符串,输出将这个字符串变为回文串需要插入的最少字符个数,比如,ab3bd只需要插入2个字符就可以变为一个回文串。 【输入格式】 第一行是一个整数N 第二行是一个长度为N字符串S 【输出格式】 一行一个整数,...

WSR的安全屋 711

故障诊断知识库建设指南

从数据融合到知识图谱构建,从智能推理引擎开发到动态进化机制落地,故障诊断知识库的建设路径已形成 “数据 - 知识 - 智能” 的闭环体系。随着大模型技术的深度融入,知识库将实现从 “规则驱动” 到 “认知推理” 的跨越 —— 通过自然语言理解解析复杂故障描述、多模态分析融合图像与信号数据、预测性算法推演故障发展趋势,持续提升诊断的精准度与前瞻性。

极昆仑智慧 1231

墙裂推荐c++的学习网站(OJ)

洛谷里面储存着大量的题,还有历年普及组和提高组的笔试题.里面资源丰富,大佬可以去参加里面的比赛(我觉得这句话是废话,没有洛谷的大佬不叫大佬…环球OJ虽然是外国的(这不废话吗),但是,他里面可以转成中文.凭这个就比某些网站好(我没有特指)在这里面主要是以视频为主,里面医学,哲学,经济学,什么的应有尽有,当然也少不了计算机语言。就是你们看我的博客的网站(似乎看博文的人都知道优快云)学c++首选learncpp.(这是我的推荐语),唯一的缺点就是:广告太多了 ……当然,这里面的代码是我自己写的,懒得删了.?

cyyyyds857的博客 1万+

Tomcat启动过程中cmd窗口(控制台)中文乱码的问题

tomcat启动时,启动过程日志中文乱码的处理方法。

寻码启示 1942

数字IC设计(8)之AHB-Lite总线(持续更新)

AHB总线全称Advanced High-performance Bus,意为先进高性能总线。推出该总线的目的是补充APB总线在性能上的不足,APB总线适合挂载低速外设,所以AHB总线用来挂载高性能的外设,这样子可以分工合作,节约资源。AHB总线可以实现多主多从的连接,此时需要设计仲裁机和matrix(矩阵),AHB-Lite一般用于一主多从,此时则不需要仲裁机和matrix,但是也可以用AHB-Lite来实现多主多从,就是设计多个layer,每个layer是一主多从,再把各个layer连起来;

qq_69440734的博客 2251

C++项目:【负载均衡式在线OJ】

这个项目是基于负载均衡的在线OJ,能够自动分配服务器资源,保持平衡的情况下为用户提供良好的编程运行环境,让代码快速运行和提交。

这是一个非常有意思的博主 3229

串行RapidIO(Serial RapidIO,SRIO):协议介绍

目录一、RapidIO背景介绍二、RapidIO协议概述2.1 包与控制符号2.2 包格式2.4 消息传递2.5 全局共享存储器2.6 流量控制2.7 串行物理层三、I/O逻辑操作与包格式四、维护操作与包格式五、消息操作与包格式六、总结 本文是基于Xilinx平台SRIO介绍(一)RapidIO协议介绍的内容作读书笔记。 一、RapidIO背景介绍 RapidIO采用三层分级体系结构,包括逻辑层、传输层和物理层该分级结的如下图所示: ● 逻辑层:位于最高层,定义全部协议和包的格式,它们为端点器件发起和完

Starry__的博客 1万+

详解USACO这个神奇的OJ

今天终于注册了USACO的账号,进入后发现这个OJ非常的神奇。所以特意在这篇文章中了解一下(本文以第一题作为例题讲解这个神奇OJ的不同之处) 先看一下注册的地方,这几个是必须要填的,第一行填邮箱(建议是sina邮箱),后面写名字和昵称(并不重要,因为之后它会发给你),填入验证码,计算这个方程的正根。 后面这些东西随便填不填。

Mi-Queen 7202

基金估值核算系统三国杀:恒生 VS 赢时胜 VS 融选!

本文对比分析了恒生电子、赢时胜和融选科技三家金融科技公司的基金估值系统。恒生电子作为行业龙头,在公募基金领域占据较大份额,其新一代估值系统6.0采用微服务架构,自动化程度高;赢时胜在中型公募和券商资管领域优势明显,其V5.5系统在信创适配和复杂产品处理方面表现突出;融选科技作为新兴厂商,提供轻量化解决方案,适合中小型机构。文章从市场格局、系统定位、技术架构、成本构成和用户反馈五个维度进行深入比较,为金融机构选型提供参考。当前估值系统市场呈现"三国鼎立"格局,各具特色,选型需结合机构规模、

magbox520的博客 825

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

k8291121的博客 2008

谈谈我用过的OJ(全文皆为个人评价)

OJ只是一个工具,重点是你有没有好好利用。上面列举了那么多,我现在正在用的只有GMOJ,洛谷OJ,USACO 竞赛/训练 OJ,AtCoder OJ,Codeforces OJ。(常用度排名从前到后)

LWB_Bingo的博客 4035

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 144

【NHOI2018】黑格覆盖

【题目描述】 在一张由 M * N 个小正方形格子组成的矩形纸张上,有 k 个格子被涂成了黑色。给你一张由 m * n 个同样小正方形组成的矩形卡片,请问该卡片最多能一次性覆盖多少个黑格子? 【输入数据】 输入共 k+1 行: 第 1 行为 5 个整数 M、N、m、n、k,其含义如题目所述。 接下来 k 行,每行 2 个整数,分别表示被涂成黑色的格子的行、列坐标。 【输出数据】 输出...

WSR的安全屋 1603

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OJ(Online Judge)一览

USACO(美国计算机奥林匹克竞赛)面向全球中小学生开放,适合对编程算法感兴趣的学生参与。备赛可参考精选题目解析、推荐书籍(如《Competitive Programming》)、分级赛题(铜/银/金/白金级)及测试数据等资源。相关学习平台包括洛谷、AtCoder、Codeforces等OJ系统,提供注册指南、题解视频和竞赛训练。中国选手还可关注UOJ、QOJ等本土平台。数学能力在信奥中至关重要,建议配合专项题单提升。

青少年趣味编程 888

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[USACO05DEC] 布局

题意翻译 正如其他物种一样,奶牛们也喜欢在排队打饭时与它们的朋友挨在一起。FJ 有编号为 1\dots N1…N 的 NN 头奶牛 (2\le N\le 1000)(2≤N≤1000)。开始时,奶牛们按照编号顺序来排队。奶牛们很笨拙,因此可能有多头奶牛在同一位置上。 有些奶牛是好基友,它们希望彼此之间的距离小于等于某个数。有些奶牛是情敌,它们希望彼此之间的距离大于等于某个数。 给出 M_LM L ...

Beautiful women in tights 309

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

重新排列奶牛(春季每日一题 33)

农夫约翰的 NNN 头奶牛排成一排,编号 1∼N1∼N1∼N。 它们的排序可以由一个数组 AAA 来描述,其中 A(i)A(i)A(i) 是位于位置 iii 的奶牛的编号。 约翰希望将它们重新排列为一个不同的顺序。 新顺序用数组 BBB 来描述,其中 B(i)B(i)B(i) 是位于位置 iii 的奶牛的编号。 假设奶牛开始时的顺序为: A = 5 1 4 2 3 并假设约翰希望它们重新排列为: B = 2 5 3 1 4 为了从 AAA 顺序重新排列为 BBB 顺序,奶牛们进行了许多“循环”移位。 所

多思考🤔~ 1047

USACO的文件提交格式

刚注册完USACO账号,开始USACO刷体之旅。发现USACO使用的提交方法之类,和国内OJ完全不同。 国内格式 1、国内一般通过WEB方式,将代码贴到指定的输入框,上传代码。 2、国内比赛中一般使用freopen()来重定向输入和输出。而大部分的OJ是不需要使用freopen()的,所以在OJ提交题目的时候,需要吧freopen()函数注释了。 USACO格式 1、USACO采用文件上...

努力中的老周的专栏 8901

模拟赛 排队

问题描述 Czy喜欢将他的妹子们排成一队。假设他拥有N只妹纸,编号为1至N。Czy让他们站成一行,等待自己来派送营养餐。这些妹纸按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多只妹纸挤在同一位置的情况(也就是说,如果我们认为妹纸位于数轴上,那么多只妹纸的位置坐标可能相同)。 因为众所周知的原因,某些妹纸之间互相喜欢,他们希望互相之间的距离至多为一个定值。但某些妹纸之间互相厌恶,

jjs98 1008

ACM学习感悟——POJ3169(差分约束)

Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing along a straight line waiting for feed. The c

只玩三国的程序猿的专栏 732

题解:[USACO05DEC]layout布局

又是很明显的差分约束 注意数组的大小问题 然后是碰到大于等于的情况转化为小于等于的情况建图 然后是spfa 需要判断有没有环 以及判断图是否连通 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> ...

aotao4494的博客 218

hdu 1873 hdoj 1873

看病要排队 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2325    Accepted Submission(s): 905 Problem Description 看病要排队这个是地球人都知道的常识。 不过经过细

sonfree的专栏 1163

USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)

usaco ch1.4 sort(d , d + c, [](int a, int b) -> bool { return a > b; }); 生成与过滤 generator&&filter dfs:简化多重循环,枚举点对与判环 洛谷OJ P1209 [USACO1.3]修理牛棚 Barn Repair P1444 [USACO1.3]虫洞wormh...

Vincent19999999的博客 406

Layout(POJ-3169)

Problem Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 &lt;= N &lt;= 1,000) cows numbered 1..N standing along a straight line waiting fo...

Alex_McAvoy的博客 449

[BZOJ1731][Usaco2005 dec]Layout 排队布局(差分约束)

题目描述传送门题目大意:牛编号为1~n在数轴上排成一排,一个位置可能有多个牛。有ml+md个限制条件,有一些牛希望两者之间的距离不超过一个给定的数L,有一些牛希望两者之间的距离不低于一个给定的数D,问第1个牛和第n个牛最大可能的距离是多少,无解-1,无限远-2题解一个典型的差分约束系统 对于一对点x,y(x>y),可能列出的不等式:d(x)-d(y)<=L,d(x)-d(y)>=D,移项得出d(x

zyf2000 1050

巧妙的算法——差分约束

题目传送门,bzoj3436 这道几乎可以算是差分约束的板子题,那么什么是差分约束呢? 如果一个系统由n个变量和m个约束条件组成,形成m个形如ai-aj≤k的不等式,则称其为差分约束系统(system of difference constraints)。我们可以利用差分约束系统,构建成为一张有向图,从而用最短路(或最长路)解决问题。 例如我选的这道例题 输入为(1,a,b

stevensonson的博客 558
上一篇: 【2018寒假集训Day 8】【最小生成树】Prim和Kruskal算法模板
下一篇: 【CPLUSOJ】【动态规划】最短回文串
苟岂
博客等级 码龄10年 20粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值