Painful Bases

LightOJ - 1021

这个题目一开始看,感觉有点像数位dp,但是因为是最多有16进制,因为限制了每一个数字都不同最多就有16个数。

所以可以用状压dp,看网上题解是

dp[s][r] 表示数字集合为s,对 k 取余为r的方案数。

这个题目首先把给你的字符转化成数字,然后枚举状态,枚举模数,枚举每一位的所有可能。

这个注意是写离散化的,不是直接暴力,虽然理论上都会超时,但是实际上离散化的没有超时。

这个题目我觉得还挺好的,以后可以在写写

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
typedef long long ll;
ll dp[ << ][];
char s[];
int num[]; int main()
{
int t;
scanf("%d", &t);
for(int cas=;cas<=t;cas++)
{
int base, k;
scanf("%d%d", &base, &k);
scanf("%s", s + );
int len = strlen(s + );
for(int i=;i<=len;i++)
{
if (s[i] <= ''&&s[i] >= '') num[i] = s[i] - '';
else num[i] = + s[i] - 'A';
}
memset(dp, , sizeof(dp));
dp[][] = ;
for(int i=;i<(<<len);i++)
{
for(int mod=;mod<k;mod++)
{
if (dp[i][mod] == ) continue;
for(int id=;id<=len;id++)
{
int tmp = ( << (id-));
if ((tmp | i) == i) continue;
tmp |= i;
dp[tmp][(mod*base + num[id]) % k] += dp[i][mod];
}
}
}
printf("Case %d: %lld\n", cas,dp[( << len) - ][]);
}
return ;
}

状压dp

排列perm

HYSBZ - 1072

这个题目和上面的差不多,有一个小地方注意一下,就是这个有相同的所以要除去。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
#define sum 1<<10
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int maxn = 4e5 + ;
ll dp[ << ][];
int a[maxn];
int vis[];
char s[maxn]; int main() {
int t;
scanf("%d", &t);
while (t--) {
int d;
scanf("%s%d", s + , &d);
memset(vis, , sizeof(vis));
int len = strlen(s + );
int tmp = ;
for (int i = ; i <= len; i++) {
a[i] = s[i] - '';
tmp |= ( << a[i]);
vis[a[i]]++;
}
ll ans = ;
for(int i=;i<=;i++)
{
if(vis[i])
{
for(int j=;j<=vis[i];j++)
{
ans *= j;
}
}
}
memset(dp, , sizeof(dp));
dp[][] = ;
for (int i = ; i < ( << len); i++) {
for (int mod = ; mod < d; mod++) {
if (dp[i][mod] == ) continue;
for (int j = ; j <= len; j++) {
int tmp1 = ( << (j - ));
if ((tmp1 | i) == i) continue;
tmp1 |= i;
dp[tmp1][(mod * + a[j]) % d] += dp[i][mod];
}
}
}
printf("%lld\n", dp[(<<len)-][]/ans);
}
return ;
}

状压

K - Painful Bases 状压dp的更多相关文章

  1. Codeforces Gym 100610 Problem K. Kitchen Robot 状压DP

    Problem K. Kitchen Robot Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10061 ...

  2. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  3. nefu1109 游戏争霸赛(状压dp)

    题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...

  4. poj3311 TSP经典状压dp(Traveling Saleman Problem)

    题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...

  5. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  6. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  7. 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP

    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...

  8. 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP

    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...

  9. 【BZOJ1087】 [SCOI2005]互不侵犯King 状压DP

    经典状压DP. f[i][j][k]=sum(f[i-1][j-cnt[k]][k]); cnt[i]放置情况为i时的国王数量 前I行放置情况为k时国王数量为J #include <iostre ...

随机推荐

  1. virtual box设置网络,使用nat网络和仅主机(Host Only)网络进行连接

    virtual box设置网络,使用nat网络和仅主机(Host Only)网络进行连接 前言 作为程序员难免要在本机电脑安装虚拟机,最近在用virtual box安装虚拟机的时候遇到了点问题. 对于 ...

  2. springboot项目war包部署及出现的问题Failed to bind properties under 'mybatis.configuration.mapped-statements[0].

    1.修改pom文件 修改打包方式 为war: 添加tomcat使用范围,provided的意思即在发布的时候有外部提供,内置的tomcat就不会打包进去 <groupId>com.scho ...

  3. 【课程学习】课程2:十行代码高效完成深度学习POC

    本文用户记录黄埔学院学习的心得,并补充一些内容. 课程2:十行代码高效完成深度学习POC,主讲人为百度深度学习技术平台部:陈泽裕老师. 因为我是CV方向的,所以内容会往CV方向调整一下,有所筛检. 课 ...

  4. linux 下强大的 JSON 解析命令 jq

    介绍 jq is like sed for JSON data - you can use it to slice and filter and map and transform structure ...

  5. 10行代码,用python能做出什么骚操作

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:小栗子 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  6. lua学习之逻辑运算符not,and,or

    根据某度查询,lua中的逻辑运算符和其他高级语言大不相同,balabala.我们来看看 广大网友怎么说吧. 版本1: 版本2: 版本3:  揭晓答案: lua中的逻辑与或非与其他语言无差别,都是正常的 ...

  7. Gatling脚本编写技巧篇(二)

    脚本示例: import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.durati ...

  8. 基于netty实现rpc框架-spring boot服务端

    demo地址 https://gitee.com/syher/grave-netty RPC介绍 首先了解一下RPC:远程过程调用.简单点说就是本地应用可以调用远程服务器的接口.那么通过什么方式调用远 ...

  9. selenium 执行js代码

    获取一个input输入框的值: JavascriptExecutor js =(JavascriptExecutor) driver; merchatName=js.executeScript(&qu ...

  10. (转载)基于BIGINT溢出错误的SQL注入

    我对于通过MySQL错误提取数据的新技术非常感兴趣,而本文中要介绍的就是这样一种技术.当我考察MySQL的整数处理方式的时候,突然对如何使其发生溢出产生了浓厚的兴趣.下面,我们来看看MySQL是如何存 ...