Codeforces Round #563 (Div. 2) 划水记
网太卡只好做划水选手,只做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) 划水记的更多相关文章
- 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 ...
- Codeforces Round #394 (Div. 2) 颓废记
昨天晚上(今天凌晨),又忍不住去打CF.(本蒟弱到只能打Div.2)... 我觉得我可以用一个词概括我这次的CF: 呵呵 刚一开赛,我就codeforces访问失败.. 后来好不容易能上了,两三分钟才 ...
- Codeforces Round#500 Div.2 翻车记
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Codeforces Round #402 (Div. 2) 阵亡记
好长时间没有打Codeforces了,今天被ysf拉过去打了一场. lrd也来参(nian)加(ya)比(zhong)赛(sheng) Problem A: 我去,这不SB题吗.. 用桶统计一下每个数 ...
- 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 ...
- 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 ...
- 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 ...
- Codeforces Round #563 (Div. 2)C
C. Ehab and a Special Coloring Problem 题目链接:http://codeforces.com/contest/1174/problem/C 题目 You're g ...
- 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 ...
随机推荐
- jmeter --- 压测时,如何让串联压测多个接口
1.新建测试计划,在测试计划里勾选“独立运行每个线程组” 2.分别在每个线程组,添加聚合报告,以得到每个线程组的压测结果 3.设置不同接口压测的vu等,并为每个线程组,设置合理的启动延迟时间
- python--txt文件处理
1.打开文件的模式主要有,r.w.a.r+.w+.a+ file = open('test.txt',mode='w',encoding='utf-8') file.write('hello,worl ...
- weex 随笔
1.三大模块: <template>:样板,内容区 <style>:css <script>: js <script> export default{ ...
- js连续的日期判断,判断相差几天
var startTime=Date.parse(new Date('2020-02-28')); var endTime=Date.parse(new Date('2020-02-29')); $. ...
- VM15上安装macOS操作系统
(该篇博客已经成功安装上Xcode,放心下载) 因为要开学了,需要学习mac操作系统,自己没有苹果电脑只能虚拟机上下载喽 我在电脑上安装的VM15虚拟机,不会安装的可以来这里下载软件VM15虚拟机 ...
- [NOIP2009普及]分数线划定 T2 排序
Description 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根据计划录取人数的 ...
- 布局基础<kotlin>2,自定义控件(整理自网络)
引导页 传送门 Android vector标签 PathData 画图 ViewPager 代码清单 activity_main.xml <?xml version="1.0&quo ...
- 2020/2/3 PHP代码审计之PHP伪协议
0x00 简介 开局一张图233 0x01 file://协议 说明: file:// 文件系统是 PHP 使用的默认封装协议,展现了本地文件系统.当指定了一个相对路径(不以/..\或 Windows ...
- POJ - 2385 Apple Catching (dp)
题意:有两棵树,标号为1和2,在Tmin内,每分钟都会有一个苹果从其中一棵树上落下,问最多移动M次的情况下(该人可瞬间移动),最多能吃到多少苹果.假设该人一开始在标号为1的树下. 分析: 1.dp[x ...
- .NET core ABP 获取远程IP地址
2.asp.net core 2.x上配置 第一步:在控制器中定义变量 private IHttpContextAccessor _accessor; 第二步: 控制器的构造函数进行注入 public ...