description


analysis

  • 如果把所有大小关系连成边,小的往大的连,就可以直接上拓扑

  • 暴力连边时间复杂度\(O(n^2)\),然而连边的过程,考虑用线段树优化

  • 线段树上的所有儿子节点向父亲节点连\(0\)边,

  • 每个操作被分成\(k+1\)个小区间,然后该操作的编号向\(k\)个区间最大值连\(1\)边

  • 对于线段树上表示小区间的\(\log\)个区间,都向该编号连\(0\)边

  • 最后一波拓扑就好了,这类套路要记一下


code

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#define MAXN 100005
#define ll long long
#define reg register ll
#define max(x,y) ((x>y)?(x):(y))
#define min(x,y) ((x<y)?(x):(y))
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i)
#define rep(i,a) for (reg i=last[a];i;i=next[i]) using namespace std; ll last[MAXN*50],next[MAXN*50],tov[MAXN*50],len[MAXN*50];
ll a[MAXN*20],d[MAXN*20],pos[MAXN];
ll n,m,q,now,tot;
queue<ll>Q; inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline void link(ll x,ll y,ll z){next[++tot]=last[x],last[x]=tot,tov[tot]=y,len[tot]=z,++d[y];}
inline void maketree(ll t,ll l,ll r)
{
now=max(now,t);if (l==r){pos[l]=t;return;}
ll mid=(l+r)>>1;link(t<<1,t,0),link((t<<1)+1,t,0);
maketree(t<<1,l,mid),maketree((t<<1)+1,mid+1,r);
}
inline void query(ll t,ll l,ll r,ll x,ll y)
{
if (l==x && y==r){link(t,now,0);return;}
ll mid=(l+r)>>1;
if (x<=mid)query(t<<1,l,mid,x,min(y,mid));
if (y>mid)query((t<<1)+1,mid+1,r,max(x,mid+1),y);
}
int main()
{
freopen("web.in","r",stdin);
//freopen("web.out","w",stdout);
n=read(),m=read(),q=read();
maketree(1,1,n);
fo(i,1,m){ll x=read();a[pos[x]]=read();}
while (q--)
{
ll l=read(),r=read(),k=read(),x=l;++now;
fo(i,1,k)
{
ll y=read();if (x<=y-1)query(1,1,n,x,y-1);
link(now,pos[y],1),x=y+1;
}
if (x<=r)query(1,1,n,x,r);
}
fo(i,1,now)if (!d[i]){Q.push(i);if (!a[i])a[i]=1;}
while (!Q.empty())
{
ll x=Q.front();Q.pop();
rep(i,x)
{
a[tov[i]]=max(a[tov[i]],a[x]+len[i]);
if (!(--d[tov[i]]))Q.push(tov[i]);
}
}
printf("Possible\n");
fo(i,1,n)printf("%lld ",a[pos[i]]);
printf("\n");
return 0;
}

