2017-9-3模拟赛T3 密码(key)
题目

题解
这题用类似暴力+优化(划掉)的思想。
对于每个轨迹串,求出每一位向后的第一个0-9间某个数字的位置(如123112中3后面第1个2的位置为从左往右数第6个),复杂度O(Σn)=O(L)。
在dfs中枚举密码,相邻两位相同的在处理中合并(即不枚举1223,改为123)。
还有就是要注意,当位数为2或3时,若匹配成功则答案+3而不是+1。比如枚举23,可以有2333,2233,2223三种密码。枚举123,可以有1123,1223,1233三种。
最后就是细节问题了。
代码
#include <stdio.h>
#define N 1005
int n,a[N],d[],k[]={,,,,},ans=;char *s[N];
struct sufarr {
short a[];
void clear(){for(int i=;i<;++i) a[i]=;}
} *suf[N],tmp;
inline void input() {
scanf("%d",&n);
for(int i=;i<n;++i) {
scanf("%d",a+i);
s[i]=new char[a[i]+];
suf[i]=new sufarr[a[i]+];
scanf("%s",s[i]+);
tmp.clear();
for(int j=a[i];j;--j) {
suf[i][j]=tmp;
tmp.a[s[i][j]^]=j;
}
suf[i][]=tmp;
}
}
inline bool test(int len) {
int cnt,cur,u;
for(int i=;i<n;++i) {
for(cur=,cnt=;cnt<=len;++cnt) {
u=suf[i][cur].a[d[cnt]];
if(!u) break;cur=u;
}
if(cnt<=len) return ;
}
return ;
}
void dfs(int t) {
for(int i=;i<;++i) {
if(i!=d[t-]) {
d[t]=i;
if(test(t)) {
ans+=k[t];
if(t<) dfs(t+);
}
}
}
}
int main() {
input();
d[]=-;dfs();
printf("%d",ans);
return ;
}
#include <OI必会>
using namespace OIer;
void 完结撒花() {
日常 %("czhou");
}
int main() {
完结撒花();
return 0;
}
2017-9-3模拟赛T3 密码(key)的更多相关文章
- 体育成绩统计——20180801模拟赛T3
体育成绩统计 / Score 题目描述 正所谓“无体育,不清华”.为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心.然而每到学期期末时, ...
- 20180520模拟赛T3——chess
[问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...
- 20161005 NOIP 模拟赛 T3 解题报告
subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. c ...
- ztz11的noip模拟赛T3:评分系统
代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 20181030NOIP模拟赛T3
2017种树 2017共有N棵树从0到N-1标号.现要把这些树种在一条直线上,第i棵树的种植位置X[i]如下确定: X[0] = X[0] MOD L: X[i] = (X[i-1]*A+B) MOD ...
- 20180711模拟赛T3——聚变
文件名: fusion 题目类型: 传统题 时间限制: 3秒 内存限制: 256MB 编译优化: 无 题目描述 知名科学家小A在2118年在计算机上实现了模拟聚变的过程. 我们将她研究的过程简化. 核 ...
- 4.26 省选模拟赛 T3 状压dp 差分求答案
LINK:T3 比较好的题目 考试的时候被毒瘤的T2给搞的心态爆炸 这道题连正解的思路都没有想到. 一看到题求删除点的最少个 可以使得不连通. 瞬间想到最小割 发现对于10分直接跑最小割即可. 不过想 ...
- NOIP欢乐模拟赛 T3 解题报告
3.小澳的葫芦 (calabash.cpp/c/pas) [题目描述] 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,小澳进入了葫芦世界. 葫芦世界 ...
- 字符串模拟赛T3
只看我的做法就够了 #include<iostream> #include<cstdio> #include<string> #include<cstring ...
随机推荐
- Js拾忆
instanceof运算符:他是判断一个构造函数的prototype是否在对象的原型链上查找到 var a = new Array(); console.log(a instanceof Array) ...
- 解决JS中取URL地址中的参数中文乱码
GET请求会将中文编码,如果取出乱码的话,应该进行解码操作, 下面的函数是获取指定参数名的参数值,参数值可是中文.英文. function getQueryString(name) { var reg ...
- [GXOI/GZOI2019]旅行者
就我感觉这道题很神仙吗/kel 仔细想想应该也是一种适用范围挺广的做法. 考虑我们可以通过dijkstra在O(nlogn)求出一个点集到另外一个点集的最短路. 那么我们可以通过一些划分点集的方式使得 ...
- C++ for循环语句
#include "pch.h" #include<iostream> using namespace std; int main() { int i = 1, sum ...
- System.exit()源码分析
最近代码中常用的System.exit(),就来看看源码. 首先位于java.lang.System中,源码如下: /** * Terminates the currently running Jav ...
- jsp页面输出当前时间
<% out.print(new java.text.SimpleDateFormat("yyyy年MM月dd号 hh:mm:ss").format(new Date())) ...
- YOLT:将YOLO用于卫星图像目标检测
之前作者用滑动窗口和HOG来进行船体监测,在开放水域和港湾取得了不错的成绩,但是对于不一致的复杂背景,这个方法的性能会下降.为了解决这个缺点,作者使用YOLO作为物体检测的流水线,这个方法相比于HOG ...
- Webpack学习-工作原理(上)
对于webpack的认识始终停留在对脚手架的使用,不得不说脚手架既方便又好用,修改起来也方便,只需要知道webpack中各个配置项的功能,于是对于我们来说,webpack始终就是一个黑盒子,我们完全不 ...
- 前端页面的适配使用rem换算
前端页面的适配使用rem换算 https://www.cnblogs.com/liangxuru/p/6970629.html 注:本文转载之处:https://www.cnblogs.com/ann ...
- asp.netmvc部署到linux(centos)
介绍将asp.netmvc项目部署到centos系统. 开发工具:win10+vs2017+.NetFramework4.6.1+Vmware14+centos 1.安装Jexus 这里使用独立版(专 ...