[agc009e]Eternal Average

[AGC009E] Eternal Average——结论、DP 弱者抱团取暖,可悲的是,只有我一个弱者 阅读详情

题目大意

给你n个0,m个1,和一个k。每次操作你选择k个数,擦去这k个数并加入他们的平均数(1个),问最后会有多少种不同的实数。
n,m,k<=2000,(k-1)|(n+m-1)

解题思路

转化一下题意。
考虑一种方案是一颗k叉树,给每个0和1安排深度,作为树的叶子节点,这些点的权值为0/1,其他点权值为所有儿子的平均数。问最后有多少种根节点权值不同的树。
现在问题稍微转化了一下,看起来舒服了一点。
考虑根节点的权值。我们只用考虑1的深度,权值为∑i=1..mk−dep1[i]∑i=1..mk−dep1[i].
考虑合法的树的条件。不妨把把0都变成1,最后根节点的权值一定为1。1=∑i=1..mk−dep1[i]+∑i=1..nk−dep0[i]1=∑i=1..mk−dep1[i]+∑i=1..nk−dep0[i]。
那么我们现在实际要求,有多少个不同的实数z,能够表示成m个k的次幂的和,且1-z能表示成n个k的次幂的和。
不妨把z搞成k进制数。那么原本同深度的点会进位,这就比较好看。
首先考虑z能够表示成m个数的和。
设z=0.s1s2...slz=0.s1s2...sl,其中s[l]≠0,那么∑s[i]≤m且∑s[i]%(k−1)=m%(k−1)∑s[i]≤m且∑s[i]%(k−1)=m%(k−1),其实就是把进位搞一搞。
还要考虑1-z。考虑1-z的长度肯定也是l,那么我们把n-=1,这样1-z的每一位和s[]加起来都是k-1了。类似的写出一样的式子,那么我们发现我们要求的东西是一个序列s[]的方案数,其中满足:对于所有1≤i≤l,s[i]∈[0,k−1]1≤i≤l,s[i]∈[0,k−1],且s[l]≠0s[l]≠0,且满足上面写的关于n,m的式子。
然后用一个简单的dp做就可以了。

代码

