[Codeforces]856C - Eleventh Birthday
题目大意:给出n个数,问有多少种排列把数字接起来是11的倍数。(n<=2000)
做法:一个数后面接一个数等同于乘上10的若干次幂然后加上这个数,10模11等于-1,所以10的若干次幂是-1或1,根据这个把长度奇和偶的分开考虑,他们最后对和的贡献都是可以确定的几段正几段负,f[i][j][k]表示前i个长度为奇/偶的数,j个贡献为负,对和的贡献为k的方案数,最后再排列组合比较容易可以算出答案,复杂度O(11*n^2)。
代码:
#include<cstdio>
#include<cstring>
inline int read()
{
int x;char c;
while((c=getchar())<''||c>'');
for(x=c-'';(c=getchar())>=''&&c<='';)x=x*+c-'';
return x;
}
#define MN 2000
#define MOD 998244353
int a[MN+],an,b[MN+],bn,C[MN+][MN+],f1[MN+][MN+][],f2[MN+][MN+][],v[],p[MN+];
inline int mod(int x){return x<MOD?x:x-MOD;}
inline int f(int n,int m){return m?1LL*p[n]*C[n+m-][m-]%MOD:n?:;}
int main()
{
int T,n,i,j,k,x,ans;
for(p[]=i=;i<=MN;++i)p[i]=1LL*p[i-]*i%MOD;
for(i=;i<=MN;++i)for(C[i][]=j=;j<=i;++j)C[i][j]=mod(C[i-][j-]+C[i-][j]);
for(i=;i<;++i)v[i]=i%;
for(T=read();T--;)
{
n=read();an=bn=;
for(;n--;(j&?a[++an]:b[++bn])=x%)for(k=x=read(),j=;k;k/=)++j;
for(f1[][][]=,i=;i<=an;++i)for(j=;j<=an/;++j)for(k=;k<;++k)
f1[i][j][k]=mod((j?f1[i-][j-][v[k+a[i]]]:)+f1[i-][j][v[k+-a[i]]]);
for(f2[][][]=,i=;i<=bn;++i)for(j=;j<=bn;++j)for(k=;k<;++k)
f2[i][j][k]=mod((j?f2[i-][j-][v[k+b[i]]]:)+f2[i-][j][v[k+-b[i]]]);
for(j=;j<;++j)f1[an][an/][j]=1LL*f1[an][an/][j]*p[an/]%MOD*p[an-an/]%MOD;
for(ans=i=;i<=bn;++i)for(j=;j<;++j)
ans=(ans+1LL*f1[an][an/][j]*f2[bn][i][v[-j]]%MOD*f(i,(an+)/)%MOD*f(bn-i,an+-(an+)/))%MOD;
printf("%d\n",ans);
}
}
[Codeforces]856C - Eleventh Birthday的更多相关文章
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- 代码中输入数字自动筛选出最大值,使用array,for loop and if (21.9.2017)
# include <stdio.h> # define N main(){ int a, b; ,,,,,,,,,,,,,,,,}; //array中输入需要排序的数字 ]; ; a & ...
- 第二周c语言PTA作业留
6-1 计算两数的和与差(10 分) 本题要求实现一个计算输入的两数的和与差的简单函数. 函数接口定义: void sum_diff( float op1, float op2, float psum ...
- scrapy 模拟登陆
import scrapy import urllib.request from scrapy.http import Request,FormRequest class LoginspdSpider ...
- 从集合的无序性看待关系型数据库中的"序"
本文目录:1.集合的特征2.集合的无序性3.表中记录的无序性4.集合的"序"和物理存储顺序之间的关系5.查询结果(虚拟表)的无序性.随机性6.为什么总是强调"无序&quo ...
- JAVA_SE基础——36.static的实际应用
什么时候定义静态函数 如果功能内部没有访问到非静态数据(对象的特有数据.那么该功能就可以定义为静态) P.S. 静态方法作为类和接口的重要组成部分,可以通过类名或接口直接访问,通常将那些使用频率较高的 ...
- 我的前端故事----来聊聊react-native应用的健康监控
监控什么 今天我们来聊聊如何监控你的应用程序,这里的监控说的不是让我们去监控用户,而是监控应用的健康状态,什么是健康状态呢?对于后端的同学来说,在微服务的架构下,每个子服务是否正常工作.返回的结果是否 ...
- emqtt 试用(四)emq 的主题访问控制 acl.conf
访问控制(ACL) EMQ 消息服务器通过 ACL(Access Control List) 实现 MQTT 客户端访问控制. ACL 访问控制规则定义: 允许(Allow)|拒绝(Deny) 谁(W ...
- 新概念英语(1-11)Is this your shirt ?
Is this your shirt?Whose shirt is white? A:Whose shirt is that? Is this your shirt, Dave? Dave:No si ...
- GIT入门笔记(15)- 链接到私有GitLab仓库
GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...
- Python入门之PyCharm的快捷键与常用设置和扩展(Win系统)
1. PyCharm的快捷键 2 . PyCharm的常用设置和扩展 ---------------------------------------------------------------- ...