【JZOJ6411】上网的更多相关文章

  1. vmware上网的方式

    vmware上网设置 vmware虚拟机上网设置 我的一些心得,如下: 如何使vmware虚拟机中的操作系统能够上网? 第一种情况: 主机使用PPPOE拨号上网 方法一:NAT方式 1.先关闭虚拟机中 ...

  2. Linux不能上网ping:unknown host问题怎么解决?

    Linux不能上网提示ping:unknown host 检查步骤 Linux系统跟windows平台有所不同的是,为了更好的做网络服务应用.Linux下多用于网络服务器,而且操作界面是字符界面.对于 ...

  3. VirtualBox 桥接上网方式的配置

    最近在搞Redis所以装了个virtualbox的ubuntu的虚拟机, redis不是在ubuntu上. 因为需要使用本机客户端访问redis服务,所以需要配置虚拟机和本地机器的双向访问,所以就用到 ...

  4. kali linux之窥看女神上网隐私(ettercap+wireshark+zenmap +dsniff)

    作者:小波 http://www.cnblogs.com/xiaobo-Linux/ 无聊就玩了玩,不要干一些坏事哟~~网上也有一些文章关于kali linux的,就实战了一番.kali是用的debi ...

  5. Ubuntu 一直掉线 以及连不上网 解决办法

    新装了一个Ubuntu 系统16.04才使用的时候一切顺利 但是过了两三天  就会出现 频繁掉线的情况 于是上网找大神们的解决办法 把文件 /etc/ppp/options 里面的一个数值改大一点 l ...

  6. 升级Ubuntu 16.04 LTS后 DSL拨号上网(ppp)连接自动断开解决办法

    原本在Ubuntu 15.10用拨号上网没有问题,但升级了16.04 LTS后发现原来的DSL连接不上了.主要表现为: 1.在NetworkManager里面选择DSL Connection能够尝试拨 ...

  7. beaglebone black 固定IP上网(ubuntu16.04,console)

    今天把beaglebone black搞了下,让能通过网线上网.需要修改一些文件.刷的是ubuntu16.04系统,没有界面.不过资源占用很少,顺便说一下.系统下的vi不好用,没有安装vim. 下面的 ...

  8. (转) 注意啦,笔记本是无线的,虚拟机上网方式莫用NAT,好难整。

    有线网络 在有线网络的条件下,vmware的安装非常简单,上网方式几乎不用怎么设置(默认 NAT模式) 如果默认情况下不能上网,则按以下步骤尝试: ************************** ...

  9. PC使用网线上网的条件下,通过PC的Wifi共享提供手机上网教程

    场景和目标 你有一个笔记本(或装有无线网卡的PC),可以通过网线上网,但是没有无线路由器.现在想要通过笔记本的无线网,让手机也能共享wifi上网. 环境 Win7 操作系统.带有无线网卡的PC或笔记本 ...

随机推荐

  1. xshell安装错解决方案

    之前安装过XShell后来因为各种原因不能使用了,卸载和再次安装的时候安装一直失败.研究了好久终于找到解决方案. 只需要删除在C:\Program Files (x86)\InstallShield ...

  2. 【Muduo库】【base】基本类

    一.Timestamp类  1.类图如下: 2.  知识点 (1)     这个类继承了 muduo::copyable, 以及 boost::less_than_comparable. (2)    ...

  3. Oracle数据库中文乱码问题解决

    1.查看服务器端编码select userenv('language') from dual;我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK 2.执行语句 select * f ...

  4. 通过实例详细讲解PHP垃圾回收机制

    PHP垃圾回收机制:1. PHP可以自动进行内存管理,清除不需要的对象,主要使用了引用计数2. 在zval结构体中定义了ref_count和is_ref , ref_count是引用计数 ,标识此zv ...

  5. JMeter4.0 IF Controller

    推荐使用 __jexl3 函数生成 if controller判断条件 举个栗子: 1. 假如条件为 "${demo}" == "test" 2. 在If Co ...

  6. python语法学习

    global关键字(内部作用域想要对外部作用域的变量进行修改) decator装饰器,说白了就是一个函数指针的传递 *arg,**kwarg, 分别为tuple,dic传递

  7. BZOJ 1565: [NOI2009]植物大战僵尸(网络流+缩点)

    传送门 解题思路 最大权闭合子图.但是要注意一些细节,假如有一堆植物形成一个环,那么这些植物都是无敌的,并且他们保护的植物是无敌的,他们保护的保护的植物是无敌 的.所以要缩点,然后拓扑排序一次判无敌, ...

  8. 20165239 2018——2019Exp8 Web基础

    Exp8 Web基础 基础问题回答 (1)什么是表单 •表单在网页中主要负责数据采集功能. •一个表单有三个基本组成部分: ◦表单标签,这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务 ...

  9. (转)OpenFire源码学习之六:用户注册

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43413509 用户注册 注册流程: 1.客户端进行握手给服务端发送连接消息: <s ...

  10. python re模块使用

    re.findall() 查找字符 从字符串中找出符合模式的字符序列:findall(模式(正则表达式),目标字符串), 返回值为list类型,list元素为匹配出的各个字符串如: import re ...