首页 > 其他分享 >CodeForces 高分段 dp 选做

CodeForces 高分段 dp 选做

时间:2023-07-01 13:44:52浏览次数:47  
标签:cnt 选做 CodeForces dp 进位 mod

选取方式:CF *3000+ 按通过人数排序。

CF1188D Make Equal

记 \(cnt(x)\) 表示 \(x\) 二进制下 \(1\) 的个数,题目等价于求 \(x\) 使得

\[\sum_{x=1}^n cnt(x + a_n - a_i) \]

最小。

令 \(a_i = a_n - a_i\)。

从低位到高位考虑,假设当前要决策第 \(k\) 位,我们需要知道:

\(1.\) \(x\) 在这一位的值

\(2.\) \(a_i\) 在这一位的值

\(3.\) 之前的决策引起的进位

其中第三部分比较棘手,但是如果不考虑更高的位,那么 \(\mod 2^{k}\) 越大的 \(a\) 显然越容易进位,于是我们在每一位的决策是把所有 \(a\) 按 \(\mod 2^{k}\) 从大到小排序,那么进位的一定是一个前缀,直接枚举这个前缀,设 \(f_{i,j}\) 表示考虑前 \(i\) 位,第 \(i\) 位有 \(j\) 个进位的最小答案,简单讨论转移,时间复杂度 \(O(n \log n \log a)\)。

总结:

  • 可以先设计一个暴力 dp 状态(实际上笔者在做题时先想到了按 \(\mod 2^k\) 分类,但是误以为是贪心,导致没有做出本题)
  • 利用偏序关系化简状态,某些指数级的状态按顺序做就可能降为多项式级别

标签:cnt,选做,CodeForces,dp,进位,mod
From: https://www.cnblogs.com/treap/p/17519179.html

相关文章

  • UDP
    什么是UDP包头功能快速传输:UDP通过提供一种无连接的传输方式,减少了建立和维护连接的开销,从而实现了较快的数据传输速度。低延迟:由于UDP不需要等待连接的建立,数据包可以立即发送,因此UDP在实时应用中可以提供较低的传输延迟。支持广播和多播:UDP协议支持广播和多播功能,可以将数据包发......
  • DP选做
    DP选做(持续更新ing)目录DP选做(持续更新ing)CF1476FLanterns感觉自己DP推式子的能力完全不足,整理一下。其实也不知道这些极其困难的思维题我到底做不做得来,希望做多了思维的强度也会提升吧。CF1476FLanterns有\(n\)个灯笼拍成一排,第\(i\)个灯笼具有\(p_i\)的亮度。每个......
  • Educational Codeforces Round 151 F. Swimmers in the Pool
    一.前言本来打算打打这个比赛玩玩,结果同学找我打游戏王去了,就没打现场(逃)因为是一道不错的数学题,来写写补题的题解这里点名批评@HOLIC喂给我的假题意,让我查错大半天,最后发现题意错了还重新推了好多东西,拳头都硬了等会儿顺便分享下假题意的一种做法二.正文简单题意:有n个......
  • CodeForces 1845C Strong Password
    洛谷传送门CF传送门我怎么这么多天没写题解了,快来水一篇。考虑对\(s\)串建子序列自动机后dp。设\(n=|s|\)。建子序列自动机,就是求出\(nxt_{i,j}\)为\([i,n]\)中第一个等于\(j\)的位置,不存在则\(nxt_{i,j}=n+1\)。然后我们设\(f_{i,j}\)为填到密码的......
  • UnrecognizedPropertyException: Unrecognized field 解决
    转载请注明出处:在项目得不同环境上对接外部的服务接口,且存在不同版本间可能有字段不同得问题,遇到这种问题在使用jackson解析时,如果格式化得字符串与定义得java类不能完全对应时,就会报错:Unrecognizedfield,代码还原:importcom.fasterxml.jackson.annotation.JsonProperty;......
  • Educational Codeforces Round 151 (Rated for Div. 2)(C,D)
    EducationalCodeforcesRound151(RatedforDiv.2)(C,D)C(dp,子序列自动机)C题目大意就就是给你一个字符串\(s\),还给出两个边界字符串\(l\)和\(r\),长度为\(m\),问我们是否可以构造满足一下条件的字符串\(1\),第\(i\)个字符必须在\(l_i\)和\(r_i\)的双闭区间里面\(2\),......
  • 编译python为可执行文件遇到的问题:使用python-oracledb连接oracle数据库时出现错误:DP
    错误原文:DPY-3010:connectionstothisdatabaseserverversionarenotsupportedbypython-oracledbinthinmode链接数据库方式如下:connection=create_engine("oracle+oracledb://user:password@host:post/dbname") PyCharm编译器内运行成功但编译后会有DP......
  • CubeMX TIM 配置AutoReloadPreload
    CubeMX 配置定时器的时候,出现如下选项: 成员变量AutoReloadPreload的取值范围TIM_AUTORELOAD_PRELOAD_DISABLE预装载功能关闭TIM_AUTORELOAD_PRELOAD_ENABLE预装载功能开启用于设置自动重载寄存器TIMx_ARR的预装载功能,即自动重装寄存器的内容是更新事件产生时写入有......
  • Educational Codeforces Round 151 (Rated for Div. 2) A~D
     A.ForbiddenInteger模拟:voidsolve(){intn,k,x;cin>>n>>k>>x;if(x!=1){cout<<"YES\n"<<n<<"\n";for(inti=1;i<=n;i++)cout<<"1"<<"\n"......
  • Educational Codeforces Round 151 (Rated for Div
    C.StrongPassword给定一个字符串\(s\),一个密码的长度\(m\),下界字符串\(l\)和上界字符串\(r\),上下界字符串长度均为\(m\),且字符只在0~9范围内,上界字符串的第\(i\)位非严格大于下界字符串的第\(i\)位,密码的第\(i\)位需要位于\([l_i,r_i]\)内。问是否存在一个密码不是\(......