摘要: 题意:有n支队伍(n是2的整数幂,2using namespace std;const int maxn = 1025;char G[maxn][maxn];int vec[5][maxn];int main(){ // freopen("in.txt","r",stdin); int n... 阅读全文
posted @ 2015-08-01 21:28 陈瑞宇 阅读(655) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个长度为n序列,如果这个任意连续子序列的中都有至少出现一次的元素,那么就称这个序列是不无聊的,判断这个序列是不是无聊的。先预处理出每个元素之前和之后相同元素出现的位置,就可以在O(1)的时间判断出一个元素在一个区间内是否唯一。每次从大的序列中找一个唯一元素,包含这个元素的就不用判断了,那... 阅读全文
posted @ 2015-08-01 19:00 陈瑞宇 阅读(1477) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个按发生时间的序列,表示与非门电路的输入,一开始全部输入是x,现在要改成尽量少的x,实现相同的功能。题解:电路功能只有4中0,1,x,非x。那么如果一开始x改变了,输出结果不变,那么说明是常量电路。否则一定可以只用一个x来实现相同的功能,因为从全为0到全为1的过程中一定会有某个时刻,改变... 阅读全文
posted @ 2015-08-01 17:27 陈瑞宇 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 摘要:数形结合,斜率优化,单调队列。题意:求一个长度为n的01串的子串,子串长度至少为L,平均值应该尽量大,多个满足条件取长度最短,还有多个的话,取起点最靠左。求出前缀和S[i],令点Pi表示(i,S[i]),那么这个问题就转化成了求斜率最大的两点。画图分析可知,如果有上凸点,那么上凸点,一定不会是... 阅读全文
posted @ 2015-08-01 15:28 陈瑞宇 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 给一个长度为n的序列,要求删除一个连续子序列,使剩下的序列有一个长度最大的连续递增子序列。最简单的想法是枚举起点j和终点i,然后数一数,分别向前或向后能延伸的最长长度,记为g(i)和f(i)。可以先预处理出每一个点能往前和往后延伸的长度(g(i)和f(i))。然后枚举终点i,快速找一个g(j)最大的... 阅读全文
posted @ 2015-08-01 13:32 陈瑞宇 阅读(890) 评论(0) 推荐(0) 编辑
摘要: 任意线可以贪心移动到两点上。直接枚举O(n^3),会TLE。所以采取扫描法,选基准点,然后根据极角或者两两做叉积比较进行排排序,然后扫一遍就好了。旋转的时候在O(1)时间推出下一种情况,总复杂度为O(n^2logN)就可以过了。另外,本题有个很巧妙的技巧,就是一点等效与相反坐标的相反颜色的点。第一次... 阅读全文
posted @ 2015-07-31 23:46 陈瑞宇 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 摘要:贪心,问题分解。因为行列无关,所以这个二维问题可以分解成两个一维问题。优先队列实现:类似区间点覆盖的问题,先按照左端点排序,相同然后在按右端点排序(灵活性小的优先选)。最优的选法,当然是要使选的这个点经过的区间越少越好,那么就选最左边的点,因为选右边可能多经过区间,一定不比选最左边的更优。选完... 阅读全文
posted @ 2015-07-31 17:29 陈瑞宇 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 摘要:中途相遇。对比map,快排+二分查找,Hash效率。n是4000的级别,直接O(n^4)肯定超,所以中途相遇法,O(n^2)的时间枚举其中两个的和,O(n^2)的时间枚举其他两个的和的相反数,然后O(logN)的时间查询是否存在。首先试了下map,果断TLE//TLE#include#incl... 阅读全文
posted @ 2015-07-31 14:07 陈瑞宇 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 用(x,s)表示一个状态,x表示机器人的位置,s表示其他位置有没有物体。用个fa数组和act数组记录和打印路径,转移的时候判断一下是不是机器人在动。#includeusing namespace std;const int maxn = 16;const int maxe = 32;const in... 阅读全文
posted @ 2015-07-31 11:51 陈瑞宇 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 暴力,和八皇后很像,用表示i+j和i-j标记主对角线,但是还是要加一些的剪枝的。1.最裸的暴搜6.420s,差点超时2.之前位置放过的就没必要在放了,每次从上一次放的位置开始放0.400s#include#includeconst int maxn = 11;char G[maxn][maxn];i... 阅读全文
posted @ 2015-07-31 10:45 陈瑞宇 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 坑坑的题目,我只想说:题意不清楚也就算了。。包含不合法数据也就算了。。篮球还有平局也算是很diao了。。。吐槽结束。题解:不难发现当之前比分为2,当前比分为1,有两种情况,得分低的一组得3分反超,或者得1分。因为只关心最后的结果,每轮都是独立的,所以答案是加一。。。之前比分是1,当前比分是2类似。然... 阅读全文
posted @ 2015-07-30 21:43 陈瑞宇 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题意:询问单源最短路径,每条边有一个颜色,要求路径上相邻边的颜色不能相同,无重边且边权为正。题解:因为路径的合法性和边的颜色有关,所以在做spfa的时候,把边丢到队列中去,松弛的时候注意判断一下颜色,d数组表示到这条边的出点v的距离。期望复杂度是O(km),k是边入队次数,m是边数。最后根据边来松弛... 阅读全文
posted @ 2015-07-29 23:03 陈瑞宇 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个HxW的矩阵,每个点是一个指令,根据指令进行一系列操作。题解:模拟#include#includeusing namespace std;const int maxn = 101;char G[maxn][maxn];int dx[] = {-1,0,1, 0};int dy[] = ... 阅读全文
posted @ 2015-07-29 19:37 陈瑞宇 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 关于sg函数这篇blog讲得很详细http://blog.csdn.net/logic_nut/article/details/4711489。sg函数的价值在于把复杂的游戏拆分成简单的游戏,然后通过计算出这些简单游戏的sg值得到复杂游戏的sg值。求sg值的基本方法:是根据状态转移,有些问题可以找到... 阅读全文
posted @ 2015-07-29 19:19 陈瑞宇 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 题解:状态压缩之后,暴力dfs,如果有一个选择,能让对手必败,那么就是必胜态,能转移到的状态都是对手的必胜态,或者无法转移,就是必败态。总算是过了,TLE是因为状态没判重。#include#include#include#include#include#include#include#include... 阅读全文
posted @ 2015-07-27 23:05 陈瑞宇 阅读(409) 评论(0) 推荐(0) 编辑