description


analysis

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

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

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

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

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

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


code

  1. #pragma GCC optimize("O3")
  2. #pragma G++ optimize("O3")
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<algorithm>
  6. #include<queue>
  7. #define MAXN 100005
  8. #define ll long long
  9. #define reg register ll
  10. #define max(x,y) ((x>y)?(x):(y))
  11. #define min(x,y) ((x<y)?(x):(y))
  12. #define fo(i,a,b) for (reg i=a;i<=b;++i)
  13. #define fd(i,a,b) for (reg i=a;i>=b;--i)
  14. #define rep(i,a) for (reg i=last[a];i;i=next[i])
  15. using namespace std;
  16. ll last[MAXN*50],next[MAXN*50],tov[MAXN*50],len[MAXN*50];
  17. ll a[MAXN*20],d[MAXN*20],pos[MAXN];
  18. ll n,m,q,now,tot;
  19. queue<ll>Q;
  20. inline ll read()
  21. {
  22. ll x=0,f=1;char ch=getchar();
  23. while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
  24. while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
  25. return x*f;
  26. }
  27. inline void link(ll x,ll y,ll z){next[++tot]=last[x],last[x]=tot,tov[tot]=y,len[tot]=z,++d[y];}
  28. inline void maketree(ll t,ll l,ll r)
  29. {
  30. now=max(now,t);if (l==r){pos[l]=t;return;}
  31. ll mid=(l+r)>>1;link(t<<1,t,0),link((t<<1)+1,t,0);
  32. maketree(t<<1,l,mid),maketree((t<<1)+1,mid+1,r);
  33. }
  34. inline void query(ll t,ll l,ll r,ll x,ll y)
  35. {
  36. if (l==x && y==r){link(t,now,0);return;}
  37. ll mid=(l+r)>>1;
  38. if (x<=mid)query(t<<1,l,mid,x,min(y,mid));
  39. if (y>mid)query((t<<1)+1,mid+1,r,max(x,mid+1),y);
  40. }
  41. int main()
  42. {
  43. freopen("web.in","r",stdin);
  44. //freopen("web.out","w",stdout);
  45. n=read(),m=read(),q=read();
  46. maketree(1,1,n);
  47. fo(i,1,m){ll x=read();a[pos[x]]=read();}
  48. while (q--)
  49. {
  50. ll l=read(),r=read(),k=read(),x=l;++now;
  51. fo(i,1,k)
  52. {
  53. ll y=read();if (x<=y-1)query(1,1,n,x,y-1);
  54. link(now,pos[y],1),x=y+1;
  55. }
  56. if (x<=r)query(1,1,n,x,r);
  57. }
  58. fo(i,1,now)if (!d[i]){Q.push(i);if (!a[i])a[i]=1;}
  59. while (!Q.empty())
  60. {
  61. ll x=Q.front();Q.pop();
  62. rep(i,x)
  63. {
  64. a[tov[i]]=max(a[tov[i]],a[x]+len[i]);
  65. if (!(--d[tov[i]]))Q.push(tov[i]);
  66. }
  67. }
  68. printf("Possible\n");
  69. fo(i,1,n)printf("%lld ",a[pos[i]]);
  70. printf("\n");
  71. return 0;
  72. }

【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. mysql-视图及索引简介

    一.视图的创建.作用及注意事项 1.创建:create view 视图名 as select 语句: 2.删除:drop view 视图名 3.作用: 数据库视图允许简化复杂查询 数据库视图有助于限制 ...

  2. linux sed删除^M换行符以及^[[转义字符

    1. 删除文档中的蓝色转义字符^M 注意:^M 不能从键盘输入^和M,也不能复制.而是需要按Ctrl+v 然后再按Ctrl+M 按Ctrl+v的时候屏幕不会输出,再按下Ctrl+M的时候即会出现^M  ...

  3. 关于STLINK

    关于STLINK 1.STLIN固件升级 1)打开ST-LINK Utility,选择ST-LINK->Firmware update 2)连接ST-LINK 3)可以看到STLINK当前的软件 ...

  4. 【JS学习】慕课网2-7 练习题:制作新按钮,“新窗口打开网站” ,点击打开新窗口。

    要求: 1.新窗口打开时弹出确认框,是否打开 提示: 使用 if 判断确认框是否点击了确定,如点击弹出输入对话框,否则没有任何操作. 2.通过输入对话框,确定打开的网址,默认为 http://www. ...

  5. 华视身份证读卡器获取uid号vue单文件组件版本

    <template> <div id="app" ref="app"> <object ref="CertCtl&quo ...

  6. React Native 安卓模拟器调出Dev Setting

    Android Studio 模拟器调出Dev Setting 实现热更新 cmd进入项目目录 F:\study\AwesomeProject> 执行 adb shell input keyev ...

  7. Mate Translate的特色功能phrasebook 常用语手册介绍

    Mate Translate是Mac os系统上一款多国语言即时翻译工具,支持103种语言之间的即时互译,还可以在你的所有设备之间轻松同步.Mate Translate 不但推出了适应各个平台使用的客 ...

  8. NX二次开发-使用MFC对话框不能用UF_UI_select等函数解决方法

    VC/MFC调用UG Dialog要进入加锁状态 加锁 UF_UI_lock_ug_access ( UF_UI_FROM_CUSTOM ); 此处为UF_UI_select的函数 解锁 UF_UI_ ...

  9. iptables对请求的URL作IP访问控制

    服务器运行环境是Tomcat,现在要实现的目的是,只允许特定的IP访问某个目录,一种方法是在tomcat配置文件server.conf中,使用RemoteAddrValve对虚拟主机做访问控制.另外一 ...

  10. eclipse git项目的冲突文件处理

    https://jingyan.baidu.com/article/3c48dd34895a07e10ae35871.html