【GDOI2016模拟3.10】习用之语
前言
这道题看上去很水,结果我在比赛上浪费了N多时间在上面,但还是没AC。比赛结束后发现:实际上这道题还是是大水。
题目
分析
设字符串c1c2c3c4,其中c1、c2、c3、c4={'0''9','a''z','#'},'#'代表任意字符(例如字符串"#123"等于"0123"、"1123"、"2123"、···、“y123"、"z123")。
设f[c1][c2][c3][c4]表示目前与字符串c1c2c3c4相等的字符串有多少个;
然后按照输入顺序,依次把输入的字符串放入f,再放入之前容斥求增加的答案就可以了。
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
using namespace std;
int m,d,n,tot,ans,b[200];
int f[40][40][40][40];//0指'#'
char s[5];
int main()
{
scanf("%d%d\n",&n,&d);
tot=0;
for(int g='0';g<='9';g++)
b[g]=++tot;
for(int g='a';g<='z';g++)
b[g]=++tot;
ans=0;
for(int q=1;q<=n;q++)
{
scanf("%s\n",s);
if(d==3)
{
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
for(int l=0;l<=1;l++)
for(int g=0;g<=1;g++)
if((j+k+l+g)==1)
ans+=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]];
else
if((j+k+l+g)==3)
ans+=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]]*3;
else
if((j+k+l+g)==2) ans-=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]]*2;
else
if((j+k+l+g)==4) ans-=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]]*4;
}
else
if(d==2)
{
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
for(int l=0;l<=1;l++)
for(int g=0;g<=1;g++)
if((j+k+l+g)==2)
{
ans+=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]];
}
else
if((j+k+l+g)==3)
{
ans-=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]]*3;
}
else
if((j+k+l+g)==4)
{
ans+=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]]*6;
}
}
else
if(d==1)
{
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
for(int l=0;l<=1;l++)
for(int g=0;g<=1;g++)
if((j+k+l+g)>=3)
if((j+k+l+g)%2) ans+=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]];
else ans-=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]]*4;
}
else
if(d==4)
{
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
for(int l=0;l<=1;l++)
for(int g=0;g<=1;g++)
if((j+k+l+g)>=0)
if(!((j+k+l+g)%2)) ans+=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]];
else ans-=f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]];
}
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
for(int l=0;l<=1;l++)
for(int g=0;g<=1;g++)
f[j*b[s[0]]][k*b[s[1]]][l*b[s[2]]][g*b[s[3]]]++;
}
printf("%d\n",ans);
}
【GDOI2016模拟3.10】习用之语的更多相关文章
- 【GDOI2016模拟3.15】基因合成(回文串+性质+DP)
[GDOI2016模拟3.15]基因合成 题意: 给一个目标串,要求从空串进行最少的操作次数变成目标串,操作有两种: 在串的头或尾加入一个字符. 把串复制一遍后反向接到串的末尾. 因为有回文操作,所以 ...
- 【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
[GDOI2016模拟3.16]幂 \(X\in[1,A],Y\in[1,B]\),问:\(x^y\)的不用取值个数. \(A,B\)都是\(10^9\)级别. 然后我们开搞. 首先,假设一个合法的\ ...
- NOIP2017提高组模拟赛 10 (总结)
NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...
- [NOIP2018模拟赛10.16]手残报告
[NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...
- 【noip模拟赛10】奇怪的贸易 高精度
描述 刚结束了CS战斗的小D又进入了EVE的游戏世界,在游戏中小D是一名商人,每天要做的事情就是在这里买东西,再运到那里去卖.这次小D来到了陌生的X星,X星上有n种货物,小D决定每种都买走一些,他用a ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
- 20180824Noip模拟赛10分总结
嗯,总之,是我太傻了. 我真傻,真的,我单知道最小生成树,却不知道还有最大生成树 T1 最大生成树.... 累加每一个环内,最大生成树的边权,(对环求最大生成树,则必然剩下一个边权最小的边(因为是求生 ...
- .net core Json字符串的序列化和反序列化通用类源码,并模拟了10万数据对比DataContractJsonSerializer和Newtonsoft性能
我们在开发中Json传输数据日益普遍,有很多关于Json字符串的序列化和反序列化的文章大多都告诉你怎么用,但是却不会告诉你用什么更高效.因为有太多选择,人们往往会陷入选择难题. 相比.NET Fram ...
随机推荐
- framework7 底部弹层popup js关闭方法
<div class="u-sd-btns"> <button>同意</button> <button class="popup ...
- 【Qt开发】【VS开发】VS2010+Qt开发环境搭建
QT与JAVA有点类似,也是一种跨平台的软件(当然在windows平台和linux平台需要安装相应的QT开发环境和运行库,类似于JAVA在不同平台下的虚拟机JVM环境),因此对于某些需要同时支持win ...
- Redis的 SLAVEOF 命令
SLAVEOF host port SLAVEOF 命令用于在 Redis 运行时动态地修改复制(replication)功能的行为. 通过执行 SLAVEOF host port 命令,可以将当前服 ...
- XLS导出的服务器端配置方式
IIS支持excel导出: 1.开始—运行,然后键入DCOMCNFG; 2.组件服务—计算机—我的电脑—DCOM配置,这时弹出一个问注册的窗口,确定注册. 这时如果一切恢复正常了,不用往下操作了. 关 ...
- int快读
昨天偶然间看到CJ_tony的快读,所以便决定学习一下. 这个快读的原理就是:读入单个字符要比读入读入数字快,先读入字符,然后再转化成数字.(原理的话大学再研究) 代码: #include<io ...
- [BZOJ3451]Normal(点分治+FFT)
[BZOJ3451]Normal(点分治+FFT) 题面 给你一棵 n个点的树,对这棵树进行随机点分治,每次随机一个点作为分治中心.定义消耗时间为每层分治的子树大小之和,求消耗时间的期望. 分析 根据 ...
- 提高CUI测试稳定性技术
GUI自动化测试稳定性,最典型的表现形式就是,同样的测试用例在同样的环境上,时而测试通 过,时而测试失败. 这也是影响GUI测试健康发展的一个重要障碍,严重降低了GUI测试的可信性. 五种造成GUI测 ...
- HDU-1018 BigNumber
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 字符串hash 模板
typedef long long ll; typedef unsigned long long ull; #define maxn 1005 struct My_Hash { ull ; ull p ...
- nodeJS打包安装和问题处理
一,执行步骤,打包报错 1,查看npm版本npm -v 2,查看gulp版本(报错怎么证明没安装)gulp --version 3,安装gulpnpm install --global gulp-cl ...