NOIp2018集训test-9-5(am)
Problem A. maze
递归处理,题解写得真简单。
我大概这辈子也写不出来这种东西吧。
Problem B. count
容易发现合法的数中一定有且仅有两个数加起来等于10,其他数两两配对加起来等于9或者0。
考场上就随便统计了下数的个数,然后组合数给每个不够的数配,结果忘了还有?和?配的情况,下来??随便选了下,发现会有重复的部分,大概只能dp了。
枚举加起来等于10的数是哪两个,然后dp。
f[i][j](0<=i<=4)表示 0/9,1/8……i/9-i的数量已经确定了,用了j个?的方案数。因为?只有1000个,可以随便转移。
0,9比较特殊,我预处理初状态的时候特殊考虑,枚举放几个0放几个9,只要个数和为偶数且0的个数多于9即可,后面的数确定了i的个数就可以确定9-i的个数了,可以直接转移。
具体还要枚举的加起来10的数的处理,看代码吧。
//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<set>
#include<map>
#define Formylove return 0
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=1e5+,p=1e9+;
typedef long long LL;
typedef double db;
using namespace std;
LL ans,fac[N],inv[N],f[][];
int n,cnt[],tot;
char s[N]; template<typename T>void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} LL C(int n,int m) {
if(n<m) return ;
return fac[n]*inv[m]%p*inv[n-m]%p;
} #define ANS
int main() {
#ifdef ANS
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
#endif
scanf("%s",s);
n=strlen(s);
fac[]=inv[]=inv[]=;
For(i,,n) fac[i]=fac[i-]*i%p;
For(i,,n) inv[i]=(p-p/i*inv[p%i]%p)%p;
For(i,,n) inv[i]=inv[i-]*inv[i]%p;
For(i,,n-) {
if(s[i]=='?') tot++;
else cnt[s[i]-'']++;
}
For(sp,,) {
int t1=sp,t2=-sp;
memset(f,,sizeof(f));
For(i,,tot) For(j,,tot-i) { //i个0 j个9
if((cnt[]+i<cnt[]+j-(t2==))||(t2==&&cnt[]+j==)) continue;
if((cnt[]+i+cnt[]+j-(t2==))%==) continue;
(f[][i+j]+=C(tot,i)*C(tot-i,j)%p)%=p;
}
For(i,,) For(j,,tot) if(f[i][j]) {
For(k,,tot-j) {//k个i+1
int l=cnt[i+]+k-(t1==i+)-cnt[-i]+(t2==-i);
if(t1==t2) l=cnt[i+]+k-cnt[-i]+*(t2==-i);
if(l<||l+k+j>tot) continue;
(f[i+][j+k+l]+=f[i][j]*C(tot-j,k)%p*C(tot-j-k,l)%p)%=p;
}
}
ans=(ans+f[][tot])%p;
}
printf("%lld\n",ans);
Formylove;
}
Problem C. sequence
我考场上的代码完全瞎那啥在扯淡,我还以为自己能A,我怕不是是个智障哦
还没改出来
NOIp2018集训test-9-5(am)的更多相关文章
- NOIp2018集训test-10-24(am&pm)
李巨连续AK三场了,我跟南瓜打赌李巨连续AK七场,南瓜赌李巨连续AK五场. DAY1 T1 qu 按题意拿stack,queue和priority_que模拟即可.特判没有元素却要取出的情况. T2 ...
- NOIP2018 集训(三)
A题 Tree 问题描述 给定一颗 \(n\) 个点的树,树边带权,试求一个排列 \(P\) ,使下式的值最大 \[\sum_{i=1}^{n-1} maxflow(P_i, P_{i+1}) \] ...
- NOIP2018 集训(二)
A题 神炎皇 问题描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对 \((a,b)\) ,若满足 \(a+b\leq n\) 且 \(a+b\) 是 \(ab\) 的因子,则称 为神 ...
- NOIP2018 集训(一)
A题 Simple 时间限制:1000ms | 空间限制:256MB 问题描述 对于给定正整数\(n,m\),我们称正整数\(c\)为好的,当且仅当存在非负整数\(x,y\)使得\(n×x+m×y=c ...
- NOIp2018集训test-10-18 (bike day4)
这是一套简单题,这几天的考试让bike老爷感觉很绝望,说实话我也确实不知道还能怎么更简单了. 这几天的题换做llj.sxy应该都能轻松AK吧,至少随便考个250+应该不是问题吧,我越来越觉得觉得我跟他 ...
- NOIp2018集训test-10-17 (bike day3)
发现自己gradully get moodier and moodier了 负面情绪爆发地越来越频繁,根本out of control,莫名其妙地就像着了魔一样 为什么用英语大概是因为今天早上早自习因 ...
- NOIp2018集训test-10-16 (bike day2)
“毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是noip你们就凉透了啊“ 今天的题难度应该是3.2.1递减的,但是我不知道哪根筋没搭对,平时我最多1h多就弃题了,今天硬生生写了2h20min的 ...
- [雅礼NOIP2018集训] day6
打满暴力好像是一种挑战,已经连续几天考试最后一个小时自闭了,因为自以为打完了暴力,然而,结果往往差强人意 大概是考试的策略有些问题 T1: 我们设$g[x]$为在x时取小于等于m个物品的最大价值,下面 ...
- [雅礼NOIP2018集训 day4]
感觉状态极差啊,今天居然爆零了 主要是以下原因: 1.又是T1看错题肝了两个小时,发现题意理解错误瞬间心态爆炸 2.T2交错了文件名 3.T3暴力子任务和正解(假的)混在一起,输出了两个答案 都想为自 ...
- [雅礼NOIP2018集训 day1]
现在才来填坑,之后还要陆续补其他几天的,可能前几天真的太颓了 T1: 题目大意:给定一个长度为n的序列,m次询问每次询问给出l,r,询问区间l到r的元素在模k意义下的最大值 数据范围当然是你暴力写不过 ...
随机推荐
- Android开发笔记之ArrayAdapter
1,ArrayAdapter的item中的条目的布局文件的正确写法: item.xml <?xml version="1.0" encoding="utf-8&qu ...
- leetcode-163周赛-1261-在污染的二叉树中查找元素
题目描述: 方法一: class FindElements: def __init__(self, root: TreeNode): self.d = set() def f(r, x): if r: ...
- 微信小程序截取字符串
我这里用的 str.substring(star,end)第一个参数代表开始位置,第二个参数代表结束位置的下一个位置;若参数值为负数,则将该值转为0;两个参数中,取较小值作为开始位置,截取出来的字符串 ...
- 【LeetCode 23】合并K个排序链表
题目链接 [题解] 会归并排序吧? 就把这K个链表当成是K个数字就好. 然后做归并排序. 因为归并排序的时候本来就会有这么一个过程. [l..mid]和[mid+1..r]这两段区间都是有序的了已经. ...
- JSP自定义标签(转)
1. TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport, ...
- targetSdkVersion和与target属性的区别
参考:http://blog.csdn.net/dai_zhenliang/article/details/8175781 AndroidMenifest.xml中targetSdkVersion和p ...
- HDU6333 求组合数前m项的和
目录 分块 莫队 @ HDU6333:传送门 题意:求组合数前m项的和. 在线分块or离线莫队 分块 重要的一个定理: \[C_{n}^{m} = 0\;\;m > n\] \[C_{n}^{m ...
- Linux/UNIX上安装Mysql
接下来我们在 Centos 系统下使用 yum 命令安装 MySql: 检测系统是否自带安装 mysql: rpm -qa | grep mysql 如果你系统有安装,那可以选择进行卸载: rpm - ...
- go gin
1.安装 go get -u github.com/gin-gonic/gin 2. package main import "github.com/gin-gonic/gin" ...
- Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)
文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...