签到题这里久懒得写了。

B - 缺失的数据范围

Total Submission(s): 2602    Accepted Submission(s): 559

题意:求最大的N,满足N^a*[log2(N)]^b<=K;

思路:二分即可,log2要手写,然后就是注意判pow是否超过long long。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=;
const ll inf=1e18;
ll A,B,K,ans,aa[];
ll Log(ll x){
int pos=lower_bound(aa+,aa++,x)-aa;
return pos;
}
bool check(ll x){
ll a=,res=;
ll b=Log(x);// cout<<b<<" "<<aa[b]<<" ";
for(int i=;i<=A;i++){
if(a>K/x) return false;
a=a*x; if(a>K) return false;
}
for(int i=;i<=B;i++){
if(res>K/b) return false;
res=res*b; if(res>K) return false;
}
//cout<<a<<" "<<b<<endl;
if(a>K/res) return false;
if(a*res<=K) return true;
}
int main()
{
int T;
aa[]=;
for(int i=;i<=;i++) aa[i]=aa[i-]*;
scanf("%d",&T);
while(T--){
scanf("%lld%lld%lld",&A,&B,&K); ans=;
ll L=,R=K;
while(L<=R){
ll Mid=(L+R)/;
if(check(Mid)) ans=Mid,L=Mid+;
else R=Mid-;
}
printf("%lld\n",ans);
}
return ;
}

E - 对称数

Total Submission(s): 469    Accepted Submission(s): 88

题意:给出一棵带点权的树,Q次询问,每次询问给出(u,v),求这个路径上最小的出现次数位偶数的正整数。

思路:树上莫队:皇室联邦法分块,括号法移动区间。

皇室联邦法分块:即按照DFS虚分块。

括号法:dfs时,记录第一次访问时间戳in[]和最后一次访问时间戳out[]。如果访问路径(u,v),保证in[u]<in[v]起对应的区间就是:

1,LCA==u,对应[in[u],in[v]];

2,LCA!=u,对应[out[u],in[v]]+LCA;LCA单独考虑为pre,不要忽略。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn],Laxt[maxn],Next[maxn],To[maxn],cnt,B;
int g[maxn],dep[maxn],fa[maxn][],ans[maxn],scc,tot;
int in[maxn],out[maxn],p[maxn];
bitset<maxn>Set;
struct in{
int u,v,id;
friend bool operator <(in ww,in vv){
if(g[ww.u]==g[vv.u]) return g[ww.v]<g[vv.v];
return g[ww.u]<g[vv.u];
}
}s[maxn];
void add(int u,int v)
{
Next[++cnt]=Laxt[u]; Laxt[u]=cnt; To[cnt]=v;
}
void dfs(int u,int f)
{
fa[u][]=f; dep[u]=dep[f]+;
if(tot%B==) scc++; g[u]=scc;
in[u]=++tot; p[tot]=a[u];
for(int i=Laxt[u];i;i=Next[i]){
if(To[i]!=f) dfs(To[i],u);
}
out[u]=++tot; p[tot]=a[u];
}
int LCA(int u,int v)
{
if(dep[u]<dep[v]) swap(u,v);
for(int i=;i>=;i--)
if(dep[fa[u][i]]>=dep[v]) u=fa[u][i];
if(u==v) return u;
for(int i=;i>=;i--)
if(fa[u][i]!=fa[v][i]) u=fa[u][i],v=fa[v][i];
return fa[u][];
}
int main()
{
int T,N,M,u,v,Lca;
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&M); B=sqrt(N);
cnt=; rep(i,,N) Laxt[i]=;
rep(i,,N) scanf("%d",&a[i]);
rep(i,,N-){
scanf("%d%d",&u,&v);
add(u,v); add(v,u);
}
tot=; scc=; dfs(,);
rep(i,,) rep(j,,N) fa[j][i]=fa[fa[j][i-]][i-];
rep(i,,M) scanf("%d%d",&s[i].u,&s[i].v),s[i].id=i;
rep(i,,M) if(in[s[i].u]>in[s[i].v]) swap(s[i].u,s[i].v);
sort(s+,s+M+);
Set.set();
int L=,R=,pre=; Set.flip(p[]);
rep(i,,M) {
Set.flip(pre);
int Lca=LCA(s[i].u,s[i].v),l,r;
if(Lca==s[i].u) l=in[s[i].u],r=in[s[i].v],pre=;
else l=out[s[i].u],r=in[s[i].v],Set.flip(a[Lca]),pre=a[Lca];
while(l<L) Set.flip(p[--L]);
while(l>L) Set.flip(p[L++]);
while(r>R) Set.flip(p[++R]);
while(r<R) Set.flip(p[R--]);
int pos=Set._Find_next();
ans[s[i].id]=pos;
}
rep(i,,M) printf("%d\n",ans[i]);
}
return ;
}

I - 回文树

题意:给出一棵带权树,点权随机给出,求树上有多少回文串。

思路:由于是随机,我们大胆猜测,只存在长度为1,2和3的回文串。

