【AGC009E】Eternal Average
【AGC009E】Eternal Average
题面
题解
神仙题.jpg
我们把操作看成一棵\(k\)叉树,其中每个节点有权值,所有叶子节点(共\(n+m\)个)就是\(0\)或\(1\)。
出了叶子节点外的所有节点就代表一次合并,权值就是他们的平均值。
设一开始\(0\)点的深度分别为\(x_1,x_2...x_n\),\(1\)的深度为\(y_1,y_2...y_m\)。
那么根节点的权值为\(\sum (\frac 1k) ^ {y_i}\),而如果我们将所有点的权值改为\(1\),则根节点权值也为\(1\),那么有\(\sum (\frac 1k) ^ {x_i}+\sum (\frac 1k) ^ {y_i}=1\),而如果满足这个条件,则一定可以构造出一种方案。
那么问题转化为有多少个\(z\)能写成\(n\)个\((\frac 1k)^x\),\(1-z\)能写成\(m\)个\((\frac 1k)^y\)相加的形式。
我们将\(z\)表示为\((0.c_1c_2...)_k\),那么若不进位\(\sum c=m\),而进位的话进位一次就减去\(k-1\),那么\(\sum c=m(\bmod\;k-1)\)。
假设小数有\(len\)位,那么\(1-z\)的和应为\((len-1)(k-1)+k-\sum c=len(k-1)-\sum c+1\)。
然后设\(f_{i,j}\)表示到第\(i\)位,目前和为\(j\)的方案数即可,因为末尾不能为\(0\),所以要多开一维记一下最后一位是否为\(0\)。
(大量参考litble的题解)
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int Mod = 1e9 + 7;
const int MAX_N = 2e3 + 5;
int N, M, K, ans;
int f[MAX_N << 1][MAX_N][2], s[MAX_N];
int main () {
cin >> N >> M >> K;
f[0][0][0] = 1;
for (int i = 1; i <= N + M; i++) {
s[0] = (f[i - 1][0][0] + f[i - 1][0][1]) % Mod;
for (int j = 1; j <= N; j++)
s[j] = (s[j - 1] + (f[i - 1][j][0] + f[i - 1][j][1]) % Mod) % Mod;
for (int j = 0; j <= N; j++) {
f[i][j][0] = (f[i - 1][j][0] + f[i - 1][j][1]) % Mod;
if (j) f[i][j][1] = (s[j - 1] - (j - K >= 0 ? s[j - K] : 0) + Mod) % Mod;
}
for (int j = 0; j <= N; j++)
if (j % (K - 1) == N % (K - 1) &&
(i * (K - 1) - j + 1) % (K - 1) == M % (K - 1) &&
i * (K - 1) - j + 1 <= M)
ans = (ans + f[i][j][1]) % Mod;
}
printf("%d\n", ans);
return 0;
}
【AGC009E】Eternal Average的更多相关文章
- 【Leetcode_easy】637. Average of Levels in Binary Tree
problem 637. Average of Levels in Binary Tree 参考 1. Leetcode_easy_637. Average of Levels in Binary T ...
- 【leetcode】637. Average of Levels in Binary Tree
原题 Given a non-empty binary tree, return the average value of the nodes on each level in the form of ...
- 【LeetCode】637. Average of Levels in Binary Tree 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:DFS 方法二:BFS 日期 题目地址:ht ...
- 【CF61D】Eternal Victory
题目大意:给定一棵 N 个节点的树,求从 1 号节点(根节点)出发,任意节点结束,且至少经过每个节点一次的最短路径是多少. 题解:首先考虑最终要回到根节点的情况,可以发现最短路径长度一定等于该树边权的 ...
- 【LeetCode】二分 binary_search(共58题)
[4]Median of Two Sorted Arrays [29]Divide Two Integers [33]Search in Rotated Sorted Array [34]Find F ...
- 【LeetCode】队列 queue(共8题)
[346]Moving Average from Data Stream [353]Design Snake Game [363]Max Sum of Rectangle No Larger Than ...
- 【LeetCode】设计题 design(共38题)
链接:https://leetcode.com/tag/design/ [146]LRU Cache [155]Min Stack [170]Two Sum III - Data structure ...
- 【原创】开源Math.NET基础数学类库使用(11)C#计算相关系数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- 看懂SqlServer查询计划【转】
原文链接:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 开始 SQL Server 查找记录的方法 SQL Server ...
随机推荐
- parallels desktop 的新建虚拟机的步骤
新建虚拟机的图 点击窗口-----控制中心--再点击控制中心的+号
- Mysql系列(十一)—— 性能分析其他常用监控
show status show status可以查询显示出当前mysql server的状态信息.该语句不需要任何权限. 对于show status可以时用like子句,模糊检索需要的状态信息.如: ...
- WPF 精修篇 静态资源
原文:WPF 精修篇 静态资源 在WPF中 如果设置好了一个控件样式或者矩形样式 如果Copy出一个新的 那么样式也会双份 比如 下面的矩形 我定义好了一个 Copy 以后 就出现一个新的 但是改变样 ...
- Runtime.addShutdownHook()(译)
序言: 每一个Java程序都可以为JVM增加一个关闭钩子.JVM将在关闭之前执行关闭钩子中的指令. 问题: 一个程序可能需要在退出前执行一些指令.程序可能由于下列原因而退出: 所有的线程已经执行完毕 ...
- 使用CodeFirst创建数据库
1.新建一个类库项目 2.右键管理Nuget程序包,搜索EntityFramework.然后安装 3.新建一个类,然后引用 using System.Data.Entity; 然后写类初始化方法(ba ...
- IDEA 设置: Live Templates 方法注释 注释模板编写
IDEA: Live Templates 方法注释 注释模板编写: 打开IDEA开发工具进入设置找到Editor: File>>Setting>>Editor>>L ...
- C# HttpWebRequest和WebClient的区别 通过WebClient/HttpWebRequest实现http的post/get方法
一 HttpWebReques1,HttpWebRequest是个抽象类,所以无法new的,需要调用HttpWebRequest.Create();2,其Method指定了请求类型,这里用的GET,还 ...
- rabbitMq 学习笔记(一)
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构. RabbitMQ 是采用 Erlang 语言实现 AMQP (Adva ...
- spoon数据转换中文乱码(kettle)
(1) 查看mysql数据库是否为utf8(status) (2) 设置spoon (3) 文本打开spoon.bat,找到set OPT=%OPT% %PENTAHO_DI_JAVA_OPTIONS ...
- 【Spring Boot】Spring Boot之使用AOP实现数据库多数据源自动切换
一.添加maven坐标 <!-- aop --> <dependency> <groupId>org.springframework.boot</groupI ...