04 2013 档案
摘要:此题很明显的AC自动机。。。先介绍一个神奇的性质:如果我们将AC自动机的Fail指针全部反向,将得到一棵由Fail指针组成的Fail Tree。对于模式串i来说,它的最后一个字母在Fail Tree中的节点的后代的数量与该串在其它串中出现的次数相等。然后我们得到一个离线算法:将询问双关键字排序,在FailTree上做一次DFS,得到DFS序。za再用树状数组维护前缀和。具体做法:扫描原串,遇到小写字母,将相应的DFS序的位置+1,遇到P询问,B将字母弹出。由于这个题还有许多细节,详细请看代码:#include<iostream>#include<algorithm>#i
阅读全文
摘要:这是一道最经典的基于连通性的状态压缩dp。f[i][j][s]表示轮廓线到i,j格的时候,轮廓线上状态为s的方案数。用一个四进制数表示s:0表示该位置没有插头,1表示该位置的插头必须拐弯,2表示这个插头不必须被延长,3表示该插头必须被延长。具体转移请见程序:#include<iostream>#include<cstring>#include<cstdio>using namespace std;typedef long long LLint;const LLint MAXN=110;const LLint HASHSIZE=3000009;const LL
阅读全文
摘要:NOI 2013 全国青少年信息学奥林匹克竞赛重庆代表队选拔赛试题一览题目新Nim游戏棋盘游戏二进制a+b图的逆变换新数独代号nimchessaplusbinversesudoku输入文件nim.inchess.inaplusb.ininverse.insudoku.in输出文件nim.outchess.outaplusb.outinverse.outsudoku.out测试点数目102525208单测试点分值20881025满分分值200200200200200时限1秒2秒2秒2秒1秒2013年3月?日5小时完成注意:可以使用64位整数和STL,但这不一定是解题必须的新Nim游戏传统的Nim
阅读全文
摘要:新数独下面是一个没有数字,只有大小关系(没错!那些尖角都是“大于”符号!)的数独:除了大小关系外(注意相邻格子不能相同),还需要满足通常的数独规则:l 每个格子都是1~9 的数字l 每行都是1~9的排列l 每列都是1~9的排列l 每个3*3的子矩阵(上图中用粗线隔开,一共有3*3个这样的子矩阵)都是1~9的排列为了美观,每个3*3子矩阵的所有12对相邻格子的大小关系都将给出。【输入格式】输入一共15行,包含一个新数独的实例。第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v)。【输出格式】输出包含9行,每行9个1~9的数字,以单个空格隔开。输入保证解惟一。【输
阅读全文
摘要:传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同)。两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同时从超过一堆火柴中拿。拿走最后一根火柴的游戏者胜利。本题的游戏稍微有些不同:在第一个回合中,第一个游戏者可以直接拿走若干个整堆的火柴。可以一堆都不拿,但不可以全部拿走。第二回合也一样,第二个游戏者也有这样一次机会。从第三个回合(又轮到第一个游戏者)开始,规则和Nim游戏一样。如果你先拿,怎样才能保证获胜?如果可以获胜的话,还要让第一回合拿的火柴总数尽量小。【输入格式】第一行为整数k。即火柴堆数。第二行包含k个不
阅读全文

浙公网安备 33010602011771号