Total Submission(s): 198    Accepted Submission(s): 45

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn]; map<int,int>mp[maxn];
int main()
{
int N,T,u,v;
scanf("%d",&T);
while(T--){
int ans=;
scanf("%d",&N);
rep(i,,N) mp[i].clear();
rep(i,,N) scanf("%d",&a[i]);
rep(i,,N-){
scanf("%d%d",&u,&v);
if(a[u]==a[v]) ans++;
ans+=mp[u][a[v]];
ans+=mp[v][a[u]];
mp[u][a[v]]++; mp[v][a[u]]++;
}
printf("%d\n",ans+N);
}
return ;
}

2018CCPC女生赛(树上莫队)的更多相关文章

  1. 【BZOJ 3735】苹果树 树上莫队(树分块+离线莫队+鬼畜的压行)

    2016-05-09 UPD:学习了新的DFS序列分块,然后发现这个东西是战术核导弹?反正比下面的树分块不知道要快到哪里去了 #include<cmath> #include<cst ...

  2. 【BZOJ-3757】苹果树 块状树 + 树上莫队

    3757: 苹果树 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1305  Solved: 503[Submit][Status][Discuss] ...

  3. [BZOJ 3052] [wc2013] 糖果公园 【树上莫队】

    题目链接:BZOJ - 3052 题目分析 这道题就是非常经典的树上莫队了,并且是带修改的莫队. 带修改的莫队:将询问按照 左端点所在的块编号为第一关键字,右端点所在的块为第二关键字,位于第几次修改之 ...

  4. 树上莫队 wowow

    构建:像线性的莫队那样,依旧是按sqrt(n)为一块分块. int dfs(int x){ ; dfn[x]=++ind; ;i<=;i++) if (bin[i]<=deep[x]) f ...

  5. spoj COT2 - Count on a tree II 树上莫队

    题目链接 http://codeforces.com/blog/entry/43230树上莫队从这里学的,  受益匪浅.. #include <iostream> #include < ...

  6. BZOJ 4129: Haruna’s Breakfast [树上莫队 分块]

    传送门 题意: 单点修改,求一条链的mex 分块维护权值,$O(1)$修改$O(S)$求mex...... 带修改树上莫队 #include <iostream> #include < ...

  7. 【WC2013】糖果公园 [树上莫队]

    题意: 一棵树,修改一个点的颜色,询问两点路径上每种颜色的权值$val[c]$*出现次数的权值$cou[w[c]]$的和 sro VFK 树上莫队 按照王室联邦的方法分块,块的大小直径个数有保证,并不 ...

  8. Codeforces 852I Dating 树上莫队

    Dating 随便树上莫队搞一搞就好啦. #include<bits/stdc++.h> #define LL long long #define LD long double #defi ...

  9. 【XSY1642】Another Boring Problem 树上莫队

    题目大意 给你一棵\(n\)个点的树,每个点有一个颜色\(c_i\),每次给你\(x,y,k\),求从\(x\)到\(y\)的路径上出现次数第\(k\)多的颜色的出现次数 \(n,q\leq 1000 ...

随机推荐

  1. YOLO V1论文理解

    摘要 作者提出了一种新的物体检测方法YOLO.YOLO之前的物体检测方法主要是通过region proposal产生大量的可能包含待检测物体的 potential bounding box,再用分类器 ...

  2. Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  3. English trip -- MC(情景课)3 C Do you have a sister?

    xu言:   学了困难的在去看以前的课程,发现真的容易多了.So 学习的最好方法和提速方式,那就是找困难的不断去挑战.尝试.尝试.在尝试! Grmmar ['græmə]  focus  ['fəʊk ...

  4. 20170405xlVBA快速录入

    Dim Rng As Range Dim Arr As Variant Dim LastCell As Range Dim FindText As String Dim ItemCount As Lo ...

  5. (GoRails) 用app/decorators来取代app/helpers; delegate()方法

    视频:https://gorails.com/episodes/decorators-from-scratch?autoplay=1 装饰设置风格:把Model层变的干净,但不使用app/helper ...

  6. Necklace CodeForces - 613C (构造)

    链接 大意: 给定n种珠子, 第i种有$a_i$个, 求将珠子穿成项链, 使得能使切开后的项链回文的切口尽量多 若有一种以上珠子为奇数, 显然不能为回文, 否则最大值一定是$gcd(a_1,a_2,. ...

  7. 一篇文章,读懂Netty的高性能架构之道

    一篇文章,读懂Netty的高性能架构之道 Netty是由JBOSS提供的一个java开源框架,是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架, ...

  8. python-day53--前端js

    一.基本语法(ECMA) 单行注释 // /* 多行注释 */ 变量赋值 默认以换行符作为结束符,有分好以分号作为结束符号 JS的引入方式: 1. <script> </script ...

  9. python-day49--前端 html

    一.列表标签 1.有序列表 <ol>       (order list ) 在浏览器中显示包括:padding , 有序排列     <li>:列表中的每一项. 2.无序列表 ...

  10. hdu2059 dpdpdp玄学5555~~

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...