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 ...
随机推荐
- IT日常技能:VMware网络配置
1.0 基本概念 集线器:把一流量为M的端口分为N个端口,每个端口流量为M/N 交换机:把一流量为M的端口分为N个端口,每个端口流量仍为M 路由器:相当于两块网卡,一块连接外网并负责NAT, 另一块负 ...
- android 开发学习2
Dao dao = new Dao(yi_ji_lu_zhang_dan.this);List<GetOneRecord> list = dao.getAllRecord();//创建迭代 ...
- 使用Oracle VM VirtualBox安装CentOS 7.6操作系统
使用Oracle VM VirtualBox安装CentOS 7.6操作系统 ...
- UVA - 12186 Another Crisis(工人的请愿书)(树形dp)
题意:某公司有1个老板和n(n<=105)个员工组成树状结构,除了老板之外每个员工都有唯一的直属上司.老板的编号为0,员工编号为1~n.无下属的员工(叶子)打算签署一项请愿书递给老板,但不能跨级 ...
- 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ
鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...
- PHP ~ 原生语法 ~ 根据从数据库查询数据之后快速输出 某个属性的值到 到页面
一,根据 id 来查询单个的数据 <?php require_once '../../conn.php'; $sql = "select * from blogarticle wher ...
- JDBC模板CRUD
创建一个Util工具类 创建工具类为了方便后期管理,例如对数据库做出修改的时候只需要在工具类里修改一处即可! import java.sql.Connection; import java.sql.D ...
- [题解] Luogu P2000 拯救世界
生成函数板子题...... 要写高精,还要NTT优化......异常dl 这个并不难想啊...... 一次召唤会涉及到\(10\)个因素,全部写出来,然后乘起来就得到了答案的生成函数,输出\(n\)次 ...
- CodeForces - 446A DZY Loves Sequences(dp)
题意:给定一个序列a,求最长的连续子序列b的长度,在至多修改b内一个数字(可修改为任何数字)的条件下,使得b严格递增. 分析: 1.因为至多修改一个数字,假设修改a[i], 2.若能使a[i] < ...
- QMainWindow的空间布局结构
简单讲一下Qt的QMainWindow的结构,Qt的顶级窗口有三种类型,首先是万恶之源(...应该说是大部分控件的父类...)的QWidget,然后是QMainWidget和QDialog,后面两者也 ...