【BZOJ4383】[POI2015]pustynia
题意:
建议Alt+F4百度一下
题解:
差分约束+线段树优化建图,直接按照拓扑序跑就行了
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define DCSB {printf("NIE");exit(0);}
using namespace std;
struct node{
int ls,rs,v;
}t[];
struct edge{
int v,w,next;
}a[];
int n,m,s,l,r,k,u,v,x,cnt=,rt,tot=,q[],head[],num[],f[],in[];
void add(int u,int v,int w){
a[++tot].v=v;
a[tot].w=w;
a[tot].next=head[u];
head[u]=tot;
in[v]++;
}
void build(int &u,int l,int r){
u=++cnt;
if(l==r){
t[l].v=u;
return;
}
int mid=(l+r)/;
build(t[u].ls,l,mid);
build(t[u].rs,mid+,r);
add(t[u].ls,u,);
add(t[u].rs,u,);
}
void updata(int u,int l,int r,int L,int R,int v){
if(l==L&&r==R){
add(u,cnt,v);
return;
}
int mid=(l+r)/;
if(R<=mid)updata(t[u].ls,l,mid,L,R,v);
else if(L>mid)updata(t[u].rs,mid+,r,L,R,v);
else{
updata(t[u].ls,l,mid,L,mid,v);
updata(t[u].rs,mid+,r,mid+,R,v);
}
}
void topsort(){
int l=,r=;
for(int i=;i<=cnt;i++){
if(!in[i]){
q[++r]=i;
f[i]=;
}
}
while(l<r){
int u=q[++l];
if(f[u]>)DCSB
if(f[u]>num[u]&&num[u]!=)DCSB
f[u]=max(f[u],num[u]);
for(int tmp=head[u];tmp!=-;tmp=a[tmp].next){
int v=a[tmp].v;
in[v]--;
if(!in[v])q[++r]=v;
f[v]=max(f[v],f[u]+a[tmp].w);
}
}
if(r<cnt)DCSB
}
int main(){
memset(head,-,sizeof(head));
scanf("%d%d%d",&n,&s,&m);
build(rt,,n);
for(int i=;i<=s;i++){
scanf("%d%d",&u,&v);
num[t[u].v]=v;
}
for(int i=;i<=m;i++){
scanf("%d%d%d",&l,&r,&k);
l--,cnt++;
for(int j=;j<=k;j++){
scanf("%d",&x);
add(cnt,t[x].v,);
if(l+<x)updata(rt,,n,l+,x-,);
l=x;
}
if(x<r)updata(rt,,n,x+,r,);
}
topsort();
printf("TAK\n");
for(int i=;i<=n;i++)printf("%d ",f[t[i].v]);
return ;
}
【BZOJ4383】[POI2015]pustynia的更多相关文章
- 【BZOJ4383】[POI2015]Pustynia 线段树优化建图
[BZOJ4383][POI2015]Pustynia Description 给定一个长度为n的正整数序列a,每个数都在1到10^9范围内,告诉你其中s个数,并给出m条信息,每条信息包含三个数l,r ...
- 【bzoj4383】[POI2015]Pustynia 线段树优化建图+差分约束系统+拓扑排序
题目描述 给定一个长度为n的正整数序列a,每个数都在1到10^9范围内,告诉你其中s个数,并给出m条信息,每条信息包含三个数l,r,k以及接下来k个正整数,表示a[l],a[l+1],...,a[r- ...
- 【BZOJ4379】[POI2015]Modernizacja autostrady 树形DP
[BZOJ4379][POI2015]Modernizacja autostrady Description 给定一棵无根树,边权都是1,请去掉一条边并加上一条新边,定义直径为最远的两个点的距离,请输 ...
- 【BZOJ4380】[POI2015]Myjnie 区间DP
[BZOJ4380][POI2015]Myjnie Description 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i].有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[ ...
- 【BZOJ4382】[POI2015]Podział naszyjnika 堆+并查集+树状数组
[BZOJ4382][POI2015]Podział naszyjnika Description 长度为n的一串项链,每颗珠子是k种颜色之一. 第i颗与第i-1,i+1颗珠子相邻,第n颗与第1颗也相 ...
- 【BZOJ4384】[POI2015]Trzy wieże 树状数组
[BZOJ4384][POI2015]Trzy wieże Description 给定一个长度为n的仅包含'B'.'C'.'S'三种字符的字符串,请找到最长的一段连续子串,使得这一段要么只有一种字符 ...
- 【BZOJ4378】[POI2015]Logistyka 树状数组
[BZOJ4378][POI2015]Logistyka Description 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这 ...
- 【BZOJ4385】[POI2015]Wilcze doły 单调栈+双指针法
[BZOJ4385][POI2015]Wilcze doły Description 给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0.请找到最长的一段 ...
- 【BZOJ3747】[POI2015]Kinoman 线段树
[BZOJ3747][POI2015]Kinoman Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第 ...
随机推荐
- 别让好想法埋没:如何进行APP开发?
经常和许多创业者讨论,发现很多人想法都不错,但是都不知道该如何实现,今天就如何引导大家走出第一步写一篇文章,很多人通常误会一件事情,认为程序员开发可以一步步把自己的想法拼接出来,我有一个功能点,就让程 ...
- MySQL 关闭 binlog 日志
[关闭binlog日志] 1.vim /etc/my.cnf 注释如下内容: #log-bin=mysql-bin #binlog_format=mixed #server-id = 1 #expir ...
- NOI 2015 寿司晚宴 (状压DP+分组背包)
题目大意:两个人从2~n中随意取几个数(不取也算作一种方案),被一个人取过的数不能被另一个人再取.两个人合法的取法是,其中一个人取的任何数必须与另一个人取的每一个数都互质,求所有合法的方案数 (数据范 ...
- vue svg的使用
项目要求: 需要把websocket推送的数据进行展示.不停地刷掉旧的数据.但是需要根据数据坐标圈出来对应的车辆. 开始使用的是canvas进行画图,思路是使用absolute定位,for循环,在图片 ...
- 紫书 习题7-13 UVa 817(dfs+栈求表达式的值)
题目链接 点击打开链接 这道题分为两个部分, 一用搜索枚举每种可能, 二计算表达式的值, 有挺多细节需要注意 特别注意我的代码中在计算表达式的值中用到了一个!(代码枚举中的!表示不加符号, 我现在说 ...
- 洛谷 P1278 单词游戏
P1278 单词游戏 题目描述 Io和Ao在玩一个单词游戏. 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致. 游戏可以从任何一个单词开始. 任何单 ...
- 5.3.5 namedtuple() 创建命名字段的元组结构
在命名元组里.给每一个元组的位置加入一个名称,而且能够通过名称来訪问.大大地提高可读性,以便写出清晰代码,提高代码的维护性.事实上它就像C++里的结构体. collections.namedtuple ...
- UltraEdit正則表達式介绍及实例
前几天,有个将Excel中的数据导入到数据库中的需求.原本想到用程序读取Excel中的数据并存储到数据库中,但经一哥们的提醒,说用 EditPlus或UltraEdit这种工具直接将数据拼凑成SQL插 ...
- [TypeScript] Generic Functions, class, Type Inference and Generics
Generic Fucntion: For example we have a set of data and an function: interface HasName { name: strin ...
- [Python]threading local 线程局部变量小測试
概念 有个概念叫做线程局部变量.一般我们对多线程中的全局变量都会加锁处理,这样的变量是共享变量,每一个线程都能够读写变量,为了保持同步我们会做枷锁处理.可是有些变量初始化以后.我们仅仅想让他们在每一个 ...