调了一个下午只有八十分QAQ md弃了不管了 对拍也没拍出来 鬼知道是什么数据把我卡了QAQ

没事我只是个SB而已 这题其实还是蛮正常的

做法其实很简单 根据链剖的构造方法 你每次修改都是一段又一段的线段

那么你只要求一下线段并起来后哪些地方被覆盖了>=t次 不过要基数排序一波不然会T

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using std::swap;
using std::max;
const int N=,M=,B=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,m;
int first[N],cnt=;
struct node{int to,next;}e[*N];
void ins(int a,int b){e[++cnt]=(node){b,first[a]}; first[a]=cnt;}
void insert(int a,int b){ins(a,b); ins(b,a);}
int dep[N],top[N],sz[N],son[N],mx[N],fa[N],id[N],idp=;
void f1(int x){
sz[x]=;
for(int i=first[x];i;i=e[i].next){
int now=e[i].to;
if(now==fa[x]) continue;
fa[now]=x; dep[now]=dep[x]+;
f1(now);sz[x]+=sz[now];
if(sz[now]>sz[son[x]]) son[x]=now;
}
}
void f2(int x,int tp){
top[x]=tp; mx[x]=id[x]=idp++;
if(son[x]) f2(son[x],tp),mx[x]=max(mx[x],mx[son[x]]);
for(int i=first[x];i;i=e[i].next){
int now=e[i].to;
if(now!=fa[x]&&now!=son[x]) f2(now,now),mx[x]=max(mx[x],mx[now]);
}
}
bool ly;
int a,b,t,cntq;
int f[*M];
struct pos{int r,id,s;}q[M];
bool cmp(pos a,pos b){return a.r<b.r;}
void pcalc(){
memset(f,,sizeof(f));
for(int i=;i<cntq;i++) f[q[i].r]+=q[i].s;
cntq=;
}
void modify(int x,int y,int k){
while(top[x]!=top[y]){
if(dep[top[x]]<dep[top[y]]) swap(x,y);
if(!ly){f[id[top[x]]]++; f[id[x]+]--; x=fa[top[x]];continue;}
q[cntq++]=(pos){id[top[x]],k,};
q[cntq++]=(pos){id[x]+,k,-};
if(cntq>1e6&&ly){pcalc(); ly=false;}
x=fa[top[x]];
}
if(id[x]>id[y]) swap(x,y);
if(!ly){f[id[x]]++; f[id[y]+]--; return ;}
q[cntq++]=(pos){id[x],k,};
q[cntq++]=(pos){id[y]+,k,-};
}
int T[];
pos *s[],*mp;
pos bb[M];
void jsort(int n){
memset(T,,sizeof(T)); mp=bb;
for(int i=;i<n;i++) ++T[q[i].r&];
for(int i=;i<B;i++) s[i]=mp,mp+=T[i];
for(int i=;i<n;i++) *s[q[i].r&]++=q[i];
memset(T,,sizeof(T)); mp=q;
for(int i=;i<n;i++) ++T[bb[i].r>>];
for(int i=;i<B;i++) s[i]=mp,mp+=T[i];
for(int i=;i<n;i++) *s[bb[i].r>>]++=bb[i];
}
int main(){
//freopen("gg.in","r",stdin);
int x,y;
n=read(); m=read();
for(int i=;i<n;i++) x=read(),y=read(),insert(x,y);
f1(); f2(,);
for(int i=;i<=m;i++){
a=read(); b=read(); t=read();
cntq=;
ly=true;
for(int j=;j<=a;j++){
x=read(); y=read();
modify(x,y,i);
}
for(int j=;j<=b;j++){
x=read();
if(!ly){f[id[x]]++; f[mx[x]+]--;continue;}
q[cntq++]=(pos){id[x],i,};
q[cntq++]=(pos){mx[x]+,i,-};
if(cntq>1e6&&ly){pcalc(); ly=false;}
}
if(t==){printf("%d\n",n); continue;}
if(ly){
jsort(cntq);
int now=,ans=;
for(int j=;j<cntq;j++){
now+=q[j].s;
if(j!=cntq-&&now>=t) ans=ans+q[j+].r-q[j].r;
}
if(now>=t) ans=ans+n-q[cntq-].r+;
printf("%d\n",ans);
}
else{
int now=,ans=;
for(int j=;j<=n;j++){
now+=f[j];
if(now>=t) ans++;
}printf("%d\n",ans);
}
}
return ;
}