#include<cstdio> 
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
typedef long long ll;
typedef double db;
#define fo(i,j,k) for(i=j;i<=k;i++)
#define fd(i,j,k) for(i=j;i>=k;i--)
#define cmax(a,b) (a=(a>b)?a:b)
#define cmin(a,b) (a=(a<b)?a:b)
const int N=1e6+5,mo=1e9+7;
int n,m,K,i,j,k,q1,q2;
ll f[2][2005][2],sum[2005];
int ans;
int main()
{
    freopen("t12.in","r",stdin);
    scanf("%d %d %d",&n,&m,&K);
    m--;K--;
    q1=0;
    q2=1;
    f[0][0][0]=1;
    fo(i,1,max(n,m)*2)
    {
        fo(j,0,n) sum[j+1]=(sum[j-1+1]+f[q1][j][0]+f[q1][j][1])%mo;
        fo(j,0,n)
        {
            f[q2][j][0]=(sum[j+1]-sum[j-1+1])%mo;
            k=max(0,j-K);
            f[q2][j][1]=(sum[j-1+1]-sum[k-1+1])%mo;
        }
        fo(j,0,n)
            if (j%K==n%K&&(i*K-j)%K==m%K&&i*K-j<=m)
                ans=(ans+f[q2][j][1])%mo;
        q1^=1;q2^=1;
    }
    ans=(ans+mo)%mo;
    printf("%d",ans);
}
[agc013d] Pilling Up 题目大意 有两种元素,一种0一种1,一开始,你可以随便拿01,总共拿n个。 然后你进行m次操作,每次操作先从手上拿一个元素,放在你的构造序列末尾,然后再获得0,1各一个,然后再放一次。 问最后有多少种不同的序列。 n,m&lt;=3000 解题思路 一个很简单的想法是设f[i][j]表示做了第i轮,剩下j个0的时候,有多少种不同的序列。 然后根据题意转移。 但是如果直接把f[0... 阅读详情

相关推荐

AutoSar标准官网下载

AutoSar文档下载和文档命名格式。。。

m0_56208280的博客 3514

AGC009E Eternal Average

atc 神题orz 那个擦掉\(k\)个数然后写上一个平均值可以看成是\(k\)叉Huffman树的构造过程,每次选\(k\)个点合成一个新点,然后权值设为平均值.这些0和1都会在叶子的位置,同时每个叶子\(i\)的贡献为\(w_i\)(0或1)\(*{\frac{1}{k}}^{dep_i}\),也就是每过一层这个叶子代表的0或1就要除掉\(k\)加到答案里,这样子算,所有点的贡献之和...

weixin_30882895的博客 203

关于RT-Thread中PWM无法正常输出的学习

按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧 配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO! void HAL_TIM_Base_MspInit(TIM_Han

weixin_42566346的博客 3550

【AtCoder】【AGC009E】Eternal Average

Description 有n个0,m个1,每次你从这里面取出K个数,取平均值后再把平均值放回去,求最后的答案有多少种取值。 保证(n+m-1)|k Solution 把最后的答案放在K进制下考虑, 如果一个1在第x层,对答案的贡献就是在K进制下的第-x位+1, 那我们可以考虑每次把K进制数的一位+1,操作m次 如果全部为1,答案显然为1, 也就是说,如果随便操作m次,最后出来的K进...

784

Enterprise Architect 中文经典教程

本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,...

2万+

检索增强世界模型(R-WoM)原理与应用实践

世界模型是AI系统理解环境的核心技术,通过构建环境的内部表示实现状态预测和行动规划。传统方法基于RNN或VAE等神经网络,而检索增强世界模型(R-WoM)创新性地引入检索机制,结合外部记忆库提升系统性能。这种架构突破模型参数限制,使AI能像人类一样利用历史经验解决问题,在游戏AI、虚拟助手等场景表现优异。关键技术包括FAISS相似性搜索、分层记忆管理和动态检索策略,其中Transformer编码器和GRU动态模型的组合实现高效环境建模。实践表明,该方法可提升47%的战术多样性,加快32%的应急响应速度。

weixin_42676876的博客 341

AtCoder AGC009E Eternal Average (DP)

题目链接 https://atcoder.jp/contests/agc009/tasks/agc009_e 题解 又被劝退了。。。 第一步转化非常显然: 就等价于一开始有一个数\(1\), 有\(\frac{n+m-1}{k-1}\)次机会每次选择一个数把它变成\(k\)个原来的\(\frac{1}{k}\), 最后从\(n+m\)个数中选出\(m\)个,问能选出多少不同的数。 然后考...

suncongbo's blog 261

激光焦点动态跟踪技术实战大揭秘:电容式与同轴视觉的巅峰对决

激光焦点动态跟踪技术是保证激光加工质量的关键因素。本文对比评测了电容式和同轴视觉两种主流技术:电容式响应速度快、成本低,适合高速稳定加工环境,但易受电磁干扰;同轴视觉精度高、抗干扰强,适合精密加工和复杂工件,但成本较高且处理速度受限。评测结果表明,企业应根据加工需求、预算和环境选择合适技术。未来该技术将向智能化、多技术融合方向发展,为工业应用提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 124

[AGC009E Eternal Average] [建模 K进制 同余 简单DP]

先把问题转化成更形象的版本:你可以任意建一棵k叉树,并且需要满足恰有n+m叶子,其中有n个权值为1(黑点),m个权值为0(白点),其余节点的权值等于儿子节点的均值。问根节点有多少种可能的取值。 这棵树形象地模拟了合并的过程,并且我们可以看到:对于每一个黑色叶子结点i,记其深度为,那么它对根的贡献就是。由于这些贡献都是k的幂的形式,所以这启发我们在k进制下去想问题。我们安排一下每个黑点的深度,这就...

Orzage的博客 454

远程声控系统(MATLAB代码见优快云资源)

远程声控系统技术报告 一、题目要求 实现一个远程声音控制系统。首先采集不同的语音指示信号,进行适当压缩;然后通过噪声信道实现远程传输,远端接收后再通过适当计算识别出是何指示,最后送入一个处于未知状态、但能控/能观的控制系统,完成不同的控制动作。 二、问题分解与解决思路 2.1 系统设计 实验中以汉语数字语音1~9作为指令,数字语音“1”代表一号指令,数字语音“2”代表二号指令,依次类推。发送端发出语音“1”,发送端对应的数字语音文件为“1b.wav”,通过信源编码对语音进行压缩编码,然后进行信道编码并进行基

业精于勤,荒于嬉 5733

别再用第三方黑盒库了!从零手写C#+YOLOv12推理全流程,框位准、可定制、调试快10倍

从零手写YOLO推理框架,不是为了造轮子,而是为了完全掌控代码,工业现场的需求千变万化,第三方黑盒库根本没法满足所有需求。这套代码我已经在东莞长安的3家PCB厂、深圳南山的2家3C电子厂落地了,稳定运行6个月,没有出过任何问题。如果有什么问题或者需要扩展的功能,都可以在评论区交流。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 322

agc009e Eternal Average

Description有n个0和m个1,每次操作选择k个数删去,并写上它们的平均数。 求最后剩余的数有多少种可能。 n,m,k<=2000Solution第一次的思路假了。。。。 题意可以转化为有多少个数x可以表示成m个k^-i的和 但为了保证合法我们需要保证1-x也可以表示为n个k^-i的和。 为了方便我们可以把m-1,那么我们每一个k^-i分配给0和1的个数和就是k-1 有进位的话就

时光真疯狂, 我一路执迷于匆忙. 387

C#与欧姆龙PLC 通信——fins udp协议

该调试助手专门为了帮助大家学习以及测试Fins-Udp通信,下面进行详细介绍。

qq_34059233的博客 2871

【AGC009 E】Eternal Average(DP)

我翻开OID博客一看,这故事没有年代,歪歪斜斜的每页上都写着“xxxYYDS”几个字。我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满本都是写着两个字——吃人

DD(XYX)的硫氰化氘博客 251

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【AGC009 E】Eternal Average

Description 请构造若干k叉树,使得每颗均有n+m个叶子,有n个叶子点权为0,m个叶子点权为1,对于非叶子点权为儿子点权的平均数。 问最多构造多少k叉树,使得任意两颗根节点点权不同? n,m,k&lt;=2000 (n+m-1) mod (k-1)=0 Analysis 思路顺序: 1.问题模型转化成kkk叉树 2.注意到根节点权值为∑ikdep1[i]∑ikdep...

LYD729 506

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【数学】【图论】【DP】AGC009E Eternal Average

分析: 首先要转换为一棵K度树,有N个权为0的叶子节点,有M个权位1的叶子结点。每个非叶子节点的权值为其所有儿子的权值的平均值。 那么设1的点的深度分别为a1,a2,a3……ama_1,a_2,a_3……a_ma1​,a2​,a3​……am​ 0的点深度分别为b1,b2,b3……bnb_1,b_2,b_3……b_nb1​,b2​,b3​……bn​ 那么由于其是一颗K度树,所以必须满足: ∑k−ai...

氧化钠的博客 393

Atcoder AGC009E :Eternal Average

传送门 题解: 设x=∑mi=1k−ai,y=∑ni=1k−bix=∑i=1mk−ai,y=∑i=1nk−bix=\sum_{i=1}^m k^{-a_i}, y=\sum_{i=1}^n k^{-b_i},合法解xxx满足x+y=1x+y=1x+y=1。 也就是如果xxx能被表示为∑mi=1k−ai∑i=1mk−ai\sum_{i=1}^m k^{-a_i},且1−x1−x1-x能被表示为...

DZYO的博客 435

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\) 题解 这题可以转化一下...

aga28832的博客 150

AGC009:Eternal Average

传送门 好神啊 直接考虑一棵 n+mn+mn+m 个叶子的 kkk 叉树,根结点权值为 ∑i∈m(1k)deepi\sum_{i\in m}(\frac{1}{k})^{deep_i}∑i∈m​(k1​)deepi​ 对于一个 deepdeepdeep 的序列 如果 ∑i∈m(1k)deepi+∑i∈n(1k)deepi=1\sum_{i\in m}(\frac{1}{k})^{deep_i}+\...

Cyhlnj 299

agc009e

题目大意 给你n个0,m个1,和一个k。每次操作你选择k个数,擦去这k个数并加入他们的平均数(1个),问最后会有多少种不同的实数。 n,m,k&lt;=2000 题解 这题感觉好难啊。。。 首先要进行一波神奇的转换,可以想象现在有一颗k叉树,然后一共有n+m个叶子节点,其中有n个为1,m个为0,每一个非叶子节点的值为所有儿子的平均数,问最后根节点有多少种不同的取值方案 这两者显然是本...

Marcus 549

[agc009b]Tournament

前言简单题。题目大意若干轮比赛,每个人在某一轮可以参赛,和另外一个人pk,输的人淘汰。 最后1是冠军,已知其余每个人输给了谁,请问最少设置多少轮比赛?做法你显然可以根据每个人输给了谁建一颗树,然后处理f[x]表示x淘汰所有输给他的人所需要的最小轮数。 转移很简单,根据儿子的f排序,然后详见代码(不会说)。#include<cstdio> #include<algorithm> #define f

不来也不去的一只失忆蝴蝶 792

【Atcoder】AGC009 B-E简要题解

C. dp优化 D.问题转化,贪心 E.神仙转化,DP

远行客 380

AtCoder agc009_e题解

题目大意: 给定nnn个0和mmm个1,每次可以选择kkk个数删去它们,然后把它们的平均数写上去。 求最后剩下的数有几种。 答案对1e9+71e9+71e9+7取模 保证n+m−1n+m-1n+m−1能被kkk整除 sol:sol:sol: 把这个问题转化为kkk叉树的模型。 其有n+mn+mn+m个叶子结点。 其中有nnn个写着0,mmm个写着1。 对于非叶子节点,它的值就是它的儿子节点的平均值...

weixin_44351585的博客 241
上一篇: [arc072f]Dam
下一篇: [arc072e]Alice in linear land
ZLTJohn
博客等级 码龄11年 61粉丝 214原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值