
数位DP
文章平均质量分 74
做不完的ACM
加油,努力
展开
-
HDU6156 Palindrome Function数位dp
题意:求L~R所有的数的l~r进制的f(x,k进制), 如果x是回文串f(x,k进制) = k, 否则等于1; 枚举进制,求出每一种情况,注意膜k,不是膜10,T_T调了好久才发现错在这;题解:dp[pos][start][similar][basic]表示basic进制下,处理到完pos位,从start位开始,similar状态下回文串的个数。则记忆化搜索下即可。#include <bit...原创 2018-05-27 14:38:51 · 144 阅读 · 0 评论 -
HDU2089
题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个。题解:dp[len][0 / 1] 表示不含 4 和 62的前提下,剩余长度为 len ,首位是否为 6 的个数。#include <bits/stdc++.h>using namespace std;int dight[32];int dp[20][2];int dfs(int pos, bool sta...原创 2018-05-27 15:07:16 · 1095 阅读 · 0 评论 -
POJ3252
题目链接:http://poj.org/problem?id=3252题意:给出区间[L,R], 统计区间[L,R]有多少个数的2进制0的个数不小于1的个数。题解:dp[pos][start][det], 表示从start位开始,剩余pos位要处理,当前state(二进制0的个数-1的个数)的方案数。为了防止det非负,同时加上35。#include <stdio.h>#includ...原创 2018-05-27 15:32:04 · 373 阅读 · 0 评论 -
HDU3709
题目链接:[kuangbin带你飞]专题十五 数位DP F - Balanced Number题意: 给定区间[a,b],求区间内平衡数的个数。所谓平衡数即有一位做平衡点,左右两边数字的力矩想等。题解:枚举平衡点, 然后dp, 注意0参与计算了cnt次, 所以要减去cnt-1.#include <bits/stdc++.h>using namespace std;typedef...原创 2018-05-27 21:00:46 · 595 阅读 · 1 评论 -
HDU3555
题意:求出小于等于N的数字里包含49的数字个数。题解:#include <bits/stdc++.h>using namespace std;typedef long long ll;ll dp[20][2], t[20];int dight[20];ll dfs(ll n, int pos, bool state, bool limit){ if(!pos)...原创 2018-05-27 21:38:18 · 436 阅读 · 0 评论 -
Codeforces 914C
题目链接:http://codeforces.com/contest/914/problem/C题面: 题意:给出一个数(二进制形式),每次将他变成他的二进制表示中1的个数, 问有多少个数可以正好在K此变化成为1。题解:首先用一个数组f记录下f[i]表示i这个数需要f[i]次变换成为1, 则有递推f[i] = f[__builtin_popcount(i)].DP...原创 2018-07-18 16:36:06 · 269 阅读 · 0 评论