bzoj1072
还是那句话s<=10 必然想到状压
题目唯一的难点在于怎么转移整除
整除即是mod d=0,我们用f[cur,j]表示选取状况为cur,余数为j的方案数
注意一个数a1a2a3…an (ai表示第i位的数字)
这个数可以这样表示[(a1*10+a2)*10+a3]*10……
根据mod的运算律,所以转移就很明显了吧
注意这里算出的方案数没有考虑几个数字重复的情况
所以还要用可重复排列的技术方法除一下
var f:array[..,..] of longint;
s,a,d:array[..] of longint;
ans,p,x,i,j,k,m,n,t,tot:longint;
ch:char; begin
readln(tot);
d[]:=;
for i:= to do
d[i]:=d[i-]*i;
while tot> do
begin
dec(tot);
fillchar(s,sizeof(s),);
t:=;
read(ch);
while ch<>' ' do
begin
x:=ord(ch)-;
inc(t);
a[t]:=x;
inc(s[x]);
read(ch);
end;
readln(p);
fillchar(f,sizeof(f),);
m:= shl t-;
f[,]:=;
for i:= to m do
for j:= to p- do
for k:= to t- do
begin
x:= shl k;
if i and x= then
inc(f[i or x,(j*+a[k+]) mod p],f[i,j]);
end; ans:=f[m,];
for i:= to do
ans:=ans div d[s[i]];
writeln(ans);
end;
end.
bzoj1072的更多相关文章
- 【BZOJ1072】排列(搜索)
[BZOJ1072]排列(搜索) 题面 BZOJ 洛谷 题解 算下复杂度,如果用\(next\_permutation\) 那就是\(10!\times 10\times 15\),复杂度不太对 那好 ...
- [bzoj1072] [SCOI2007]排列perm
有一种暴力算法就是直接枚举. 正解就是状压dp 令f[i][j]:i:使用的数位的状态j:当前的模数 边界:f[0][0] = 1; f[i|1<<k][j*10+k % n] += f[ ...
- [BZOJ1072][SCOI2007] 排列prem
Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能被2整除,其中末位为2的有30种,末位为4的有60种. Input ...
- bzoj1072排列
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1072 好像是这方面的裸题. 整除k 要想转移需要记录下 达到模k所有余数 的方案数. 为了生 ...
- BZOJ1072 排列perm 【状压dp】
Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能 被2整除,其中末位为2的有30种,末位为4的有60种. Inpu ...
- 【BZOJ1072】【SCOI2007】排列 [状压DP]
排列 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 给一个数字串s和正整数d, 统计s有多 ...
- 【bzoj1072】SCOI2007排列
状压dp,f[i][j]表示当前取了i,模数余j的状态. 然后向后推,枚举可能的数即可. 注意每个数存在重复,最后要除以相应出现次数的阶乘. #include<bits/stdc++.h> ...
- 【枚举】bzoj1072 [SCOI2007]排列perm
暴力,next_permutation函数用于枚举出下一个排列.sscanf函数用于将字符串转化成数字. #include<cstdio> #include<cstring> ...
- [BZOJ1072][SCOI2007]排列perm 状压dp
1072: [SCOI2007]排列perm Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2488 Solved: 1546[Submit][St ...
随机推荐
- JS获取日期和时间
//获取日期和时间 function showDate(){ var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFul ...
- requirejs实践一 加载JavaScript文件
首先,目录如下(根目录有一个index.html文件.有一个scripts文件夹): scripts文件夹有如下的文件 以下是index.html代码 <!DOCTYPE html> &l ...
- CCPC网赛,HDU_5832 A water problem
Problem Description Two planets named Haha and Xixi in the universe and they were created ...
- ubuntu 安装phpmyadmin
参考文章: http://www.111cn.net/database/mysql/43957.htm access错误的解决方法 1 首先下载 去官网下载phpmyadmin 2 然后直接 ...
- docker私有仓库
1.docker pull registry 2.sudo docker run -d -p 5000:5000 registry 默认情况下,会将仓库存放于容器内的/tmp/registry目录下, ...
- fedora 20 install skype
http://www.if-not-true-then-false.com/2012/install-skype-on-fedora-centos-red-hat-rhel-scientific-li ...
- 【自用代码】Json转对象
private static object JsonToObject(string jsonString, object obj) { var serializer = new DataContrac ...
- Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件
做个项目使用jquery easyui来做前端,也许是对此不是很熟悉,总是发现一些不可理解的事件. 主要源代码如下: <script type="text/javascript&qu ...
- 【转】oracle PLSQL常用方法汇总
原文:http://www.cnblogs.com/luluping/archive/2010/03/10/1682885.html 在SQLPLUS下,实现中-英字符集转换alter session ...
- Ionic简介和环境安装
什么是Ionic Ionic是一个用来开发混合手机应用的,开源的,免费的代码库.可以优化html.css和js的性能,构建高效的应用程序,而且还可以用于构建Sass和AngularJS的优化.ioni ...