zoukankan      html  css  js  c++  java
  • luogu P6592 [YsOI2020]幼儿园 |构造

    题目描述

    Ysuperman 热爱在 TA 的幼儿园里散步,为了更方便散步, TA 把幼儿园抽象成 (n) 个点,(m) 条边的有向图。 散步得多了, TA 就给了每一条边无与伦比的亲密程度:(1,2,cdots,m),越大代表越亲密。 TA 也给了每一个点无与伦比的编号:(1,2,cdots,n),其中 (1) 代表着幼儿园大门,但是每个点是没有亲密程度的。

    接下来 (k) 天,Ysuperman 每天会有一次散步计划。具体而言, TA 希望从 xix_ixi​ 号点出发,只经过亲密程度属于区间 ([l_i,r_i]) 的边,走到幼儿园大门 (1) 号点,期间经过的边的亲密程度必须单调递减,不然会因为 TA 有强迫症而不能回家。

    Ysuperman 看着自己刚刚画的草稿脑子一团浆糊, TA 发现 TA 始终没有办法规划出这么多合理路线,现在 TA 想请你帮 TA 。具体而言,对于每一天的计划,如果可行,则输出 1,反之输出 0。

    当然啦,有的时候 Ysuperman 很着急,需要你立马回复,有的时候 TA 可以等等你,先把所有问题问完再等你回复。

    输入格式

    第一行三个整数 (n,m,k,w),分别表示节点个数、边个数、Ysuperman 的计划个数,和 Ysuperman 的焦急程度,此处的 www 在后续输入中有用。

    此后 (m) 行的第 (i) 行有两个整数 (u_i,v_i)​,表示 Ysuperman 的幼儿园里有一条 (u_i) 号点到 (v_i)​ 号点的单向边,且亲密程度为 (i)

    此后 (k) 行的第 (i) 行有三个整数 (x_i,l_i,r_i)​,表示 Ysuperman 的第 iii 个计划。

    此处如果 (w=0),则 (x_i,l_i,r_i)​ 为明文,可以直接使用。

    如果 (w=1),则 (x_i,l_i,r_i)​ 为密文,你需要将它解密。解密操作是:令 (L) 为之前所有询问的输出之和(没有询问过则为 000),你需要将 (x_i ,l_i,r_i)​ 都异或 (L)

    输出格式

    (k) 行,每行只可能是 1 或 0,第 (i) 行的数表示第 (i) 个计划是否可行。


    #include<vector>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=1e5+5,M=2*N;
    inline int read(){
    	int x=0; char c=getchar();
    	while(c<'0'||c>'9')c=getchar();
    	while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48); c=getchar();}
    	return x;
    }
    int n,m,k,w,dp[N];
    vector<int>vec[2][N];
    signed main(){
    	n=read(),m=read(),k=read(),w=read();
    	for(int i=1;i<=n;i++)vec[0][i].push_back(0),vec[1][i].push_back(0);
    	for(int i=1,u,v;i<=m;i++){
    		u=read(),v=read();
    		if(u==1)continue;
    		if(v==1)dp[u]=i;
    		else dp[u]=max(dp[v],dp[u]);
    		vec[0][u].push_back(i);
    		vec[1][u].push_back(dp[u]);
    	}
    	int x,l,r,lastans=0;
    	while(k--){
    		x=read()^lastans,l=read()^lastans,r=read()^lastans;
    		int op=upper_bound(vec[0][x].begin(),vec[0][x].end(),r)-vec[0][x].begin()-1;
    		if(x==1||vec[1][x][op]>=l){
    			puts("1");
    			if(w)lastans++;
    		}else puts("0");
    		
    	}
    }
    
  • 相关阅读:
    测试思想-测试方法 常用测试操作手段
    测试思想-测试执行 缺陷提交,优先级
    loadrunner 技巧-模拟Run Logic中的随机Action运行
    loadrunner 脚本开发-执行操作系统命令
    测试思想-测试执行 测试过程中的用例维护
    测试思想-测试执行 如何进行回归测试?
    python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)
    python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)
    python 全栈开发,Day60(MySQL的前戏,数据库概述,MySQL安装和基本管理,初识MySQL语句)
    python 全栈开发,Day59(小米商城)
  • 原文地址:https://www.cnblogs.com/naruto-mzx/p/13033967.html
Copyright © 2011-2022 走看看