洛谷 SP116 INTERVAL - Intervals
洛谷 SP116 INTERVAL - Intervals
节选自拓扑差分约束学习笔记。如果您想学习差分约束的话不妨看看~
Problem
从\(0\sim50000\)选出最少的数,使每个区间至少有\(c\)个数被选。
Solution
这是求最小值,所以将所有的不等式转换成\(\ge\)的形式。
类似于P1250 种树的思想,考虑如何将题目中的
设\(sum[x]\)是前缀和:
对于每一个约束条件,可以看成\(sum[b_i]-sum[a_i-1]\ge c_i\).
由于每一个数只能选择一次,\(0\le sum_x-sum_{x-1}\le1\).
注意这里下标是从\(0\)开始的,所以就全部\(+1\)就好。
最后,多测不清空,抱玲两行泪。
Code
/**************************************************************
* Problem: SP116
* Author: Vanilla_chan
* Date: 20210330
* E-Mail: Vanilla_chan@outlook.com
**************************************************************/
//预编译部分已略
#define N 500010
int n,m,s;
int head[N],ver[N<<1],cnt[N],nxt[N<<1],w[N<<1],dis[N],book[N];
int tot;
void insert(int x,int y,int z)
{
nxt[++tot]=head[x];
head[x]=tot;
w[tot]=z;
ver[tot]=y;
}
struct node
{
int x,dis;
node(int xx,int vv)
{
x=xx,dis=vv;
}
};
queue<node>q;
LL ans;
int t;
signed main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
t=read();
while(t--)
{
tot=0;
memset(head,0,sizeof(head));
memset(nxt,0,sizeof(nxt));
memset(dis,0,sizeof(dis));
memset(cnt,0,sizeof(cnt));
memset(w,0,sizeof(w));
memset(book,0,sizeof(book));
memset(ver,0,sizeof(ver));
n=0;
m=read();
for(int i=1,a,b,c;i<=m;i++)
{
a=read();
b=read();
c=read();
n=max(n,max(a,b));
insert(a,b+1,c);
}
s=n+2;
for(int i=1;i<=n+1;i++)
{
dis[i]=-1;
insert(s,i,0);
insert(i-1,i,0);
insert(i,i-1,-1);
}
int x;
q.push(node(s,0));
while(!q.empty())
{
x=q.front().x;
q.pop();
book[x]=0;
for(int i=head[x],v;i;i=nxt[i])
{
v=ver[i];
if(dis[v]<dis[x]+w[i])
{
dis[v]=dis[x]+w[i];
if(!book[v])
{
if(cnt[v]>n)
{
cout<<"-1";
return 0;
}
q.push(node(v,dis[v])),book[v]=1,cnt[v]++;
}
}
}
}
cout<<dis[n+1]<<endl;
}
return 0;
}
洛谷 SP116 INTERVAL - Intervals的更多相关文章
- SP116 INTERVAL - Intervals
题意翻译 区间取数 题目描述 有n个区间,在区间[ai,bi]中至少取任意互不相同的ci个整数.求在满足n个区间的情况下,至少要取多少个正整数. 输入输出格式 输入格式 多组数据. 第一行的一个整数T ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷 P1379 八数码难题 Label:判重&&bfs
特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...
随机推荐
- manim边学边做--局部缩放的场景类
在动画制作中,尤其是数学和科学可视化领域,有时我们需要将观众的注意力集中在场景的某个特定部分. Manim提供了一个强大的工具 ZoomedScene,它允许我们在场景中创建一个独立的缩放视图,从而实 ...
- Gits-命令
Git基础命令 Git是一个分布式版本控制系统,由Linus Torvalds创建,用于有效.高速地处理从小到大的项目版本管理.以下是一些基本的Git命令和概念,它们对于使用Git进行版本控制至关重要 ...
- k8s集群创建之后coredns一直处于pending状态
按照官网教程 master节点kubectl init, 每个从节点kubectl join之后, 在master节点执行 kubectl get pods -n kube-system,发现core ...
- Let’s Encrypt & Certbot 浅谈
前言 当我们想给网站启用HTTPS, 通常需要从证书颁发机构购买证书, 并配置到现有的HTTP服务上来实现HTTPS. 这里暗藏的痛点是: 我们需要花钱(买证书) 证书颁发机构(质量参差不齐, 不一定 ...
- 什么是 MCP,以及你为什么该关注它
MCP 现在真的火起来了.现在已经有成千上万个 MCP "服务器",而且虽然是 Anthropic 发明的,就在几天前 OpenAI 也采纳了它.服务器就像 AI 的 " ...
- Mybatis的动态SQL的语句
例子. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC &quo ...
- 如何0基础学stm32?
如何0基础学stm32? 作为一个混迹嵌入式领域十余年的老兵,每次看到"0基础学STM32"这样的提问,我都忍不住想笑,又有些无奈.这就像问"如何0基础学开飞机" ...
- webapi——Postman添加post请求测试
1.设置Post格式 2.设置传值方式json 3.设置参数 4.发送请求
- FastAPI中的复杂查询与原子更新指南
title: FastAPI中的复杂查询与原子更新指南 date: 2025/05/02 20:33:32 updated: 2025/05/02 20:33:32 author: cmdragon ...
- 【SQL周周练】给你无酸纸、变色油墨,你能伪造多少美金?
大家好,我是"蒋点数分",多年以来一直从事数据分析工作.从今天开始,与大家持续分享关于数据分析的学习内容. 本文是第 2 篇,也是[SQL 周周练]系列的第 2 篇.该系列是挑选或 ...