题解:

。。感觉挺烦得 而且我都没有注意到树随机这件事情。。

就写个30分的莫队。。

#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (int i=h;i<=t;i++)
#define dep(i,t,h) for (int i=t;i>=h;i--)
#define me(x) memset(x,0,sizeof(x))
namespace IO{
char ss[<<],*A=ss,*B=ss;
IL char gc()
{
return A==B&&(B=(A=ss)+fread(ss,,<<,stdin),A==B)?EOF:*A++;
}
template<class T>void read(T &x)
{
rint f=,c; while (c=gc(),c<||c>) if (c=='-') f=-; x=(c^);
while (c=gc(),c>&&c<) x=(x<<)+(x<<)+(c^); x*=f;
}
char sr[<<],z[]; int Z,CC=-;
template<class T>void wer(T x)
{
if (x<) sr[++CC]='-',x=-x;
while (z[++Z]=x%+,x/=);
while (sr[++CC]=z[Z],--Z);
}
IL void wer1()
{
sr[++CC]=' ';
}
IL void wer2()
{
sr[++CC]='\n';
}
template<class T>IL void mina(T &x,T y) { if (x>y) x=y;}
template<class T>IL void maxa(T &x,T y) { if (x<y) x=y;}
template<class T>IL T MIN(T x,T y){return x<y?x:y;}
template<class T>IL T MAX(T x,T y){return x>y?x:y;}
};
using namespace IO;
unsigned int SA, SB, SC;
unsigned int rng61(){
SA ^= SA << ;
SA ^= SA >> ;
SA ^= SA << ;
unsigned int t = SA;
SA = SB;
SB = SC;
SC ^= t ^ SA;
return SC;
}
const int N=4.1e5;
int l,head[N],n,m,c[N];
struct re{
int a,b,c,d;
}e[N],a[N];
IL void arr(int x,int y)
{
e[++l].a=head[x];
e[l].b=y;
head[x]=l;
}
IL void addedge(int x,int y)
{
arr(x,y); arr(y,x);
}
int p;
void gen(){
cin>>n>>p>>SA>>SB>>SC;
l=; me(head);
for(int i = ; i <= p; i++)
addedge(i - , i);
for(int i = p + ; i <= n; i++)
addedge(rng61() % (i - ) + , i);
for(int i = ; i <= n; i++)
c[i] = rng61() % n + ;
}
int cnt,dfn1[N],dfn2[N],dep[N],block,num,pos[N];
int bz[][N],ans[N],jl[N],ans2,po[N],b[N];
void dfs(int x,int y)
{
bz[][x]=y; dep[x]=dep[y]+; dfn1[x]=++cnt;
b[cnt]=x;
for (rint u=head[x];u;u=e[u].a)
{
int v=e[u].b;
if (v!=y) dfs(v,x);
}
dfn2[x]=++cnt; b[cnt]=x;
}
void change(int x,int k)
{
x=b[x]; int o;
jl[x]+=k;
if (jl[x]==) o=; else o=-;
if (ans[c[x]]>) ans2--;
ans[c[x]]+=o;
if (ans[c[x]]>) ans2++;
}
int lca(int x,int y)
{
if (dep[x]<dep[y]) swap(x,y);
dep(i,,)
if (dep[bz[i][x]]>=dep[y])
x=bz[i][x];
if (x==y) return(x);
dep(i,,)
if (bz[i][x]!=bz[i][y])
x=bz[i][x],y=bz[i][y];
return bz[][x];
}
bool cmp(re x,re y)
{
int k1=pos[x.a],k2=pos[y.a];
return k1<k2||(k1==k2&&x.b<y.b);
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
int T,m;
cin>>T;
while (T--)
{
me(ans); me(jl); cnt=; ans2=;
gen();
dfs(,);
rep(i,,)
rep(j,,n)
bz[i][j]=bz[i-][bz[i-][j]];
cin>>m;
rep(i,,m)
{
int kk,x,y;
cin>>kk>>x>>y;
int k=lca(x,y);
if (k!=x&&k!=y)
{
if (dfn1[x]>dfn1[y]) swap(x,y);
a[i].a=dfn2[x],a[i].b=dfn1[y];
a[i].c=k;
} else
{
if (y==k) swap(x,y);
a[i].a=dfn1[x],a[i].b=dfn1[y];
a[i].c=;
}
a[i].d=i;
}
int n1=*n;
block=sqrt(n1);
num=(n1-)/block+;
rep(i,,n1) pos[i]=(i-)/block+;
sort(a+,a+m+,cmp);
rep(i,,m)
{
if (a[i].a<=a[i-].a)
rep(j,a[i].a,a[i-].a-) change(j,);
if (a[i].b>=a[i-].b)
rep(j,a[i-].b+,a[i].b) change(j,);
if (a[i].a>a[i-].a)
rep(j,a[i-].a,a[i].a-) change(j,-);
if (a[i].b<a[i-].b)
rep(j,a[i].b+,a[i-].b) change(j,-);
if (a[i].c)
{
if (ans[c[a[i].c]]==) po[a[i].d]=ans2+;
else po[a[i].d]=ans2;
} else po[a[i].d]=ans2;
}
rep(i,,m) wer(po[i]),wer2();
}
fwrite(sr,,CC+,stdout);
return ;
}

