2015 Multi-University Training Contest 8 hdu 5389 Zero Escape
Zero Escape
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 407    Accepted Submission(s): 190
Zero Escape, is a visual novel adventure video game directed by Kotaro Uchikoshi (you may hear about ever17?) and developed by Chunsoft.
Stilwell is enjoying the first chapter of this series, and in this chapter digital root is an important factor.
This is the definition of digital root on Wikipedia:
The digital root of a non-negative integer is the single digit value obtained by an iterative process of summing digits, on each iteration using the result from the previous iteration to compute a digit sum. The process continues until a single-digit number is reached.
For example, the digital root of 65536 is 7, because 6+5+5+3+6=25 and 2+5=7.
In the game, every player has a special identifier. Maybe two players have the same identifier, but they are different players. If a group of players want to get into a door numbered X(1≤X≤9), the digital root of their identifier sum must be X.
For example, players {1,2,6} can get into the door 9, but players {2,3,3} can't.
There is two doors, numbered A and B. Maybe A=B, but they are two different door.
And there is n players, everyone must get into one of these two doors. Some players will get into the door A, and others will get into the door B.
For example: 
players are {1,2,6}, A=9, B=1
There is only one way to distribute the players: all players get into the door 9. Because there is no player to get into the door 1, the digital root limit of this door will be ignored.
Given the identifier of every player, please calculate how many kinds of methods are there, mod 258280327.
Input
The first line of the input contains a single number T, the number of test cases.
For each test case, the first line contains three integers n, A and B.
Next line contains n integers idi, describing the identifier of every player.
T≤100, n≤105, ∑n≤106, 1≤A,B,idi≤9
解题:动态规划
dp[i][j]表示当前考察了第i个且余数为j的方案数
\[dp[i]][j] += dp[i-1][k]*\binom{x}{n} 其中(i*x + k) \equiv j mod 9\]
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = ;
const LL mod = ;
LL dp[][maxn];
int hs[],sum;
LL quickPow(LL a,LL b) {
LL ret = ;
a %= mod;
while(b) {
if(b&) ret = (ret*a)%mod;
b >>= ;
a = a*a%mod;
}
return ret;
}
LL gcd(LL a,LL b,LL &x,LL &y) { //ax + by = gcd(a,b)
if(!b) {
x = ;
y = ;
return a;
}
LL ret = gcd(b,a%b,y,x);
y -= x*(a/b);
return ret;
}
LL Inv(LL b,LL mod) { //求b % mod的逆元
LL x,y,d = gcd(b,mod,x,y);
return d == ?(x%mod + mod)%mod:-;
}
int main() {
int kase,n,A,B,tmp,maxv;
scanf("%d",&kase);
while(kase--) {
scanf("%d%d%d",&n,&A,&B);
memset(dp,,sizeof dp);
memset(hs,,sizeof hs);
for(int i = sum = maxv = ; i < n; ++i) {
scanf("%d",&tmp);
sum += tmp;
maxv = max(maxv,tmp);
hs[tmp%]++;
}
if(sum% != (A + B)%) {
if(maxv <= A && sum%A == || maxv <= B && sum%B == )
puts("");
else puts("");
continue;
}
A %= ;
dp[][] = quickPow(,hs[]);
for(int i = ; i < ; ++i) {
LL a = ,b = ;
for(int j = ; j <= hs[i]; ++j) {
if(j) {
a = a*(hs[i] - j + )%mod;
b = b*j%mod;
}
LL ret = j?a*Inv(b,mod)%mod:;
for(int k = ; k < ; ++k) {
int tmp = (i*j + k)%;
dp[i][tmp] += dp[i-][k]*ret;
dp[i][tmp] %= mod;
}
}
}
printf("%I64d\n",dp[][A]);
}
return ;
}
2015 Multi-University Training Contest 8 hdu 5389 Zero Escape的更多相关文章
- 2015 Multi-University Training Contest 8 hdu 5390 tree
		tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ... 
- 2015 Multi-University Training Contest 8 hdu 5383 Yu-Gi-Oh!
		Yu-Gi-Oh! Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: ... 
- 2015 Multi-University Training Contest 8 hdu 5385 The path
		The path Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5 ... 
- 2015 Multi-University Training Contest 3 hdu 5324 Boring Class
		Boring Class Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ... 
- 2015 Multi-University Training Contest 3 hdu 5317 RGCDQ
		RGCDQ Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ... 
- 2015 Multi-University Training Contest 10 hdu 5406 CRB and Apple
		CRB and Apple Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ... 
- 2015 Multi-University Training Contest 10 hdu 5412 CRB and Queries
		CRB and Queries Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ... 
- 2015 Multi-University Training Contest 6 hdu 5362 Just A String
		Just A String Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ... 
- 2015 Multi-University Training Contest 6 hdu 5357 Easy Sequence
		Easy Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ... 
随机推荐
- rails undefined method error_messages
			rails undefined method error_messages 学习了:http://stackoverflow.com/questions/10002140/use-error-mess ... 
- hdu 4717 The Moving Points(三分)
			http://acm.hdu.edu.cn/showproblem.php?pid=4717 大致题意:给出每一个点的坐标以及每一个点移动的速度和方向. 问在那一时刻点集中最远的距离在全部时刻的最远距 ... 
- Apache + Tomcat 负载均衡 session复制
			转自:http://blog.csdn.net/cssmhyl/article/details/8455400 http://snowolf.iteye.com/blog/743611 Apache ... 
- 本地 配置 Memcache
			如果帮到了您,可以支持一下,谢谢您的支持! Windows下的Memcache安装: 64bit:如果需要win64版,下载 memcached-win64-1.4.4-14.zip(直接下),里面有 ... 
- DirectX11 学习笔记4 -  一个完整的封装框架
			watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3EzNjExMDYzMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ... 
- 2016.02.23,英语,《Vocabulary Builder》Unit 01
			Bell:来源于拉丁语,含义为war.fight,其中Bellona [bә'lәunә]是罗马女战神的名字,她的丈夫是战神Mars.antebellum: [ˌænti'beləm] adj. 战前 ... 
- poj3685(嵌套二分)
			Matrix Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 4658 Accepted: 1189 Descriptio ... 
- angularjs1-3,工具方法,bootstrap,多个module,引入jquery
			<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ... 
- 16.unix网络编程一卷 unp.h
			unix网络编程 --ubuntu下建立编译环境 1.安装编译器,安装build-essential sudo apt-get install build-essential 2.下载本书的头文件 下 ... 
- 4.QList
			#include "mainwindow.h" #include <QApplication> #include <QLabel> #include < ... 
