[暑假集训Day2T1]种树
标算是贪心,我写了个差分约束?????
设dist[i]表示1-i号土地种的树的总棵数,考虑以下几种约束条件:
1)dist[y]>=dist[x]+z,即x号土地至y号土地间至少种了z棵树
2)dist[i-1]>=dist[i]-1,即i号土地最多比i-1号土地多种1棵树
3)dist[i]>=dist[i-1]+0,即i号土地不会比i-1号土地种的树少
建图后直接跑单源最长路即可。
参考代码如下:
#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
#define N 30005
#define M 300005
using namespace std;
int v[M],w[M],head[M],nxt[M],dist[M],n,m,cnt,x,y,z,maxn;
bool vis[N];
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-;ch=getchar();}
return x*f;
}
void add(int a,int b,int c)
{
v[++cnt]=b;
w[cnt]=c;
nxt[cnt]=head[a];
head[a]=cnt;
}
void spfa(int s)
{
//memset(dist,20,sizeof(dist));
queue<int>q;
dist[s]=;
q.push(s);
vis[s]=;
while(!q.empty())
{
int c=q.front();
q.pop();
vis[c]=;
for(int i=head[c];i;i=nxt[i])
{
int y=v[i];
if(dist[y]<dist[c]+w[i])
{
dist[y]=dist[c]+w[i];
if(!vis[y])
{
q.push(y);
vis[y]=;
}
}
}
}
//for(int i=1;i<=n;i++)cout<<dist[i]-dist[i-1]<<" ";
//cout<<endl;
}
int main()
{
n=read();m=read();
for(int i=;i<=m;i++)
{
x=read();y=read();z=read();
maxn=max(maxn,y);
//dist[y]>=dist[x]+z
add(x,y+,z);
}
for(int i=;i<=n;i++)
{
//dist[i-1]>=dist[i]-1
//dist[i-1]>=dist[i]-1
add(i,i-,-);
//dist[i]>=dist[i-1]+0
add(i-,i,);
}
for(int i=;i<=n;i++)
{
dist[i]=-;
add(,i,);
}
spfa();
cout<<dist[maxn+];
return ;
}
[暑假集训Day2T1]种树的更多相关文章
- 2015UESTC 暑假集训总结
day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...
- STL 入门 (17 暑假集训第一周)
快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...
- 暑假集训Day2 互不侵犯(状压dp)
这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...
- 暑假集训Day1 整数划分
题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...
- 2013ACM暑假集训总结-致将走上大三征途的我
回想起这个暑假,从开始与雄鹰一起的纠结要不要进集训队,与吉吉博博组队参加地大邀请赛,害怕进不了集训队.当时激励我月份开始接触的,记得当时在弄运动会来着,然后就问了雄鹰一些输入输出的东西,怀着满心的期待 ...
- [补档]暑假集训D5总结
%dalao 今天又有dalao来讲课,讲的是网络流 网络流--从入门到放弃:7-29dalao讲课笔记--https://hzoi-mafia.github.io/2017/07/29/27/ ...
- [补档]暑假集训D1总结
归来 今天就这样回来了,虽然心里极其不想回来(暑假!@#的只有一天啊喂),但还是回来了,没办法,虽然不喜欢这个地方,但是机房却也是少数能给我安慰的地方,心再累,也没有办法了,不如好好集训= = %da ...
- 暑假集训(2)第七弹 -----今年暑假不AC(hdu2037)
J - 今年暑假不AC Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64 ...
- [补档]暑假集训D6总结
考试 不是爆零,胜似爆零= = 三道题,就拿了20分,根本没法玩好吧= = 本来以为打了道正解,打了道暴力,加上个特判分,应该不会死的太惨,然而--为啥我只有特判分啊- - 真的是惨. 讲完题觉得题是 ...
随机推荐
- CAS实现SSO单点登录
环境 cas-server-4.1.8,cas-client-3.4.0,Java-8,Maven-3,Tomcat-7.0.72 CAS Server 安装 点此进入 CAS 下载列表,选择下载 c ...
- LA 3263 That Nice Euler Circuit(欧拉定理)
That Nice Euler Circuit Little Joey invented a scrabble machine that he called Euler, after the grea ...
- GDB学习笔记
GDB是UNIX及UNIX-like下的调试工具.GDB这个调试工具相比于VC.z的优点是具有修复网络断点以及恢复链接等功能. 一.功能 一般来说,GDB主要帮助你完成下面四个方面的功能: 1.启动你 ...
- rabbitmq tags
#用户角色####################### RabbitMQ的用户角色分类:none.management.policymaker.monitoring.administrator Ra ...
- less:运算
less中的运算 -任何数字.颜色或者变量都可以参加运算,运算应该被包裹在括号中. -例如:+-*. @width: 30px; .box { width: (20 + 5) * @width; } ...
- MongoDb学习 自定义配置mongodb连接
最近研究了mongodb获取本地连接属性的方案,场景就是mongodb的连接地址不在配置文件中配置,而是在代码中写好,代码中是从本地文件读取地址. public class MongoConfig { ...
- Django ormmodel模型字段参考文章
Model 字段参考 (Model field reference)¶ 本文档包含所有 字段选项 (field options) 的内部细节和 Django 已经提供的 field types . 参 ...
- 匈牙利算法&模板O(mn)HDU2063
#include<cstdio> #include<cstring> #define maxn 510 using namespace std; int k,g,b,x,y,a ...
- Harbor修改暴露端口
把原来的端口映射改成1180 一 修改docker-compose.yml [root@topcheer ~]# cat /mnt/harbor/docker-compose.yml version: ...
- Python_008(文件操作)
一.文件操作 1.只读操作 f = open("taibai.txt",mode = "r",encoding = "utf-8" s = ...