[SDOI2018]原题识别的更多相关文章

  1. #LOJ2564 SDOI2018 原题识别 主席树

    转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/9057297.html 原题链接: 今天考试考了前天的SDOI考题 天啊我菜爆,只有T2拿了30分 然后考试后半 ...

  2. SDOI2018:原题识别

    题解: https://files.cnblogs.com/files/clrs97/old-solution.pdf Code: #include<cstdio> #include< ...

  3. [CF676C]Vasya and String(尺取法,原题)

    题目链接:http://codeforces.com/contest/676/problem/C 原题题解链接:http://www.cnblogs.com/vincentX/p/5405468.ht ...

  4. (各个公司面试原题)在线做了一套CC++综合測试题,也来測一下你的水平吧(二)

    刚才把最后的10道题又看了下.也发上来吧. 以下给出试题.和我对题目的一些理解 前10道题地址 (各个公司面试原题)在线做了一套CC++综合測试题.也来測一下你的水平吧(一) 11.设已经有A,B,C ...

  5. NOIP2016原题终结测试(2017081801)

    NOIP2016还有几道原题没有写掉,今天就一并布置掉. 答案的问题,有部分会先放到NOIP题解中,是单独发布的. 最后会汇总放在答案中,各位不要急. 还有,后期会有原创题测试,这个不急,反正11月才 ...

  6. 2019.3.16 noiac的原题模拟赛

    RT,这太谔谔了,我不承认这是模拟赛 但是虽然是搬了三道题,题目本身也还能看,就这么着吧 (怎么机房里就我一道原题都没做过啊 T1 CF24D Broken Robot 比较简单地列出式子之后,我们发 ...

  7. 浅谈《剑指offer》原题:不使用条件、循环语句求1+2+……+n

    转载自:浅谈<剑指offer>原题:求1+2+--+n 如侵犯您的版权,请联系:windeal12@qq.com <剑指offer>上的一道原题,求1+2+--+n,要求不能使 ...

  8. P1048 采药(洛谷,动态规划递推,01背包原题)

    题目直接放链接 P1048 采药 这题只是01背包+背景故事而已 原题来的 PS:我写了一篇很详细的01背包说明,如果下面ac代码有看不懂的地方可以去看看 对01背包的分析与理解(图文) 下面上ac代 ...

  9. NOIP原题 斗地主(20190804)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4&l ...

随机推荐

  1. MySQL之路 ——2、步履维艰的建表

    1.首先,在windows下,不区分大小写.Linux下可能要区分,具体参考下面文章 mysql表名忽略大小写问题记录 2.用command line client 每句以分号结尾. 3.Navica ...

  2. 【转】Java内部类详解

    一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一 ...

  3. Hibernate search使用示例(基础小结-注解方式)

    (对于项目环境配置,一直没怎么看过.这次经历里从基础环境搭建到hibernate search示例的完成) 1.首先创建project,选择了web project. 2.导入hibernate se ...

  4. 【算法】狄克斯特拉算法(Dijkstra’s algorithm)

    狄克斯特拉算法(Dijkstra’s algorithm) 找出最快的路径使用算法——狄克斯特拉算法(Dijkstra’s algorithm). 使用狄克斯特拉算法 步骤 (1) 找出最便宜的节点, ...

  5. pyhon 前面补充和set

    一, 主要内容. 补充一个字符串的基本操作 li = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"] s = ...

  6. Ex 2_16 给定一个无穷数组..._第二次作业

    先比较数组的A[0]元素,若不相等接下来比较A[1],A[2],A[4],A[8]…,若找到一个区间A[2n-1]<x<A[2n],再对这个区间进行折半查找操作.总的时间为O(logn). ...

  7. nginx负载均衡后端tomcat无法加载js资源

    JS或css无法完全加载 nginx的代理缓存区,默认较小导致部分文件出现加载不全的问题,比较典型的如jQuery框架,可以通过配置调整nginx的缓存区即可.主要参考proxy参数 最终完整配置如下 ...

  8. Inspector did not run successfully.

    装虚拟机,卡在这个报错1天了, server没有问题,其余所有的agent都不能运行. 这部分没有日志,只有单纯的报错信息,omg,百度.bing一顿骚操作,还是没有解决问题. 因为默认安装jdk1. ...

  9. js 获取当前的网址

    http://www.xcx.cc/index.php/home/index/ind?idf=12321var $cur_url=window.location.href; //获取全部的网址var ...

  10. 1005:Number Sequence(hdu,数学规律题)

    Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...