枚举
hexianhao
这个作者很懒,什么都没留下…
展开
-
hdu 1937(尺取法)
题意:给定一个R*C的矩阵,选择一个面积最小的子矩阵,使得其内部‘.’的个数>=k。解题思路:这道题如果时普通的枚举,会要达到O(N^5)严重超时。这里可以采用高效的枚举方法——尺取法。首先还是用一个sum[i][j]记录(1,1)到(i,j)所围成的矩阵里'.'的个数。接下来是比较关键的,如何采用尺取法。可以两层循环枚举第i列到第j列,最内层循环就是枚举行了,在最内层循环原创 2016-05-04 17:06:16 · 853 阅读 · 0 评论 -
hdu 5204(枚举+找规律)
Rikka with sequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem DescriptionAs we know, Rikka is poor at math. Yuta is worrying about this situ原创 2016-07-12 09:49:53 · 240 阅读 · 0 评论 -
hdu 5203(枚举)
题意:一个长为n的木棍又n个长度为1的小木棍组成,但有一些小木棍是坏的,给出了那些位置上的小木棍是坏的,现在要把长木棍切割成4条,要求其中3条都是不包含坏木棍且长度和最大,而且这3条好木棍可以组成一个三角形,问有多少种切割方式。解题思路:首先可以很快的求出最短的坏木棍,接下来就会出现两种情况,假设砍掉的坏木棍节点分别为L和R;1、L=1或R=n这样剩下的三段是由一整段木棒截来,我们转载 2016-07-12 14:50:50 · 339 阅读 · 0 评论 -
hdu 5207(数论+枚举)
Greatest Greatest Common DivisorTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem DescriptionPick two numbers ai,aj(i≠j) from a sequence to maximiz原创 2016-07-12 15:44:25 · 387 阅读 · 0 评论 -
hdu 5504(枚举+找规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504官方题解:注意先特判0 的情况:如果读入的数据有0 ,那么去掉所有的0 且最后答案和0 取一个max。剩下的正数显然全部乘起来比较优。对于负数的话,如果个数是奇数个我们就去掉绝对值最小的那一个,然后全部乘起来即可。 这题坑很多,要讨论的情况很多。。#include#in原创 2016-07-23 16:52:10 · 363 阅读 · 0 评论 -
hdu 5265(二分+枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5265解题思路:首先对每个数进行去模,这样得到的数就会是[0,p-1]的范围,接下来就是如何组合的问题了。这里要考虑到模的性质了,假设取的两个数分别为i,j,其中i >= j,如果当前数i>(p-1)/2,那么就会出现两种情况:1)j>(p-1)/2,这样算出来的结果必定是i+j原创 2016-07-13 21:42:57 · 321 阅读 · 0 评论 -
hdu 5157(manacher+前缀和+树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5157解题思路:我们可以先用mancher算法对字符串进行处理,把以每个点为中心的回文串半径求出来,然后进行处理。加入对以p为中心的点,从p-r[i]+1~p都是回文串的开头,那么对于每个回文串(开头是j)只要记录结尾从1~j-1的回文串个数,我们可以用dp记录以每个点为结尾的回文串个数,s原创 2016-07-04 19:26:14 · 436 阅读 · 0 评论 -
hdu 5277(最大团问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5277题意:给出一个平面图,n个点,m条边,直线边与直线边之间不相交,求最大团的数目。解题思路:由于平面图,直线边与直线边之间不相交,所以最大团的大小最大为4(即一个三角形内存在一个顶点)对于最大团为4:先枚举两条不相连的边对于最大团为3:先枚举一条边,一个点。以上两种情况会重复原创 2016-07-15 15:12:36 · 514 阅读 · 0 评论 -
hdu 5340(manacher+枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5340解题思路:首先用manacher处理每个字符,接下来就是要枚举了。首先是我想到的dp,dp[i][j]表示第i个字符结尾的第j个回文串是否存在。dp[i+k-1][j] = 1 if(dp[i-k+1][j-1] == 1),k当前表示回文串的半径长度 最后只需要判断dp[原创 2016-07-17 11:03:16 · 292 阅读 · 0 评论 -
hdu 4995(枚举)
Revenge of kNNTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionIn pattern recognition, the k-Nearest Neighbors algorithm (or k-NN for sho原创 2016-06-20 19:47:19 · 241 阅读 · 0 评论 -
hdu 3486(RMQ+高效枚举)
题意:把n分为 均分为m 段 每段n/m个数字 每段可以选一个最大的数 求这些数相加起来>k的最小的m解题思路:这道题本来想用二分+rmq的,但discuss里面说二分是错的,所以只能另想别的办法了。首先是可以肯定的,一定要枚举段数,接下来就是如何减少对内层循环的枚举次数。当分成i段得到的段长L1 与 之前分成 i-1段得到的段长相同 那就只要把前一次的结果再加上这一次 第i段原创 2016-05-05 20:04:58 · 434 阅读 · 0 评论 -
hdu 5139(离线处理)
题目链接:Formula解题思路:这道题由于内存较小,如果使用打表就会出现MLE,所以这里采用的是离线算法,先把所有的输入存起来并排序,最后一同处理。#include#include#include#includeusing namespace std;const int maxn = 10000005;const int mod = 1e9+7;struct No原创 2016-06-30 09:43:21 · 452 阅读 · 1 评论 -
hdu 5200(离线处理)
TreesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem DescriptionToday CodeFamer is going to cut trees.There are N trees standing in a line. T原创 2016-07-11 23:20:57 · 918 阅读 · 0 评论 -
poj 3061(尺取法)
从长为n的全为正数的数组a中,找到个数最少的连续子数列使其和>=mexample:n=10,m=15,a[10]={5 1 3 5 10 7 4 9 2 8},结果为2解题思路:昨天做了一个关于尺取法的问题,今天搜了一个题目来做。首先sum[i]把前i个数的和统计好,接下来就是找sum[i] - sum[j]了,按照一般的思路来讲肯定是要枚举j了,其实不然,因为原创 2016-05-01 13:40:01 · 448 阅读 · 0 评论 -
hdu 5672(尺取法)
题意:有一个10解题思路:利用尺取法求符合条件的临界区间,即找到包含k个不同字母的子串区间。这里的关键是如何找区间内的不同字母个数,其实可以用计数数组,且其有效范围是在两个指针之间的字符串。当指针移动时,计数数组要做相应调整。#include#include#includeusing namespace std;const int maxn = 1e6+5;原创 2016-05-02 09:35:37 · 355 阅读 · 0 评论 -
hdu 5358(尺取法)
解题思路:这题可以利用尺取法,不过需要两个指针。如果采用一个指针,会出现这种情况,由于是取对数,所以中间可能会有很多log2S(i,j)的值相等,如果只有一个指针,会使得一些区间没有被算进去。比如0,0,1,1,0这种情况。正解:1、首先把它展开。发现没啥用。2、然后发现S(i,j)最大就是10的十次方。然后一旦log之后,最大就是34貌似。就枚举所有的log值,算出后面乘原创 2016-05-03 22:03:30 · 329 阅读 · 0 评论 -
hdu 5254(暴力穷举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5254解题思路:暴力枚举即可,没什么好讲的。#include#include#includeusing namespace std;const int maxn = 505;int n,m,g,map[maxn][maxn];bool check(int i,in原创 2016-05-20 12:49:01 · 375 阅读 · 0 评论 -
hdu 5056(尺取法)
Boring countTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionYou are given a string S consisting of lowercase letters, and your task原创 2016-06-25 19:26:20 · 355 阅读 · 0 评论 -
hdu 5057(平方分割)
Argestes and SequenceTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionArgestes has a lot of hobbies and likes solving query problems es转载 2016-06-26 09:26:50 · 328 阅读 · 0 评论 -
hdu 5101(二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5101题意:给定一些集合,选择两个来自不同集合的数,加和大于k,问有多少种选择方案答案=从所有数中选择的两个加和大于k的数的方案数-在同一个集合中选择的两个加和大于k的数的方案数而对于同一个集合中选择的两个加和大于k的方案数是可以直接排序然后利用单调性快速统计出来的。#inclu原创 2016-06-27 19:45:28 · 315 阅读 · 0 评论 -
hdu 5178(尺取法)
pairsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionJohn has n points on the X axis, and their coordinates are (x[i],0),(i=0,1,2,…,原创 2016-07-09 20:04:57 · 1764 阅读 · 0 评论 -
hdu 5179(bfs打表+二分)
beautiful numberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionLet A=∑ni=1ai∗10n−i(1≤ai≤9)(n is the number of A's digits). We cal原创 2016-07-09 22:42:49 · 232 阅读 · 0 评论 -
hdu 5102(队列+节点扩展)
The K-th DistanceTime Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem DescriptionGiven a tree, which has n node in total. Define the distance between原创 2016-06-28 19:40:39 · 297 阅读 · 0 评论 -
nyoj 133 子序列(尺取法+离散化)
子序列时间限制:3000 ms | 内存限制:65535 KB难度:5描述给定一个序列,请你求出该序列的一个连续的子序列,使原串中出现的所有元素皆在该子序列中出现过至少1次。如2 8 8 8 1 1,所求子串就是2 8 8 8 1。输入第一行输入一个整数T(0每组测试数据的第一行是一个整数N(1随后的一行有N个正整数,表示给定原创 2016-08-23 16:10:02 · 805 阅读 · 0 评论