AtCoder Grand Contest 009 E:Eternal Average
题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_e
题目翻译
纸上写了\(N\)个\(1\)和\(M\)个\(0\),你每次可以选择\(k\)个数字擦掉,然后再写一个他们的平均值上去。保证\(N+M-1\)可以整除\(k-1\),请问最后留下来的那个数有多少种。\(N,M,K\leqslant 2000\)
题解
这题可以转化一下题意:有一棵\(k\)叉树,有\(n+m\)个叶子,每个叶子的权值是\(0\)或\(1\),其他结点的权值是子结点权值的平均值。问根节点的权值有多少种情况。
假设权值为\(0\)的叶子的深度分别为\(x_i\),权值为\(1\)的叶子的深度分别为\(y_i\)。
显然:\(\sum k^{-x_i}+\sum k^{-y_i}=1\)
所以对于所有的有理数\(s\),根的权值可能等于他必然满足:
\(s=\sum k^{-y_i}\)
\(1-s=\sum k^{-x_i}\)
把\(s\)写成\(k\)进制\(0.s_1s_2s_3...s_{len}\),如果\(s\)可以被\(N\)个\(k^{-1}\)的幂的和表示,那么一定满足:
\(\sum\limits_{i=1}^{len}s_i\leqslant N\)且\(\sum\limits_{i=1}^{len}s_i\equiv N(\bmod k-1)\)
我们还可以把\(k^{-a}\)拆成\(k\)个\(k^{-a-1}\)来凑出恰好\(N\)。
然后我们就可以\(N^2dp\)求\(s\)的方案数了。
时间复杂度:\(O(nm)\)
空间复杂度:\(O(nm)\)
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=2e3+5,pps=1e9+7;
int n,m,k,ans,len;
int f[maxn<<1][maxn];
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
int main() {
n=read(),m=read(),k=read();
len=(n+m-1)/(k-1);
for(int i=1;i<k;i++)
f[1][i]=1;
for(int i=2;i<=len;i++)
for(int j=1;j<=n;j++) {
f[i][j]=(f[i-1][j]+f[i][j-1])%pps;
if(j>=k)f[i][j]=(f[i][j]+pps-f[i-1][j-k])%pps;
}
for(int i=1;i<=len;i++) {
int limit=max(0,i*(k-1)-m)+1;
for(int j=n;j>=limit;j-=k-1)
ans=(ans+f[i][j])%pps;
}
printf("%d\n",ans);
return 0;
}
AtCoder Grand Contest 009 E:Eternal Average的更多相关文章
- AtCoder Grand Contest 009 D:Uninity
题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_d 题目翻译 定义只有一个点的树权值为\(0\),若干棵(可以是\(0\)棵)权值为\(k\) ...
- AtCoder Grand Contest 009
AtCoder Grand Contest 009 A - Multiple Array 翻译 见洛谷 题解 从后往前考虑. #include<iostream> #include< ...
- AtCoder Grand Contest 004 C:AND Grid
题目传送门:https://agc004.contest.atcoder.jp/tasks/agc004_c 题目翻译 给你一张网格图,指定的格子是紫色的,要求你构造出两张网格图,其中一张你可以构造一 ...
- AtCoder Grand Contest 014 D:Black and White Tree
题目传送门:https://agc014.contest.atcoder.jp/tasks/agc014_d 题目翻译 给你一棵树,每次任选一个点染色,先手染白色,后手染黑色.如果最后存在一个白色的点 ...
- AtCoder Grand Contest 028 A:Two Abbreviations
题目传送门:https://agc028.contest.atcoder.jp/tasks/agc028_a 题目翻译 给你两个串\(s\)与\(t\),长度分别为\(n,m\).问你存不存在一个串长 ...
- AtCoder Grand Contest 002 F:Leftmost Ball
题目传送门:https://agc002.contest.atcoder.jp/tasks/agc002_f 题目翻译 你有\(n*k\)个球,这些球一共有\(n\)种颜色,每种颜色有\(k\)个,然 ...
- AtCoder Grand Contest 013 C:Ants on a Circle
题目传送门:https://agc013.contest.atcoder.jp/tasks/agc013_c 题目翻译 给你一个周长为\(L\)的圆,有\(N\)只蚂蚁在圆上爬,速度为一单位距离每秒. ...
- AtCoder Grand Contest 010 C:Cleaning
题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_c 题目翻译 给你一棵树,每个点有个权值,每次操作可以选择两个度数为\(1\)的结点,然后让这 ...
- AtCoder Grand Contest 007 E:Shik and Travel
题目传送门:https://agc007.contest.atcoder.jp/tasks/agc007_e 题目翻译 现在有一个二叉树,除了叶子每个结点都有两个儿子.这个二叉树一共有\(m\)个叶子 ...
随机推荐
- matlab2017b linux版分享
链接:https://pan.baidu.com/s/1smrTkFN 密码:cvb3 下载后请点关注并点赞,谢谢支持.
- sealed,new,virtual,abstract与override关键字的区别?
1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于方法或属性时,sealed修饰符必须始终与override一起使用. ...
- vim与sublime
vim与sublime 对程序员来说,写代码是再熟悉不过的事情了,windows系统自带有记事本软件,能写写小规模的代码,可是代码量大了,它的局限性就暴露得很明显了:没有语法高亮,没有自动提示,不支持 ...
- 如何将linux服务器作为文件服务器
在开发过程中想要使用linux服务器作为文件服务器,可以通过 IP+文件名来获取文件信息,比如http://localhost/banner/a.jpg.设置过程如下 1.安装apache2 sudo ...
- oracle序列sequence
序列 定义一个序列,自动产生连续的整数.也称序列生成器(sequence generator)产生序列号.在多用户环境下该序列生成器特别有用,可生成各返回序列号而不需要磁盘I/O或事务封锁.序列号为O ...
- PHP购物车模块的实现(php/ajax/session)
购物车网页代码 1.登录界面login.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- MongoDB的对象的创建
package com.voice.db; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.Mon ...
- wepy/packages/wepy-web/src/helper/device.js
wepy/packages/wepy-web/src/helper/device.js https://github.com/Tencent/wepy/blob/bd0003dca2bfb958113 ...
- wepy error Parsing error: Unexpected token :
mpBMCwepy\wepy.config.js eslint 信息 全局重装wepy-clinpm install wepy-cli -g -registry=https://registry.n ...
- Channel (digital image) 通道 色彩深度 Color_depth
en.wikipedia.org/wiki/Channel_(digital_image) Color digital images are made of pixels, and pixels ar ...