题解:

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

就写个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. C# List 作为参数传递的值变化

    一.示例演示 namespace TestConsole { class Program { static void Main(string[] args) { Console.WriteLine(& ...

  2. git与eclipse集成之导入组件到Eclipse工程

    从工作目录中选择要导入的组件,右键选择:Import Projects,弹出窗口如下图所示,选择Import as general project 点击next,修改或使用默认的组件名称 点击fini ...

  3. python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查

    python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...

  4. springboot 文件上传大小配置

    转自:https://blog.csdn.net/shi0299/article/details/69525848 springboot上传文件大小的配置有两种,一种是设置在配置文件里只有两行代码,一 ...

  5. python 基础 Two day

    1.格式化输出 %s   字符串 %d   数字 %%  转义 % %f   小数 现在有以下需求,让用户输入name, age, job,hobby 然后输出如下所示: ------------ i ...

  6. bootstrap排列顺序

    写在 typora 的笔记 复制过来排版很丑,所以截图算了..

  7. Day7--------------IP地址配置

    ifconfig 查看网卡 ifconfig eth0 查看网卡eth0 配置网络地址: 临时配置: ifconfig eth0 192.168.10.100 netmask 255.255.255. ...

  8. OracleAES加密

    OracleAES加密 (2012-04-29 21:52:15)转载▼标签: oracle aes 加密 it 分类: 开发-- 加密函数CREATE OR REPLACE FUNCTION FUN ...

  9. Vue项目构建开发笔记(vue-lic3.0构建的)

    1.router.js里面 { path: '/about', name: 'about', // route level code-splitting // this generates a sep ...

  10. 整理oracle 树形查询

    注:本文参考了<整理oracle 树形查询> sql树形递归查询是数据库查询的一种特殊情形,也是组织结构.行政区划查询的一种最常用的的情形之一.下面对该种查询进行一些总结: create ...