数位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 · 122 阅读 · 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 · 1073 阅读 · 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 · 346 阅读 · 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 · 523 阅读 · 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 · 395 阅读 · 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 · 243 阅读 · 0 评论