随笔分类 - 基本算法—枚举
摘要:题目链接题意:有n座塔,每座塔的攻击范围为[l,r],攻击力为d,有k个怪兽从这些塔前面经过,第i只怪兽初始的生命力为hp,出现的位置为x,终点为第n个格子。问最后有多少只怪兽还活着。分析:这个题刚开始是想用线段树,但是这个题会超时,线段树是O(nlogn)的复杂度,应该是卡的输入输出,所以看别人的...
阅读全文
摘要:题目链接题意:输入提供9个钟表的位置(钟表的位置只能是0点、3点、6点、9点,分别用0、1、2、3)表示。而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一、二、四、五个钟调正,如原来是0点,那么调正后为3点。问经过那些步骤可以导致9个钟的位置都在0点。分析:这个本来...
阅读全文
摘要:题目链接题意:给平均成绩和科目数,求可能的最大学分和最小学分。分析:枚举一下,可以达到复杂度可以达到10^4,我下面的代码是10^5,可以把最后一个循环撤掉。刚开始以为枚举档次的话是5^10,但是这个又不要求顺序,所以只是枚举个数就行了。。 1 #include 2 #include 3 #in...
阅读全文
摘要:题目链接虽然是一道暴力的题目,但是思路不好想。刚开始还超时,剪枝了以后1200ms,不知道为什么还是这么慢。题意:给你n个点,每个点有一种颜色ci,给你至多k次删除操作,每次删除一个点,问最多k次操作后连在一起的点颜色相同的最大长度。思路:由于ci 最大为10^9, 所以需要首先离散化。然后暴力。 ...
阅读全文
摘要:题目链接看到分类里是dp,结果想了半天,也没想出来,搜了一下题解,全是暴力!不过剪枝很重要,下面我的代码 266ms。题意:在一个矩阵方格里面,青蛙在里面跳,但是青蛙每一步都是等长的跳,从一个边界外,跳到了另一边的边界外,每跳一次对那个点进行标记。现在给你很多青蛙跳过后的所标记的所有点,那请你从这些...
阅读全文
摘要:题目题意:求任意连续序列的最大值,这个连续序列可以和其他的 值交换k次,求最大值思路:暴力枚举所有的连续序列。没做对是因为 首先没有认真读题,没看清交换,然后,以为是dp或者贪心用了一下贪心,各种bug不对。这次用了一下优先队列,以前用的不多,看这个博客又学了一下AC代码: 1 #include ...
阅读全文
摘要:题目:http://poj.org/problem?id=1035还是暴搜 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 ...
阅读全文
摘要:题目:http://poj.org/problem?id=3080水题,暴搜 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include1...
阅读全文
摘要://题目:http://poj.org/problem?id=2965//题意:电冰箱有16个把手,每个把手两种状态(开‘-’或关‘+’),只有在所有把手都打开时,门才开,输入数据是个4*4的矩阵,因此考虑用位表示。可以改变任意一个把手的位置,但同时改变其所在的行和列。求最小步骤.//耗时 800MS1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 int id,vis[1q;28 int i;29 struct node cur,next;30 next.step=0; next....
阅读全文
摘要:题目:http://poj.org/problem?id=1753因为粗心错了好多次……,尤其是把1#include#includeusing namespace std;int id,vis[1q; int i; struct node pos,cur; if(id==0||id==65535) return 0; memset(vis,0,sizeof(vis)); pos.step=0; pos.x=id; q.push(pos); vis[id]=1; while(!q.empty()) { cur=q.f...
阅读全文