icpc dp真题
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
HDU5816 Hearthstone(状压+排列)
开始没理解题目意思…醉了其实对于一个牌序,如果在iii位置已经满足条件,那么后面的牌怎么样都随意就是此时的方案数乘以后面的排列所以我们只需要dp[s]dp[s]dp[s]表示取牌状态sss的方案数假如sss这个状态还能拿牌且没有满足条件,就继续拿牌向下转移#include <bits/stdc++.h>using namespace std;typedef long long ll;ll dp[1<<21],f[21];ll a[21],t,n,m,p;ll gc原创 2020-09-17 23:41:21 · 226 阅读 · 0 评论 -
多校HDU 6644 - 11 Dimensions(假的数位DP)
emm,这题和数位dp关系不大但是思维,代码能力需要比较厉害注意到数据非常大,所以数位dp的O(n)查询不可取但是x个问号可以组成10x个数但是x个问号可以组成10^x个数但是x个问号可以组成10x个数所以高位的?大部分都应该是0所以高位的?大部分都应该是0所以高位的?大部分都应该是0直接dp后30个问号即可,这样前面问号都填0,有1030个数字直接dp后30个问号即可,这样前面问号都填0,有10^{30}个数字直接dp后30个问号即可,这样前面问号都填0,有1030个数字这些组成方案中,肯定超原创 2020-09-16 21:17:53 · 245 阅读 · 0 评论 -
多校HDU 6796 X number:数位DP+指数型母函数
临时去补的指数型母函数,有点搞啊…核心思想就是数位DP计算发现没有限制后,就可以直接计算答案了#include <bits/stdc++.h>using namespace std;typedef long long ll;#define int long longint l,r,d;int a[29],fac[29],s[29];long double c1[29],c2[29],g[29],f[29];map<vector<int>,int>mp;原创 2020-09-15 21:56:12 · 362 阅读 · 0 评论 -
2020牛客多校第六场H-Harmony Pairs(数位DP)
裸的DP直接令dp[len][cha][lim1][lim2]dp[len][cha][lim1][lim2]dp[len][cha][lim1][lim2]lim1表示b是否小于n,lim2表示a是否小于blim1表示b是否小于n,lim2表示a是否小于blim1表示b是否小于n,lim2表示a是否小于b这样我们就可以愉快的求(a,b)得合法对了这样我们就可以愉快的求(a,b)得合法对了这样我们就可以愉快的求(a,b)得合法对了cha的初始值映射到900,这样下标不会变成负数cha的初始值映射到.原创 2020-09-15 14:18:37 · 601 阅读 · 0 评论 -
2019牛客多校 Pair(数位dp)
这题除了有个细节都蛮简单(我卡了几个小时…)求(a,b)(a,b)(a,b)的对数可以直接dp[len][q][w]dp[len][q][w]dp[len][q][w]表示a&ba\&ba&b是否大于C以及a⊕ba\oplus ba⊕b是否小于CCC这样就枚举DP枚举过程中有三种状态0表示目前无法确定大小关系0表示目前无法确定大小关系0表示目前无法确定大小关系1表示已经满足1表示已经满足1表示已经满足2表示再也无法满足2表示再也无法满足2表示再也无法满足我开始没有考虑原创 2020-09-15 13:01:03 · 262 阅读 · 0 评论 -
HDU多校6659 Acesrc and Good Numbers(带思维的数位dp)
首先对于给定的n,dn,dn,d,计算[0,n][0,n][0,n]中数字ddd出现的次数是很容易的在数位dpdpdp强大的复杂度下只需要O(数位)O(数位)O(数位)就能得出结论但是仔细思考发现直接求不超过k的最大答案不好求当d确定时,记dp[n]为[0,n]中d出现的次数当d确定时,记dp[n]为[0,n]中d出现的次数当d确定时,记dp[n]为[0,n]中d出现的次数如果dp[n]==n,那么肯定直接输出n了如果dp[n]==n,那么肯定直接输出n了如果dp[n]==n,那么肯定直接输出n了原创 2020-09-14 22:38:09 · 251 阅读 · 0 评论 -
2019hongkongicpc J - Junior Mathematician(压缩状态的数位DP)
题目链接看起来似乎是很裸的数位dp不难想到我们需要维护一个数位前缀和sumnsumnsumn用于计算f(x)f(x)f(x)我们还需要记录当前枚举值f(x)%mf(x)\%mf(x)%m的值我们还需要记录x%mx\%mx%m的值但是这样复杂度超标我们发现可以直接维护f(x)−xf(x)-xf(x)−x的值,因为模数相同如果第lenlenlen位选择的是iii由于我们维护了len−1位时的f(x)−x由于我们维护了len-1位时的f(x)-x由于我们维护了len−1位时的f(x)−x那么此时原创 2020-09-13 20:27:27 · 413 阅读 · 0 评论 -
HDU5838 G.Mountain(容斥+dfs+状压)
链接nnn和mmm范围很小,考虑状压但是因为谷底的存在不方便状压所以我们定义dp[i][j]dp[i][j]dp[i][j]为从小到大填了iii个数,谷底填过的状态是jjj这样当我们需要把数字i+1i+1i+1填上去的话Ⅰ.可以填充在一个没有被填过的谷底Ⅰ.可以填充在一个没有被填过的谷底Ⅰ.可以填充在一个没有被填过的谷底Ⅱ.可以填充在一个没有被填过的非谷底Ⅱ.可以填充在一个没有被填过的非谷底Ⅱ.可以填充在一个没有被填过的非谷底但仔细想象,满足转移Ⅱ的非谷底需要有一些限制但仔细想象,满足转移Ⅱ的原创 2020-09-11 21:27:11 · 226 阅读 · 0 评论 -
HDU&icpc15沈阳 Matches Puzzle Game(数位)
Matches Puzzle Game这题不难的…还是自己太菜了看完后觉得还是很巧妙的.a-b=c不好判断,变形为a=b+c所以从低位到高位枚举b,c的取值进行DP第一步设计状态\color{Red}第一步设计状态第一步设计状态首先肯定要保存当前剩下几根火柴,还要处理当前是否有进位首先肯定要保存当前剩下几根火柴,还要处理当前是否有进位首先肯定要保存当前剩下几根火柴,还要处理当前是否有进位然后.....还要保存b和c是否枚举完毕!!然后.....还要保存b和c是否枚举完毕!!然后.....还要保原创 2020-09-05 15:01:40 · 317 阅读 · 0 评论