【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 ...
随机推荐
- spring中的增强类型
在spring中有两种增强方式:XML配置文件和注解配置.下面一次为大家讲解. 使用的是Aspectj第三方框架 纯POJO (在XML中配置节点) 使用@AspectJ,首先要保证所用的JDK 是5 ...
- 在树莓派上搭建jupyter notebook server
自从搬家后,树莓派闲置了好一段时间,最近打算将其利用起来.想来想去,搭个jupyter notebook用要靠谱的,毕竟经常要实验一些Python脚本. 具体过程参考以下链接: https://www ...
- python3--udp/TCP笔记和实践
UDP协议: UDP (User Datagram Protocol, 用户数据报协议) 是一种无连接,不可靠,基于数据的传输层通信协议. UDP的通信过程与TCP相比比较为简单, 不需要复杂的三次握 ...
- 初学node.js-nodejs中实现修改用户路由
经过前面几次的学习,已经可以做下小功能,今天要实现的是修改用户路由. 一.users_model.js 功能:定义用户对象模型 var mongoose=require('mongoose'), S ...
- 【计算机视觉】HDR之tone mapping简介
tone Mapping原是摄影学中的一个术语,因为打印相片所能表现的亮度范围不足以表现现实世界中的亮度域,而如果简单的将真实世界的整个亮度域线性压缩到照片所能表现的亮度域内,则会在明暗两端同时丢失很 ...
- [转帖]IDC发布2018下半年中国公有云市场报告
IDC发布2018下半年中国公有云市场报告:AWS以6.4%的份额名列第四 http://www.itpub.net/2019/05/06/1793/ 电信的公有云 好像是用的 华为的技术. AWS在 ...
- STM32f103软件复位
参考博客: http://bbs.21ic.com/icview-1251690-1-1.html stm32f103rct 软件复位函数: 在core_cm3.h文件 static __INLINE ...
- Linux cat 多行写入文件防止变量替换
Linux cat 多行写入文件防止变量替换 问题描述 对多个变量及多行输出到文件,存在变量自动替换,当使用cat<<EOF不想对内容进行变量替换.命令替换.参数展开等 问题解决 转义特 ...
- 管道(Pipe)----计算机进程间通信
参至他人博客:https://blog.csdn.net/u011583316/article/details/83419805
- 最长公共子序列(LCS) Medium1
In a few months the European Currency Union will become a reality. However, to join the club, the Ma ...