AGC009:Eternal Average
传送门
好神啊
直接考虑一棵 \(n+m\) 个叶子的 \(k\) 叉树,根结点权值为 \(\sum_{i\in m}(\frac{1}{k})^{deep_i}\)
对于一个 \(deep\) 的序列
如果 \(\sum_{i\in m}(\frac{1}{k})^{deep_i}+\sum_{i\in n}(\frac{1}{k})^{deep_i}=1\)
那么一定可以构造出一棵 \(k\) 叉树满足要求
(从deep大到小考虑,除去 \(k\) 进位)
那么对于一个答案数 \(x\),它的每一位的数字(可以通过退位)和 \(=m\)
退位就是 \(+k-1\),那么也就是 \(\sum\equiv m(mod~k-1)\)
同理 \(1-x\) 的每一位的数字(可以通过退位)和 \(=n\)
设位数为 \(l\)
即 \(l(k-1)+1-\sum\equiv n(mod~k-1)\)
那么可以设 \(f_{i,j}\) 表示小数点后前 \(i\) 位,每一位的数字和为 \(j\),的不同的数字个数
每次判断 \(j\le m,i(k-1)+1-j\le n\) 且 \(j\equiv m(mod~k-1),l(k-1)+1-j\equiv n(mod~k-1)\)
满足则贡献答案
\(i\) 只需要枚举到 \(n+m\) 即可
\(dp\) 只需要前缀和优化,注意要记录后缀 \(0\)
# include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn(2005);
const int mod(1e9 + 7);
inline void Inc(int &x, int y) {
x = x + y >= mod ? x + y - mod : x + y;
}
inline void Dec(int &x, int y) {
x = x - y < 0 ? x - y + mod : x - y;
}
inline int Add(int x, int y) {
return x + y >= mod ? x + y - mod : x + y;
}
inline int Sub(int x, int y) {
return x - y < 0 ? x - y + mod : x - y;
}
int n, m, k, f[maxn << 1][maxn][2], ans, s[maxn][2];
inline int Check(int len, int sum) {
return sum % k == m % k && (len * k + 1 - sum) % k == n % k && len * k + 1 - sum <= n;
}
int main() {
int i, j, r, t;
scanf("%d%d%d", &n, &m, &k), r = n + m, f[0][0][0] = 1, --k;
for (i = 1; i <= r; ++i) {
for (t = 0; t < 2; ++t)
for (s[0][t] = f[i - 1][0][t], j = 1; j <= m; ++j)
s[j][t] = Add(s[j - 1][t], f[i - 1][j][t]);
for (j = 0; j <= m; ++j) f[i][j][1] = Add(f[i - 1][j][0], f[i - 1][j][1]);
for (j = 1; j <= m; ++j)
for (t = 0; t < 2; ++t)
Inc(f[i][j][0], Sub(s[j - 1][t], j > k ? s[j - k - 1][t] : 0));
for (j = 0; j <= m; ++j) if (Check(i, j)) Inc(ans, f[i][j][0]);
}
printf("%d\n", ans);
return 0;
}
AGC009:Eternal Average的更多相关文章
- AtCoder Grand Contest 009 E:Eternal Average
题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_e 题目翻译 纸上写了\(N\)个\(1\)和\(M\)个\(0\),你每次可以选择\(k\) ...
- 【AGC009E】Eternal Average
[AGC009E]Eternal Average 题面 洛谷 题解 神仙题.jpg 我们把操作看成一棵\(k\)叉树,其中每个节点有权值,所有叶子节点(共\(n+m\)个)就是\(0\)或\(1\). ...
- AtCoder AGC009E Eternal Average (DP)
题目链接 https://atcoder.jp/contests/agc009/tasks/agc009_e 题解 又被劝退了... 第一步转化非常显然: 就等价于一开始有一个数\(1\), 有\(\ ...
- AGC009E Eternal Average
atc 神题orz 那个擦掉\(k\)个数然后写上一个平均值可以看成是\(k\)叉Huffman树的构造过程,每次选\(k\)个点合成一个新点,然后权值设为平均值.这些0和1都会在叶子的位置,同时每个 ...
- AT2294 Eternal Average
题目 题目给我们的这个东西可以转化为一棵\(k\)叉树,有\(n+m\)个叶子节点,其中\(m\)个权值为\(1\),\(n\)个权值为\(0\),每个非叶子节点的权值为其儿子的平均值,现在问你根节点 ...
- 6127:Largest Average
#include<bits/stdc++.h> using namespace std; int a[100001]; double ave[100001]; struct student ...
- 压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
分类: 4.软件设计/架构/测试 2010-01-12 19:58 34241人阅读 评论(4) 收藏 举报 测试loadrunnerlinux服务器firebugthread 上篇讲如何用LoadR ...
- 【AtCoder】AGC009
AGC009 A - Multiple Array 从后往前递推即可 #include <bits/stdc++.h> #define fi first #define se second ...
- 第二章:javascript: 数组
数组是编程世界里最常见的数据结构.任何一种编程语言都包含数组,只是形式稍微有差异.数组是编程语言中的内建类型,通常效率都很高.可以满足不同需求的数据存储,本章将探索javascript中的数组工作原理 ...
随机推荐
- echarts4 主题切换
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 网站引入外部js
有时想看某个网站下一些数据,需要用到js做一个实时的筛选,却又苦于该网站没用jQuery导致想使用jQuery时,还无法下手,那么下面这段js或许可以帮助你.1.打开我们的chrome调试工具,切换到 ...
- 使用request.js代理post失败的问题
前面写过一篇使用request.js做代理的文章,可能眼睛敏锐的朋友已经看出在代理POST方法时和代理其它请求方式是有区别的, 现在我来说一下为什么要这么处理. 相信很多人都采用这种方式去代理POST ...
- CSS3盒子模型(中)
在CSS盒子模型(上)讲到了盒子模型的边框,内外边距,外边距合并等知识,接下来要总结的是盒子模型的布局常用到的一些CSS属性,比如:float.position等知识. 盒子模型布局稳定性 开始学习盒 ...
- css实现栏目两边斜线的效果
实现效果: 具体实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 【bzoj4503】 两个串 FFT
$FFT$套路题(然而我看错题了) 我们考虑化一下式子. 设当前比较的两个部分为$S[i....i+|T|-1]$和$T[0....|T|-1]$. 我们对串$T$中出现问号的位置全部赋值为$0$. ...
- 剑指offer四十五之扑克牌顺子(序列是否连续)
一.题目 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决 ...
- 视口(viewport)原理详解之第二部分(移动端浏览器)
一.移动端浏览器的问题 当我们把移动端浏览器和桌面浏览器比较时,最明显的差异就是尺寸.移动端浏览器尺寸要比桌面屏幕小得多,移动浏览器最多差不多也就400px.最重要的问题集中在我们的CSS上,特别是v ...
- ES6-Proxy and Reflect
依赖文件地址 :https://github.com/chanceLe/ES6-Basic-Syntax/tree/master/js <!DOCTYPE html> <html&g ...
- maven私服配置
1.maven私服setting.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <setting ...