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 元旦晚会——贪心或差分约束系统的更多相关文章

  1. P1986 元旦晚会

    一道可以用各种各样的办法做的(水)题 在这里就介绍两种做法 题意: 自己看看吧,很明显的意思,就是求前i个人最少有多少个话筒. 解法1:差分约束 设\(dis[i]\)表示前\(i\)个人最少有多少个 ...

  2. UVA11478 Halum [差分约束系统]

    https://vjudge.net/problem/UVA-11478 给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的 ...

  3. BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 5395  Solved: 1750[Submit][Status ...

  4. ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)

    当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...

  5. POJ1201 Intervals(差分约束系统)

    与ZOJ2770一个建模方式,前缀和当作点. 对于每个区间[a,b]有这么个条件,Sa-Sb-1>=c,然后我就那样连边WA了好几次. 后来偷看数据才想到这题还有两个隐藏的约束条件. 这题前缀和 ...

  6. UVA 11374 Halum (差分约束系统,最短路)

    题意:给定一个带权有向图,每次你可以选择一个结点v 和整数d ,把所有以v为终点的边权值减少d,把所有以v为起点的边权值增加d,最后要让所有的边权值为正,且尽量大.若无解,输出结果.若可无限大,输出结 ...

  7. Burn the Linked Camp(bellman 差分约束系统)

    Burn the Linked Camp Time Limit: 2 Seconds      Memory Limit: 65536 KB It is well known that, in the ...

  8. zoj 2770 Burn the Linked Camp (差分约束系统)

    // 差分约束系统// 火烧连营 // n个点 m条边 每天边约束i到j这些军营的人数 n个兵营都有容量// Si表示前i个军营的总数 那么 1.Si-S(i-1)<=C[i] 这里 建边(i- ...

  9. POJ 3169 Layout (差分约束系统)

    Layout 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/S Description Like everyone else, ...

随机推荐

  1. 微信小程序通讯录字母排序

    微信小程序通讯录 字母排序效果: demo地址:https://github.com/PeachCoder/wechat-contacts

  2. SVM-支持向量机总结

    一.SVM简介 (一)Support Vector Machine 支持向量机(SVM:Support Vector Machine)是机器学习中常见的一种分类算法. 线性分类器,也可以叫做感知机,其 ...

  3. REST,以及RESTful的讲解

    详见:https://blog.csdn.net/qq_21383435/article/details/80032375 1.传统下的API接口对比规则概念REST 系统的特征演化优点&缺点 ...

  4. c# 字段成员

  5. C++——多维数组动态开辟与释放

    前言 在讨论多维数组动态开辟与释放之前,先说说什么是二维数组静态开辟与释放. 形如这种就是静态开辟内存,事先画好了内存大小 #include<iostream> using namespa ...

  6. 1.Git & GitHup

    1.常见的版本控制(管理代码的版本迭代)工具: @ svn:集中式版本控制系统: SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里 ...

  7. PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能

    PHP开启目录引索 一. 前言 不知为何对nginx情有独钟, 最近练习php, 为了方便写代码, 便想要开启nginx的目录索引功能, 显然不如Apache开启的方便, 几次尝试都崩了... 我这个 ...

  8. GPT分区格式

    1. GPT定义 全局唯一标识分区表(GUID partition table, 缩写:GPT)是一个实体硬盘的分区表的结构布局的标准.它是可扩展固件接口(UEFI)标准的一部分,被用于替代BIOS系 ...

  9. Spring Boot 2发送邮件手把手图文教程

    原文:http://www.itmuch.com/spring-boot/send-email/ 本文基于:Spring Boot 2.1.3,理论支持Spring Boot 2.x所有版本. 最近有 ...

  10. 剑指Offer(三十一):整数中1出现的次数(从1到n整数中1出现的次数)

    剑指Offer(三十一):整数中1出现的次数(从1到n整数中1出现的次数) 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https:// ...