卡时间
文章平均质量分 58
AC_0_summer
这个作者很懒,什么都没留下…
展开
-
HDU 1337 The Drunk Jailer--(模拟题找规律)
题意:有n个监狱,共n轮,第 i 轮警察会去编号为 i 的倍数的监狱,如果是锁的就开锁,如果是开的就锁上,求n轮过后有多少犯人会逃出来分析:这题实际上是个模拟题,因为数据很小我直接用两重循环模拟的,如果数据很大的话,就不能直接模拟了,模拟题卡时间多半是找规律。 这题的规律是:如果一个监狱被查看了偶数次的话相当于则什么都没发生,还是锁的,也就是说找没有锁上的监狱只要n以内找原创 2015-06-17 11:22:53 · 990 阅读 · 0 评论 -
HDU 4312 最小切比雪夫距离-转化成曼哈顿距离再分治
题意:二维空间,n个点,求以某点为起点到各点的最小切比雪夫距离分析:上一道题之前已经用“分治“思想在O(n)的时间内求出了n个点,以某点为起点到各点的最小曼哈顿距离,那么我们根据二维空间切比雪夫距离和曼哈顿距离的关系,可以把切比雪夫距离转化成曼哈顿距离,再直接用之前的方法即可。二维空间:曼哈顿距离 :d=|x1-x2|+|y1-y2|,到某点的曼哈顿距离为r的点组成一个边长为√2*原创 2015-08-03 18:10:10 · 2594 阅读 · 0 评论 -
!HDU 4334 集合各出一数和为0是否存在-思维、卡时间-(指针的妙用)
题意:有5个集合,集合的大小是n,每一个集合出一个数,问能不能找到五个数的和为0。数据范围:T分析:暴力枚举是n^5*T,超时,那么就要用一些技巧了。这里有一个指针的妙用:如何在O(n)的复杂度找A,B,使得A+B==C(A,B分别属于一个数列a,b)。做法是先把a,b分别按升序排序,然后一个指针i指向a的首,指针j指向b的尾,判定指针指向的数的和是否==C,若等于则结束查找,若小于,原创 2015-08-01 23:31:04 · 845 阅读 · 0 评论 -
!HDU 4311 最小曼哈顿距离-思维&卡时间-(横纵坐标分开算,排序)
题意:有n个点,求以这n个点中的某一点为起点,到各点的曼哈顿距离和最小是多少分析:暴力枚举又要超时,这种题一般都是考思维了,多半都是用技巧找到一个高效的方法。个人觉得这题跟上一篇文章的题是一个类型。这题也是用“分治”,虽说题目要求的是曼哈顿距离,但是我们为什么真的就要一步到位的求呢,可以横纵坐标分开求,先x排序,然后遍历一遍,求出横坐标的距离,然后y排序,遍历一遍求出坐标的距离加在刚才原创 2015-08-02 00:14:03 · 3780 阅读 · 0 评论 -
!HDU 5371 最长双回文串(多校7)-卡时间-(manacher+排序+set+lower_bound())
题意:给定一个有n个数字的序列,找出一个连续的子序列满足这样的条件:平均分成三段,第一段与第三段一样,第二段是第一段的倒序。求这样的子序列的最大长度。数据范围:n~100000分析:上面的条件抽象出来其实就是双回文串,所以题目就是求一个序列的最长双回文串。主体做法是:1.先用manacher算法O(n)求出每个元素的最大回文半径;2.把每个元素看成一个圆心,那么两个点能构成双回原创 2015-08-12 01:42:19 · 1031 阅读 · 0 评论 -
!HDU 4282 A very hard mathematic problem-卡时间-(二分枚举)
题意:x^z+y^z+xyz=k,给定k求出满足该式子的x,y有多少种。(x1,k分析:一看就是卡时间的题,这种题一般方法是枚举,但是要先分析一下数据的关系,把枚举的变量的数据范围缩小到可接受的程度;另外二分在这种题里是常用的方法。本题要复杂一点,有三个变量都要枚举。首先z作为幂,而k然后是做法:因为有三个变量,如果用上面估算得到的范围来枚举,三重循环还是会超时,这就要求我们用效率原创 2015-07-27 21:38:54 · 947 阅读 · 0 评论 -
!POJ 2689 Prime Distance-卡时间-(素数筛法)
题意:给定两个数l,r求这之间最近和最远的两个素数。数据范围是整数的上限。r-l分析:总思路是把l和r间的素数全部找出来,然后遍历一遍求最小距离和最大距离。用一个函数预处理数据范围内的所有素数是不现实的,一来数组不可r能开那么大二来会超时。想想素数筛的思想:用sqrt(n)以内的素数筛掉n以内的所有合数,剩下n以内的素数。这里既然预处理不可能,我们一样可以用sqrt(n)以内的素数来筛,只是这原创 2015-07-05 10:34:16 · 912 阅读 · 0 评论 -
HDU 1692 Destroy the Well of Life-卡时间-(枚举+剪枝)
题意:有n口井,编号为1到n,打破第i口井需要p[i]的能量,但是只要井被打破里面的水会流到下一口井,只要一口井的井水w[i]多余一个上限l[i]会自动打破,求打破第n口井需要的最少的能量分析:hdu 把它归为dp,想了一会发现找不到最优子结构,然后看题解——根本不是dp,只是一个剪枝的题。或许有dp的解法,如果哪位大知道还请指教。解题思路一旦局限在一个框框内很危险啊代码:#inclu原创 2015-06-25 16:14:37 · 970 阅读 · 0 评论 -
CodeForces 527A--卡时间
题意:把 a*b 的一张矩形的纸不断地折,直到最后得到都是正方形。求得到的正方形的个数。分析:如果直接模拟的话会超时。所以画图找规律。代码:#include#includeusing namespace std;long long t,a,b,tmp;int main(){ while(cin>>a>>b){ t=0; if(a<b) swap(a,b); wh原创 2015-05-31 20:24:30 · 975 阅读 · 0 评论 -
HDU 4143--卡时间
题意:给定n,求能找到y使 y^2 = n + x^2 成立的最小的x分析:把n拆成两个数的乘积 n = a*b,则 y = (b+a)/2 ,x = (b-a)/2。暴力枚举a,b找到满足(b+a)%2==0,(b-a)%2==0,且(b-a)>0的最小值即可。不过会超时,所以适当处理一下:由于x必须大于零,所以枚举的b必须大于a,而且要满足 | b-a | 最小(因为求最小值),所以从s原创 2015-05-31 19:36:33 · 663 阅读 · 0 评论 -
!hdu 4091--贪心、枚举--(思维)
题意:有一个容量为n的箱子,有两种珠宝,占的体积和价值分别是s1,v1,s2,v2,求能装下的最大的价值总量。分析:刚开始以为是背包问题,但其实没那么简单;后来分情况讨论还是不行;后来又暴力枚举,当然是超时了。正确做法是有一部分是用背包的贪心,另一部分用枚举!现在就是看哪一部分用贪心。看别人的题解是:L = LCM(s1,s2),可是知道大于L的部分就用价值比高的,所以n%L的部分枚举,其原创 2015-05-28 23:01:09 · 1001 阅读 · 1 评论 -
HDU 4343 多查询求区间内的最大不相交区间个数-思维&贪心-卡时间&二分&剪枝
题意:给你一些区间,现在有m个查询,求出每个查询的区间内的最大的不相交区间个数分析:几天前那道说谎问题时用dp的摞箱子模型求的最大的不相交区间个数,但是这题不能用这个方法,因为这题是动态的查询,不可能每个查询dp一次,超时。这题用贪心策略。求区间[l~r]里的最大不相交区间,贪心策略就应该先选该区间内右端点最小的,这样给以后待选的区间留下更大的空间,所以我们的做法就是先按照区间的右端点原创 2015-08-04 20:31:52 · 1500 阅读 · 2 评论