随笔分类 -  搜索

摘要:题目描述 LYK喜欢字符串,它认为一个长度为n的字符串一定会有n*(n+1)/2个子串,但是这些子串是不一定全部都不同的,也就是说,不相同的子串可能没有那么多个。LYK认为,两个字符串不同当且仅当它们的长度不同或者某一位上的字符不同。LYK想知道,在字符集大小为k的情况下,有多少种长度为n的字符串, 阅读全文
posted @ 2018-03-25 23:24 zbtrs 阅读(272) 评论(0) 推荐(0) 编辑
摘要:D. Sleepy Game time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Petya and Vasya arranged 阅读全文
posted @ 2018-02-26 16:31 zbtrs 阅读(232) 评论(0) 推荐(0) 编辑
摘要:Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 12090 Accepted: 4547 Special Judge Description Word puzzles are usually simple 阅读全文
posted @ 2017-12-17 23:41 zbtrs 阅读(617) 评论(0) 推荐(0) 编辑
摘要:C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output After observing the re 阅读全文
posted @ 2017-12-17 11:33 zbtrs 阅读(216) 评论(0) 推荐(0) 编辑
摘要:Wild Words Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5567 Accepted: 1475 Description A word is a string of lowercases. A word pattern 阅读全文
posted @ 2017-12-17 09:55 zbtrs 阅读(304) 评论(0) 推荐(0) 编辑
摘要:分析:非常神的一道题.迭代加深搜索+rand可以骗得20分.状压n的话只有24分,必须对问题进行一个转化. 在爆搜的过程中,可以利用差分来快速地对一个区间进行修改,把一般的差分改成异或型的差分: b[i] = a[i] ^ a[i + 1],每次翻转操作实际上就是在b[l-1]取反,b[r]上取反. 阅读全文
posted @ 2017-11-06 22:33 zbtrs 阅读(384) 评论(0) 推荐(1) 编辑
该文被密码保护。
posted @ 2017-11-06 10:32 zbtrs 阅读(12) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2017-11-04 17:05 zbtrs 阅读(2) 评论(0) 推荐(0) 编辑
摘要:分析:因为每一组编号都是连续的嘛,所以能分成一组的尽量分,每次加边后dfs判断一下1和n是否连通.有向图的判连通没有什么很快的方法,特别注意,并查集是错的!这个算法可以得到60分. 事实上每一次都不需要从点1开始dfs,因为之前很多点都遍历到了,再从1开始会重复.如果新加的一条边的起点没有被访问过, 阅读全文
posted @ 2017-11-02 14:14 zbtrs 阅读(290) 评论(0) 推荐(0) 编辑
摘要:分析:好神的一道题啊.对每棵树建个图跑一下floyd可以有40分,想要打出正解就得对树有比较深的认识了. 每次新生成一棵树都是由两棵树i,j拼成的,答案为原来两棵树的答案和+i中每个点到j中每个点的距离和.显然这个距离和不能直接算,涉及到求整体的值,通常考虑每条边的贡献.设i,j两棵树的连接点为p, 阅读全文
posted @ 2017-11-01 09:58 zbtrs 阅读(178) 评论(0) 推荐(0) 编辑
摘要:【问题描述】你是一名优秀的水管工。 一天你遇到了一个棘手的难题。 你需要在一个长方体状的房间内连接一条贯穿房间内部的水管。房间的长为 X,宽为 Y,高为 Z, 整个房间可以看成是 X×Y×Z个小立方体空间组成的。 如果位房间建立直角坐标系,则房间内每个小立方体空间都可以用一个三维坐标(x,y,z)表 阅读全文
posted @ 2017-10-26 21:19 zbtrs 阅读(784) 评论(0) 推荐(0) 编辑
摘要:【问题背景】zhx 和他的妹子(们) 做游戏。【问题描述】考虑 N 个人玩一个游戏,任意两个人之间进行一场游戏(共 N*(N-1)/2 场),且每场一定能分出胜负。现在, 你需要在其中找到三个人构成“剪刀石头步”局面: 三个人 A, B, C满足 A 战胜 B, B 战胜 C, C 战胜 A。 【输 阅读全文
posted @ 2017-10-26 16:04 zbtrs 阅读(279) 评论(0) 推荐(0) 编辑
摘要:分析:很显然这是一道搜索题,可能是由于我的搜索打的太不美观了,这道题又WA又T......如果对每一个询问都做一次bfs是肯定会T的,注意到前70%的数据范围,N的值都相等,我们可以把给定N的所有情况给算出来,然后O(1)查询.从终点状态往起点状态BFS就可以了. 当最终状态很少,起始状态很多的时候 阅读全文
posted @ 2017-10-23 13:47 zbtrs 阅读(172) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个 n ∗ m 个矩阵,矩阵中每个数都是 [1, 12] 内的整数。你可以执行下列两个操作任意多次: • 指定一行,将该行所有数字 +1. • 指定一列,将该列所有数字 +1. 如果执行完上述操作之后,矩阵中某个数变成了 3, 6, 9, 12 其中的某一个,我们认为这个数是稳的。 阅读全文
posted @ 2017-10-22 15:09 zbtrs 阅读(631) 评论(1) 推荐(0) 编辑
摘要:【问题描述】 给出m个数a[1],a[2],…,a[m] 求1~n中有多少数不是a[1],a[2],…,a[m]的倍数。 【输入】 输入文件名为count.in。 第一行,包含两个整数:n,m 第二行,包含m个数,表示a[1],a[2],…,a[m] 【输出】 输出文件名为count.out。 输出 阅读全文
posted @ 2017-10-20 19:06 zbtrs 阅读(252) 评论(0) 推荐(0) 编辑
摘要:分析:用裸暴力可以得60分,每次dfs,看第i个盒子到底有没有钻石就行了.其实这很像0/1背包问题,只是多了一个m的限制.这要怎么办呢?因为概率是可以加减的,所以可以先不考虑m的限制,求出概率,然后dfs一遍把money < m的概率给减掉就好了. 正解是meet in the middle,dp+ 阅读全文
posted @ 2017-10-20 14:33 zbtrs 阅读(185) 评论(0) 推荐(0) 编辑
摘要:分析:一道比较难的爆搜题.首先要把9个块的信息存下来,记录每个块上下左右位置的颜色,然后记录每一排每一列能否操作,之后就是bfs了。在bfs的时候用一个数记录状态,第i位表示原来的第i个块现在在哪个位置,我们可以通过这个状态来解码得到信息,也可以来判重,只是数组开不下,需要用一个map。然后就是如何 阅读全文
posted @ 2017-10-14 22:48 zbtrs 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题面有误!10,11,12操作类别为A,13,14,15类别为B,16,17,18类别为C. 分析:一道大暴力,每次记录一下走了多少步,上一步操作类别是啥就可以了.最后只需要写6种操作,每一次操作进行4次就还原了,所以不用memcpy再来转. 阅读全文
posted @ 2017-10-11 18:08 zbtrs 阅读(249) 评论(0) 推荐(0) 编辑
摘要:分析:之前的一道模拟赛题是dp+dfs,这道题是dp+bfs. 我们设f[stu][i][j]为当前状态为stu,走到(i,j)的答案,考虑怎么设计stu,每个人的状态有3种:要么在原地,要么被背着,要么已经到了终点,那么用一个3进制数保存就可以了. 下面考虑怎么转移,直接递推肯定是不对的,dfs也 阅读全文
posted @ 2017-09-27 15:52 zbtrs 阅读(274) 评论(0) 推荐(0) 编辑
摘要:分析:标准的棋盘dp问题. 如果没有技能,那么就很好做了,相当于传纸条的做法.有了技能的限制,我们就要加上一维表示用了多少次技能,这个时候转移就要用到dfs了,而且不能用填表法,要用刷表法,从当前位置用技能的状态来更新到达的位置的状态,dp状态转移方程也要写成刷表法的形式. 如果很难从以前的状态推得 阅读全文
posted @ 2017-09-26 15:20 zbtrs 阅读(232) 评论(0) 推荐(0) 编辑