codeforces 314E Sereja and Squares】的更多相关文章

discription Sereja painted n points on the plane, point number i (1 ≤ i ≤ n) has coordinates (i, 0). Then Sereja marked each point with a small or large English letter. Sereja don't like letter "x", so he didn't use it to mark points. Sereja thi…
题目链接 http://www.cnblogs.com/TheRoadToTheGold/p/8443668.html \(Description\) 给你一个擦去了部分左括号和全部右括号的括号序列,括号有25种,用除x之外的小写字母a~z表示.求有多少种合法的括号序列.答案对4294967296取模. 合法序列不能相交,如()[],([])是合法序列,而([)]是不合法的. \(Solution\) 很重要的一点是,如果当前可以放右括号,那么方案是唯一的(不能相交). 假设只有一种括号. 用\…
输入n个点,问可以构成多少个正方形.n,xi,yi<=100,000. 刚看题的时候感觉好像以前见过╮(╯▽╰)╭最近越来越觉得以前见过的题偶尔就出现类似的,可是以前不努力啊,没做出来的没认真研究 首先想到的朴素是n^2的算法,10^10显然不行=.=抱着过预判的侥幸心理写了一发,打算过预判之后锁上看别人代码怎么做,结果TLE 13 第二天早上起来看题解,看不懂,看别人的代码才懂的.... 大概就是,避开最坏情况,枚举正方形左下角的点,然后如果当前x的点数量比sqrt(n)要小,就用当前x的上边…
E. Sereja and Squares http://codeforces.com/contest/314/problem/E 题意: 给你一个擦去了部分左括号和全部右括号的括号序列,括号有25种,用除x之外的小写字母a~z表示.在擦去的地方填入一括号,求有多少种合法的括号序列.答案对4294967296取模. 分析: 首先dp的时候如果前面的一个左括号确定了,右边也就确定了(和它一样就行了).左边不确定的时候'?',假设随便填入一个,最后乘以25就行了.所以状态只与左括号的个数有关.所以可…
http://codeforces.com/contest/314/problem/E 题意: 原本有一个合法的括号序列 擦去了所有的右括号和部分左括号 问有多少种填括号的方式使他仍然是合法的括号序列 括号有25种,序列长度<=1e5 传统的做法: 令dp[i][j]表示当前到第i个字符,现在还有j个左括号 若第i+1个字符是左括号,则能转移到dp[i+1][j+1] 若第i+1个字符是问号,则能转移到dp[i+1][j-1]与dp[i+1][j+1] 时间复杂度为O(n^2)   换种思路 再…
题目链接 题意: 给n个点,求能组成的正方形的个数. 四边均平行与坐标轴 大神的分析: 经典题 我们考虑每一种x坐标,显然仅仅有<= sqrt{N}个x坐标出现了> sqrt{N}次,我们称这些为大的,其它为小的. 我们先考虑大的x和其它x之间的答案,先O(sqrt{N})枚举一个大的坐标,然后for其它的每一个点,这样能够依据x坐标的差算出正方形的边长,hash检查一下就能知道这个正方形是否存在. 之后考虑小的x和小的x之间的答案,注意到我们能够对每一个横坐标直接平方for,这样仅仅有(sq…
D. Spongebob and Squares Spongebob is already tired trying to reason his weird actions and calculations, so he simply asked you to find all pairs of n and m, such that there are exactly x distinct squares in the table consisting of n rows and m colum…
题目链接:A. Sereja and Swaps 题意:给定一个序列,能够交换k次,问交换完后的子序列最大值的最大值是多少 思路:暴力枚举每一个区间,然后每一个区间[l,r]之内的值先存在优先队列内,然后找区间外假设有更大的值就替换掉. 求出每一个区间的最大值,最后记录下全部区间的最大值 代码: By lab104_yifan, contest: Codeforces Round #243 (Div. 2), problem: (C) Sereja and Swaps, Accepted, #…
题意读了好久才读懂....不知道怎么翻译好~~请自便~~~ http://codeforces.com/problemset/problem/425/C 看懂之后纠结好久...不会做...仍然是看题解看代码才懂的... dp[i][j]表示A数组前i个数,第一个操作做j次的B数组的最小下标.代码里把第一维给压掉了. 复杂度,n*s/e*logn吧... #include <cstdio> #include <cstring> #include <iostream> #i…
题目链接:http://codeforces.com/problemset/problem/381/B 题目意思:给定一个m个数的序列,需要从中组合出符合楼梯定义 a1 < a2 < ... < ai - 1 < ai > ai + 1 > ... > a|a| - 1 > a|a|. 的最长序列. 思路不复杂,先把输入的序列按从小到大排序,然后依次挑出不相同的数(顺挑).接着倒序再挑出不相同的数(可以与顺挑时的数相同).有一个要注意的地方是,挑出的那些数的…