P1986 元旦晚会——贪心或差分约束系统
每个人可能属于不同的声部,每个声部最少要有c[i]个人发声;
求最少需要多少话筒;
首先贪心,将所有声部的区间按照右端点大小排序,如果右端点相同,左端点从小到大排序;
贪心每次选取靠近右端点的,这样每个区间相交的是最多的。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=; struct node
{
int l,r,c;
}a[maxn]; bool cmp(node qw,node we)
{
if(qw.r!=we.r) return qw.r<we.r;
return qw.l<we.l;
} int n,m;
int ans,vis[maxn]; int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].c);
} sort(a+,a+m+,cmp); for(int i=;i<=m;i++)
{
int k=;
for(int j=a[i].r;j>=a[i].l;j--)
{
if(vis[j]) k++;
} if(k>=a[i].c) continue;
else
{
for(int h=a[i].r;(h>=a[i].r-a[i].c+)&&(k<a[i].c);h--)
{
if(!vis[h])
{
vis[h]=;
ans++;
k++;
} }
}
}
printf("%d",ans);
return ;
}
差分约束系统:
将左右端点连边,边权是c[i];因为要保持图的联通,实际连边是x-1和y;
将i和i-1连一条-1的边,将i和i+1连一条0边;
跑一边最长路即为所求答案。
我们所求的实际上是不等式dis[y]-dis[x]>=c[i];
求最长路时的松弛操作正是将这个不等式一点点的满足;
为什么要将i和i-1连-1边呢?
因为可能是这种情况:
-1其实是将重合的部分减去
#include<cstring>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn=1e6+;
int pre[maxn*],last[maxn],other[maxn*],len[maxn*],l; void add(int x,int y,int z)
{
l++;
pre[l]=last[x];
last[x]=l;
other[l]=y;
len[l]=z;
} queue<int> q;
int n,m;
int dis[maxn];
bool vis[maxn];
void spfa()
{
while(!q.empty())
{
int x=q.front();
q.pop();
vis[x]=;
for(int p=last[x];p;p=pre[p])
{
int v=other[p];
if(dis[v]<dis[x]+len[p])
{
dis[v]=dis[x]+len[p];
if(!vis[v]) vis[v]=,q.push(v);
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x-,y,z);
}
for(int i=;i<=n;i++)
{
add(i,i-,-);
add(i-,i,);
}
for(int i=;i<=n;i++) q.push(i),vis[i]=;
spfa();
printf("%d",dis[n]);
return ;
}
P1986 元旦晚会——贪心或差分约束系统的更多相关文章
- P1986 元旦晚会
一道可以用各种各样的办法做的(水)题 在这里就介绍两种做法 题意: 自己看看吧,很明显的意思,就是求前i个人最少有多少个话筒. 解法1:差分约束 设\(dis[i]\)表示前\(i\)个人最少有多少个 ...
- UVA11478 Halum [差分约束系统]
https://vjudge.net/problem/UVA-11478 给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的 ...
- BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5395 Solved: 1750[Submit][Status ...
- ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)
当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...
- POJ1201 Intervals(差分约束系统)
与ZOJ2770一个建模方式,前缀和当作点. 对于每个区间[a,b]有这么个条件,Sa-Sb-1>=c,然后我就那样连边WA了好几次. 后来偷看数据才想到这题还有两个隐藏的约束条件. 这题前缀和 ...
- UVA 11374 Halum (差分约束系统,最短路)
题意:给定一个带权有向图,每次你可以选择一个结点v 和整数d ,把所有以v为终点的边权值减少d,把所有以v为起点的边权值增加d,最后要让所有的边权值为正,且尽量大.若无解,输出结果.若可无限大,输出结 ...
- Burn the Linked Camp(bellman 差分约束系统)
Burn the Linked Camp Time Limit: 2 Seconds Memory Limit: 65536 KB It is well known that, in the ...
- zoj 2770 Burn the Linked Camp (差分约束系统)
// 差分约束系统// 火烧连营 // n个点 m条边 每天边约束i到j这些军营的人数 n个兵营都有容量// Si表示前i个军营的总数 那么 1.Si-S(i-1)<=C[i] 这里 建边(i- ...
- POJ 3169 Layout (差分约束系统)
Layout 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/S Description Like everyone else, ...
随机推荐
- .Net Core Mvc/WebApi 返回结果封装
一.背景 为了方便开发,简化代码,也为了与前端方便对接,需要对接口服务返回结果进行统一处理. .Net Core 中返回结果的处理与 .Net Framework 中的处理不一样. .Net Core ...
- 读取经纬度坐标并存储为字典格式,即key为ID,value为轨迹点
示例数据: #格式为txt文本 ID,L,B 001,116.5154,45.1154 001,116.5160,45.1153 ... 002,xxx,xxx ... 目标:建立轨迹数据结构,即di ...
- Python——初识网络爬虫(网页爬取)
网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫 ...
- JAVA 插入注解处理器
JDK1.5后,Java语言提供了对注解(Annotation)的支持 JDK1.6中提供一组插件式注解处理器的标准API,可以实现API自定义注解处理器,干涉编译器的行为. 在这里,注解处理器可以看 ...
- vue的事件对象
事件对象: v-on:click/mouseover 简写: @click="" @click="show($event)" <input t ...
- S5PV210 timer
TCFG0, R/W, Address = 0xE250_0000 Timer Input Clock Frequency = PCLK / ( {prescaler value + 1} ) / { ...
- 软件自带依赖库还是共享对象库/为什么linux发行版之间不能有一个统一的二进制软件包标准
接前文:Linux软件包(源码包和二进制包)及其区别和特点 在前文,我们知道了linux软件包分为源码包和二进制包两种方式,而不同的发行版之间又有着自己的二进制打包格式. 首先,软件运行依赖着各种各样 ...
- Django之小结
常用的函数方法与包的调用 # 登陆视图函数 def login(request): if request.method == 'GET': return render(request,'login.h ...
- MongoDB简介,安装,增删改查
MongoDB到底是什么鬼? 最近有太多的同学向我提起MongoDB,想要学习MongoDB,还不知道MongoDB到底是什么鬼,或者说,知道是数据库,知道是文件型数据库,但是不知道怎么来用 那么好, ...
- unittest 运行slenium(四)---通过指定用例的形式运行用例
一: 说明 跟数据驱动唯一的区别为用例数据获取时,及运行方式不同. 其它都基本相同,可参考https://www.cnblogs.com/xiaodingdong/p/11753220.html 二: ...