肝了两题...

  T1一眼题,分解质因数,找出2的个数和5的个数取min输出

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,inf=1e9;
int n,m,T;
int fac2[maxn],fac5[maxn];
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
int main()
{
freopen("zero.in","r",stdin);
freopen("zero.out","w",stdout);
read(T);
for(int i=;i<=;i++)
{
int x=i;fac2[i]=fac2[i-];fac5[i]=fac5[i-];
for(;(x&)==;x>>=)fac2[i]++;
for(;x%==;x/=)fac5[i]++;
}
while(T--)
{
read(m);read(n);
int cnt2=fac2[m]-fac2[n]-fac2[m-n];
int cnt5=fac5[m]-fac5[n]-fac5[m-n];
printf("%d\n",min(cnt2,cnt5));
}
return ;
}

  T2是个环套树题

  分三类:①两个点都在同个树上,求直径,两次bfs或者树形DP即可

      ②一个点在环上一个点在树上,答案为最大深度dep+len/2

      ③两个点在不同的树上,即求max(depi+depj+dis(i,j)),而dis(i,j)显然是<=len/2且递增的,用单调队列维护max(depj+dis(i,j)),队头与i距离超过len/2就出队,走一圈之后就可以算出这种情况的答案

  三类取max

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,inf=1e9;
struct poi{int too,pre;}e[maxn];
int n,m,x,y,z,tot,ans,st,ed,cnt,len;
int mx1[maxn],mx2[maxn],d[maxn],last[maxn],isrt[maxn],rt[maxn],q[maxn];
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
inline void add(int x,int y){e[++tot].too=y;e[tot].pre=last[x];last[x]=tot;}
void dfs(int x,int fa)
{
d[x]=d[fa]+;mx1[x]=d[x];mx2[x]=;
for(int i=last[x];i;i=e[i].pre)
if(e[i].too!=fa&&!isrt[e[i].too])
{
dfs(e[i].too,x);
if(mx1[e[i].too]>mx1[x])mx2[x]=mx1[x],mx1[x]=mx1[e[i].too];
else if(mx1[e[i].too]>mx2[x])mx2[x]=mx1[e[i].too];
}
ans=max(ans,mx1[x]+mx2[x]-(d[x]<<));
}
int dfs2(int x,int fa)
{
if(x==ed)return len++,;
for(int i=last[x];i;i=e[i].pre)
if(e[i].too!=fa)if(dfs2(e[i].too,x))
return rt[++cnt]=x,isrt[x]=,len++,;
return ;
}
inline int dis(int x,int y){if(x>=y)return x-y;return len-(y-x);}
inline void work()
{
int l=,r=;
for(int i=(len>>);i;q[++r]=i,i--)
while(l<=r&&mx1[rt[q[r]]]+dis(q[r],cnt)<=mx1[rt[i]]+dis(i,cnt))r--;
for(int i=cnt;i;i--)
{
while(l<=r&&(dis(q[l],i)>(len>>)||q[l]==i))l++;
ans=max(ans,mx1[rt[i]]+mx1[rt[q[l]]]+dis(q[l],i));
while(l<=r&&mx1[rt[q[r]]]+dis(q[r],i)<=mx1[rt[i]])r--;
q[++r]=i;
}
}
int main()
{
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
read(n);read(m);
for(int i=;i<n;i++)read(x),read(y),add(x,y),add(y,x);
for(int i=;i<=m;i++)
{
read(st);read(ed);ans=len=cnt=;
memset(isrt,,sizeof(isrt));d[]=-;
rt[++cnt]=ed;isrt[ed]=;dfs2(st,);
for(int j=;j<=cnt;j++)dfs(rt[j],),ans=max(ans,mx1[rt[j]]+(len>>));
work();printf("%d\n",ans);
}
return ;
}

NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第二轮Day2题解的更多相关文章

  1. NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day2题解

    上星期打的...题有点水,好多人都AK了 T1排个序贪心就好了 #include<iostream> #include<cstring> #include<cstdlib ...

  2. 【前行】◇第3站◇ 国庆训练营·OI制模拟赛

    [第3站] 国庆训练营·OI制模拟赛Ⅰ 怀着冲刺提高组400的愿望来到这个very small but very interesting 的训练营QwQ 在北大dalao的带领下开始了第一场OI模拟赛 ...

  3. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  4. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  5. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  6. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  7. Java 第十一届 蓝桥杯 省模拟赛 小明的城堡

    小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...

  8. Java 第十一届 蓝桥杯 省模拟赛 梅花桩

    小明每天都要练功,练功中的重要一项是梅花桩. 小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1. 小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上.小 ...

  9. Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量

    给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母. 元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母. 输入格式 输入一行,包含一个单词,单词中只包含小写英文字母. 输 ...

随机推荐

  1. 「日常训练」Brackets in Implications(Codeforces Round 306 Div.2 E)

    题意与分析 稍微复杂一些的思维题.反正这场全是思维题,就一道暴力水题(B).题解直接去看官方的,很详尽. 代码 #include <bits/stdc++.h> #define MP ma ...

  2. 「日常训练」Regular Bridge(Codeforces Round 306 Div.2 D)

    题意与分析 图论基础+思维题. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB emplace_back #defi ...

  3. Selenium自动化测试第一天(下)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  4. tpo-09 C2 Return a sociology book

    check out 在library里有借书的意思 第 1 段 1.Listen to a conversation between a student and a librarian employe ...

  5. 孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境

    孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境 (完整学习过程屏幕记录视频地址在文末) 学习Python我肯定不会错过图片文字的识别,当然更重要的是简单的验证码识别了,今天 ...

  6. 数据库Mysql的学习(五)-运算符与函数

    ,store,store,store,store FROM bookinfo;//加减乘除取余 //余额大于200 //余额不等于200 SELECT * FROM readerinfo WHERE ...

  7. 承压计算:模拟+double

    标题:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同.金属材料被严格地堆放成金字塔形. 7                         ...

  8. Tensorflow学习第1课——从本地加载MNIST以及FashionMNIST数据

    很多Tensorflow第一课的教程都是使用MNIST或者FashionMNIST数据集作为示例数据集,但是其给的例程基本都是从网络上用load_data函数直接加载,该函数封装程度比较高,如果网络出 ...

  9. 持续集成之TeamCity 配置

    xcopy /S /Y CodeFirstDemo\CodefirstDemo.Web D:\publish\welcome\Web

  10. mweb test

    目录 Markdown syntax guide and writing on MWeb Philosophy Notice Headers This is an <h1> tag Thi ...