网太卡只好做划水选手,只做EF。

E

很容易发现第一个数是2k或者是3*2k-1,因为消去因子次数要尽可能多,然后可以直接dp一发转移还剩几个2/3即可,写起来有些麻烦

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+,mod=1e9+;
int n,k,ans,a[][],f[N][][];
int count(int x)
{
int ret=;
while(x%==)ret++,x/=;
return ret;
}
int main()
{
scanf("%d",&n);
if(n<=){puts("");return ;}
for(int i=;i;i--)if((<<i)<=n){k=i;break;}
for(int i=;i<=n;i++)a[count(i)][]++;
for(int i=k-;~i;i--)a[i][]+=a[i+][];
f[][k][]=;
for(int i=;i<=n;i++)
for(int j=;j<=k;j++)
{
f[i][j][]=(f[i][j][]+1ll*f[i-][j+][]*(a[j][]-a[j+][]))%mod;
f[i][j][]=(f[i][j][]+1ll*f[i-][j][]*(a[j][]-i+))%mod;
}
ans=f[n][][];
if((<<k-)*<=n)
{
memset(f,,sizeof f);
memset(a,,sizeof a);
for(int i=;i<=n;i++)a[count(i)][i%==]++;
for(int i=k-;~i;i--)a[i][]+=a[i+][],a[i][]+=a[i+][];
f[][k-][]=;
for(int i=;i<=n;i++)
for(int j=;j<k;j++)
{
f[i][j][]=(f[i][j][]+1ll*f[i-][j+][]*(a[j][]-a[j+][]))%mod;
f[i][j][]=(f[i][j][]+1ll*f[i-][j][]*(a[j][]-i+))%mod;
f[i][j][]=(f[i][j][]+1ll*f[i-][j+][]*(a[j][]+a[j][]-a[j+][]-a[j+][]))%mod;
f[i][j][]=(f[i][j][]+1ll*f[i-][j][]*(a[j][]+a[j][]-i+))%mod;
f[i][j][]=(f[i][j][]+1ll*f[i-][j][]*a[j][])%mod;
}
ans=(ans+f[n][][])%mod;
}
printf("%d",ans);
}

F

可以考虑树剖,然后询问时,若询问的lca不在重儿子上,则大小/2,反之下logn次即可,容易证明这个询问次数是log级别的

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+;
int n,dis,dep[N],sz[N],son[N],ed[N];
vector<int>G[N];
void dfs(int u,int fa)
{
sz[u]=;
for(int i=;i<G[u].size();i++)
if(G[u][i]!=fa)
{
dep[G[u][i]]=dep[u]+,dfs(G[u][i],u),sz[u]+=sz[G[u][i]];
if(sz[G[u][i]]>sz[son[u]])son[u]=G[u][i];
}
ed[u]=son[u]?ed[son[u]]:u;
}
int askd(int x)
{
printf("d %d\n",x),fflush(stdout);
scanf("%d",&x);
return x;
}
int asks(int x)
{
printf("s %d\n",x),fflush(stdout);
scanf("%d",&x);
return x;
}
int solve(int u)
{
if(dep[u]==dis)return u;
if(dis-dep[u]==)return asks(u);
int lca=dep[ed[u]]+dis-askd(ed[u])>>;
if(dep[u]==lca)return solve(asks(u));
while(dep[u]!=lca&&dep[u]!=dis)u=son[u];
return solve(u);
}
int main()
{
scanf("%d",&n);
for(int i=,x,y;i<n;i++)scanf("%d%d",&x,&y),G[x].push_back(y),G[y].push_back(x);
dfs(,),dis=askd();
printf("! %d",solve());
}

Codeforces Round #563 (Div. 2) 划水记的更多相关文章

  1. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  2. Codeforces Round #394 (Div. 2) 颓废记

    昨天晚上(今天凌晨),又忍不住去打CF.(本蒟弱到只能打Div.2)... 我觉得我可以用一个词概括我这次的CF: 呵呵 刚一开赛,我就codeforces访问失败.. 后来好不容易能上了,两三分钟才 ...

  3. Codeforces Round#500 Div.2 翻车记

    A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...

  4. Codeforces Round #402 (Div. 2) 阵亡记

    好长时间没有打Codeforces了,今天被ysf拉过去打了一场. lrd也来参(nian)加(ya)比(zhong)赛(sheng) Problem A: 我去,这不SB题吗.. 用桶统计一下每个数 ...

  5. Codeforces Round #563 (Div. 2) C. Ehab and a Special Coloring Problem

    链接:https://codeforces.com/contest/1174/problem/C 题意: You're given an integer nn. For every integer i ...

  6. Codeforces Round #563 (Div. 2) B. Ehab Is an Odd Person

    链接:https://codeforces.com/contest/1174/problem/B 题意: You're given an array aa of length nn. You can ...

  7. Codeforces Round #563 (Div. 2) A. Ehab Fails to Be Thanos

    链接:https://codeforces.com/contest/1174/problem/A 题意: You're given an array aa of length 2n2n. Is it ...

  8. Codeforces Round #563 (Div. 2)C

    C. Ehab and a Special Coloring Problem 题目链接:http://codeforces.com/contest/1174/problem/C 题目 You're g ...

  9. Codeforces Round #563 (Div. 2)B

    B.Ehab Is an Odd Person 题目链接:http://codeforces.com/contest/1174/problem/B 题目 You’re given an array a ...

随机推荐

  1. robotframework+selenium2Library怎样不用手动关掉代理

    每次跑脚本,启动浏览器都要手动关掉代理,太费劲了,发现最简单的办法就是在局域网设置里面勾上跳过本地地址的代理服务器,并且在例外里写上127.0.0.1 就这么简单有没有??

  2. UVA - 116 Unidirectional TSP (单向TSP)(dp---多段图的最短路)

    题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列.要求经过的整数之和最小.第一行的上一行是最后一行,最后一 ...

  3. 业务全都在yun上能放心吗?

    导读 组织将其业务在云上进行“全押”,这与扑克游戏中的这个激动人心时刻有着同样的吸引力.这种举动感觉很大胆,但却向外界传达了自己的信心,表明将会果断行动赢得比赛. 大多数银行对处理零售银行业务方式需要 ...

  4. python类、super函数

    #PYTHON语言及其应用学习笔记 1.创建简单的类 class Person(): #python中特殊的对象初始化方法__init__,一个特殊的函数名 #当你在类声明里定义__init__()方 ...

  5. Java算法练习—— Z 字形变换

    题目链接 题目描述 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L ...

  6. JSTL与EL表达式(为空判断)

    JSTL与EL表达式(为空判断) 一.循环遍历集合  1.在jsp中引入标准函数声明  <%@ taglib uri="http://java.sun.com/jsp/jstl/cor ...

  7. Spring Boot without the web server

    https://stackoverflow.com/questions/26105061/spring-boot-without-the-web-server/28565277 1. spring.m ...

  8. Windows添加远程访问用户

    Windows远程访问 命令:mstsc ------------------------------------------------------------------------------- ...

  9. Codeforces Round #603 (Div. 2) A. Sweet Problem(水.......没做出来)+C题

    Codeforces Round #603 (Div. 2) A. Sweet Problem A. Sweet Problem time limit per test 1 second memory ...

  10. Tensorflow学习教程------tensorboard网络运行和可视化

    tensorboard可以将训练过程中的一些参数可视化,比如我们最关注的loss值和accuracy值,简单来说就是把这些值的变化记录在日志里,然后将日志里的这些数据可视化. 首先运行训练代码 #co ...