洛谷金秋夏令营模拟赛 第2场 T11738 伪神的更多相关文章

  1. 洛谷金秋夏令营模拟赛 第2场 T11737 时之终末

    这道题就是道状压dp...比赛的时候太贪心 然后状压又不好 所以T2 T3一起挂了QAQ 吸取教训QAQ f[i][j][k]表示前i个数选了j个 最后a个的状态为k的答案 #include<c ...

  2. 洛谷 P5046 [Ynoi2019 模拟赛] Yuno loves sqrt technology I(分块+卡常)

    洛谷题面传送门 zszz,lxl 出的 DS 都是卡常题( 首先由于此题强制在线,因此考虑分块,我们那么待查询区间 \([l,r]\) 可以很自然地被分为三个部分: 左散块 中间的整块 右散块 那么这 ...

  3. 洛谷CON1041 NOIP模拟赛一试

    A T2-power of 2 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式:  % 10007 输入 ...

  4. [洛谷P5048][Ynoi2019模拟赛]Yuno loves sqrt technology III

    题目大意:有$n(n\leqslant5\times10^5)$个数,$m(m\leqslant5\times10^5)$个询问,每个询问问区间$[l,r]$中众数的出现次数 题解:分块,设块大小为$ ...

  5. 【洛谷】xht模拟赛 题解

    前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...

  6. 洛谷P5048 [Ynoi2019模拟赛]Yuno loves sqrt technology III(分块)

    传送门 众所周知lxl是个毒瘤,Ynoi道道都是神仙题 用蒲公英那个分块的方法做结果两天没卡过去→_→ 首先我们分块,预处理块与块之间的答案,然后每次询问的时候拆成整块和两边剩下的元素 整块的答案很简 ...

  7. [洛谷0925]NOIP模拟赛 个人公开赛 OI

     P3395 路障 题目背景 此题约为NOIP提高组Day1T1难度. 题目描述 B君站在一个n*n的棋盘上.最开始,B君站在(1,1)这个点,他要走到(n,n)这个点. B君每秒可以向上下左右的某个 ...

  8. 洛谷 P5048 - [Ynoi2019 模拟赛] Yuno loves sqrt technology III(分块)

    题面传送门 qwq 感觉跟很多年前做过的一道题思路差不多罢,结果我竟然没想起那道题?!!所以说我 wtcl/wq 首先将 \(a_i\) 离散化. 如果允许离线那显然一遍莫队就能解决,复杂度 \(n\ ...

  9. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

随机推荐

  1. lintcode-197-排列序号

    197-排列序号 给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号.其中,编号从1开始. 样例 例如,排列 [1,2,4] 是第 1 个排列. 思路 参考http://www ...

  2. Matlab画平滑曲线的两种方法

    自然状态下,用plot画的是折线,而不是平滑曲线. 有两种方法可以画平滑曲线,第一种是拟合的方法,第二种是用spcrv,其实原理应该都一样就是插值.下面是源程序,大家可以根据需要自行选择,更改拟合的参 ...

  3. html5 canvas 图像处理

    1.图像放大缩小 <script> var cvs = document.getElementById("canvas"); cvs.width = cvs.heigh ...

  4. 【bzoj1076】[SCOI2008]奖励关 期望dp+状态压缩dp

    题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...

  5. html的body内标签之label标签和fieldset标签

    1. <label> 标签为 input 元素定义标注(标记). label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如果您在 label 元素内点击文本,就会触发 ...

  6. Elasticsearch 更新索引settings

    1.更新索引设置:将副本减至0,修改索引分析器为ik_max_word和检索分词器为ik_smart 2.需要先将索引关闭,然后再PUT setings POST user/_close PUT us ...

  7. 【题解】CF#280 C-Game on Tree

    感觉对期望也一无所知……(:′⌒`)╮(╯﹏╰)╭ 一直在考虑怎么dp,最后看了题解——竟然是这样的???[震惊]但是看了题解之后,觉得确实很有道理…… 我们可以考虑最后答案的组成,可以分开计算不同的 ...

  8. 【刷题】BZOJ 5154 [Tjoi2014]匹配

    Description 有N个单身的男孩和N个单身女孩,男孩i和女孩j在一起得到的幸福值为Hij.一个匹配即对这N个男孩女孩的安排: 每个男孩恰好有一个女朋友,每个女孩恰好有一个男朋友.一个匹配的幸福 ...

  9. BZOJ4815 [CQOI2017]小Q的表格 【数论 + 分块】

    题目链接 BZOJ4815 题解 根据题中的式子,手玩一下发现和\(gcd\)很像 化一下式子: \[ \begin{aligned} bf(a,a + b) &= (a + b)f(a,b) ...

  10. React受控组件和非受控组件

    受控组件和非受控组件主要是用来解决表单组件状态谁来控制的问题.因为用户的输入会反应在界面上,相当于视图的状态发生了变化,而react是通过虚拟DOM比对修改视图的,这里就要决定谁来控制表单组件的状态. ...