ACM
文章平均质量分 69
ACM的成长之路
WorstCoder
能够做出困难的算法题是最快乐的事情!
展开
-
poj 2566 Bound Found
题意:找到任意一个子区间使其和的绝对值最接近t分析:1.这里一个不太好的地方就是没有给出询问t的数目,实测t不算很大,一个一个算便可以了 2.前缀和的思想,这道题好在需要对前缀和排序,使其在遍历时具有单调性,便可以用单调队列的思想做这个题 3.这个题的细节地方比较多,需要注意什么时候要取小于等于或小于.....总结:好久都没有做出来这个题,偷看别人排序的原创 2015-03-04 14:42:57 · 2070 阅读 · 0 评论 -
poj 2674 Linear world
题意:一条线上N只蚂蚁,每只蚂蚁速度固定,方向和坐标不同,碰头后掉头,求最后掉下去那只蚂蚁的名字。题解:1.一种计算机编程的普遍思想,就是变化不一定需要体现出来、 2.这道题就是首先蚂蚁碰撞调头,但是在编程中不一定需要体现出来,碰撞调头可以等效成擦肩而过 3.还有就是蚂蚁的相对顺序总是固定的,我用的方法就是假设这条线无限长,蚂蚁可以无限制的走下去,然后找到那个最原创 2015-03-05 12:45:41 · 1658 阅读 · 3 评论 -
hdu 5185 Equation && BestCoder Round #32
题目: x[1]+x[2]+x[3]+…+x[n]=n, 这里 0 x[i] 对于一个给定的n,Gorwin想要知道有多少xi的组合满足上述等式。由于结果比较大,输出答案对m取余的结果就行。限制: T组数据:1 1 1 思路:1.观察发现数字种类只可能有srqt(n)种 2.发现第一个数只能从0或者1开始,想试试用dp来做这个题。 3原创 2015-03-10 20:21:23 · 974 阅读 · 0 评论 -
hdu 5188 zhx and contest && BestCoder Round #33
题解 & 分析:1.思考这个题目的时候思维很混乱 2.先是猜的搜索加优化没敢试,后来想按01背包模型来做 3.再来需要考虑按什么顺序访问这n个题目 4.证明可知,l - r值越小越先访问不会更浪费时间总结:1.枚举,贪心,动态规划解题方式应该被优先考虑 2.有序能更好的化简题目 3.解题需要明确目标#include#inc原创 2015-03-20 20:05:48 · 1032 阅读 · 0 评论 -
hdu 4908 BestCoder Sequence && BestCoder Round #3 1002
最近总在做一些bestCoder的题目,很多题可以通过自己的思考解决出来,不需要太依赖题解文献啥的了,比较开心的题意:1-n的排列,求给定中位数的子串个数题解&思路:1.感觉肯定不是暴力,时间过不去,感觉可能是记录前缀和的这种思想,就是用点值来表示一段数据; 2.从给定中位数的物理位置往后遍历,将大于中位数的数的个数与小于中位数的数的个数之差hash到一个数组中; 3.原创 2015-02-25 22:05:17 · 679 阅读 · 0 评论 -
hdu 4910 String && BestCoder Round #3
题意:找到一个字符串中所有的只包含偶数个相同字符(小写字母)的子串的个数(?可以代表任何字母)分析&题解:1.通过前缀和的思想来找到所有情况。 2.因为只需要判断奇偶,所以只需要记录同样奇偶性的前缀,可以用状态压缩来表示,开一个(1 的数组 3.对于没有?的情况,比如具有同样的前缀个数为n,那么以此前缀开始的满足条件的子串数为C(n,2); 4.在有?的情况下原创 2015-03-02 20:11:31 · 709 阅读 · 0 评论 -
hdu 4932 Miaomiao's Geometry && BestCoder Round #4
总结:1.二分,但是没有想到可能有线段同时覆盖两个节点 2.题目的样例对这种情况其实还是有提示的,以后做题注意用自己的算法覆盖好每个样例 3.想问题尽量全面,对满足端点重合情况的枚举 4.最主要的还是因为对题目的轻视导致做错,以后要尽量重视自己做的每一件事情#include#include#include#includeusing nam原创 2015-03-02 21:57:21 · 642 阅读 · 0 评论 -
poj 3977 Subset
题意:在一个集合中找到一个非空子集使得这个子集元素和的绝对值尽量小,和绝对值相同时保证元素个数尽量小分析:1.二分枚举的思想,先分成两个集合; 2.枚举其中一个集合中所有的子集并且存到数组中,并排序; 3.枚举另一个集合中所有的子集并且与第一个集合中的合适子集相加(可以通过二分查找在数组中找到最合适的元素) 4.这个题特别坑的地方是不能用abs库函数,只能手写,竟然写宏定原创 2015-02-12 00:09:30 · 1086 阅读 · 0 评论 -
hdu 5147 Sequence II BestCoder Round #23 1002
头疼,无心学习,做一题舒爽一下身心题意:给1-n n个数的随机排列,求满足(1≤abcd≤n2. AaAb 3. AcAd)数列的个数分析:1.发现好似树状数组的题,并且有序对Aa Ab 和 有序对Ac Ad貌似可以分开来思考 2.对于满足条件的有序对Aa,Ab的个数,Aa只需要保存Aa的个数,那也就是1,可以直接用树状数组来求 3.那对于有序对Ac和Ad呢,不仅仅要求出A原创 2015-02-12 23:26:14 · 1169 阅读 · 0 评论 -
hdu 4884 TIANKENG’s rice shop && BestCoder Round #2 1002
题意:有 N 种饭,每种饭做一轮耗时间为 T ,每一轮可以做 K 碗饭,下面是 M 个人;顺序已经排好了,当然是先到先得了;题解:就是模拟吧.不过有一些需要注意的地方1.如果给当前这个人做饭,锅还剩余一些容量,可以顺便给后面已经排队的人做一些(不一定非限于队头的那个人)2.最后输出的时候需要按照来的时间顺序输出3.貌似可能有超过23.59的情况,需要mod总结:这个题还是花费了原创 2015-02-25 10:14:57 · 754 阅读 · 0 评论 -
hdu 2419 Boring Game
捣鼓了一天这个题,感觉太浪费时间了,以后绝对要规划好做题时间,并且一定要先想好思路再写!宁可写的慢也不能这样写错了!!!题意:给定n个点m条边的无向图,每个点有点权。有q个操作,每个操作有三种:1、查询和某个点连通的大于等于k的最小点权 2、将某点的点权更新为k 3、删除某条边。(直接粘的ZeroClock神的翻译)思路:1.因为有联通分量自然想到并查集,对于删边操原创 2015-02-06 00:19:11 · 882 阅读 · 0 评论 -
zoj 3195 Design the city
题意:找无向树上三个点间的距离题解:在线lca,开始是想分情况讨论,后来发现可以通过求3对两点间距离除以2来求得答案,感觉是一种尝试将问题规模变小的思想吧。总结:这个题因为小错改了好久好久才改出来,以后规定自己纯改错时间不得超过20分钟!下面贴出两种lca转rmq的实现方法#include#include#include#includeusing namespace s原创 2015-02-08 23:32:37 · 712 阅读 · 0 评论 -
poj 2549 Sumsets
题意:寻找集合中集合能凑成a + b + c = d的最大的d值(每个值只能取一次)分析:二分的思想,枚举a + b的值,并且保存在数组中,而后排序;再枚举d - c的值并且用二分查找找出相同的a + b值,并且做判断,是否含有重复的值总结:题目还可以,不过又因为改错浪费了太多时间,第二天向同学请教时一下子便看到了错误,接受教训,规定好做题时间,争取将效率提到最高用两种方法实现原创 2015-02-10 22:18:34 · 792 阅读 · 0 评论 -
HDU 4864 Task
大致题意:有n台机器和m个任务,都有两个参数工作时间time和难度level。每个机器一天只能完成一个任务,一个任务只能被一台机器完成,每个任务完成后的利润是500*time+2*level。问在一天能完成尽量多的任务下获得的利润是多少。思路:1.感觉像是贪心; 2.可以发现尽量完成时间需求更多的任务,而后是难度需求更多的任务,故对其排序。 3.对于每个任务,希望找到对原创 2014-12-11 16:49:57 · 740 阅读 · 0 评论 -
HDU 5037 Frog
题意:一只青蛙要过河,河面上现在有n块石头,青蛙每次最长跳L,河宽m。你可以随意在河里加石头,让青蛙跳过河的步数最多。题解:1.贪心,可以证明总是使青蛙跳的更近最优; 2.当青蛙可以跳过去的时候,加石子不会更优(只会给青蛙更多种选择) 3.对于x1,x2两个石子间距大于l的情况,使得l + 1分两步跳最优; 4.对于l + 1的分配,取决于青蛙所在石子x0与x1的间原创 2014-12-13 01:06:23 · 818 阅读 · 0 评论 -
hdu 5143 NPY and arithmetic progression
因为她好久没有学习acm了,重新开始学的时候还是有点小不适应。喜欢acm,因为有挑战,很纯粹,付出了便会有收获。题意:有a个1,b个2,c个3,d个4,问能否不重不漏的划分成一些长度大于等于3的等差数列(一个数列可以出现多次)? 今天开始训练用科学的方法来解题:首先注意到这是一个对称的数列,a,b,c,d,所以可以分类从两方面着手问题:1.从两边开始着手,2.从中间着手。原创 2015-02-04 16:03:38 · 707 阅读 · 0 评论 -
HDU 1599 find the mincost route 、 poj 1734 Sightseeing trip
今天无向图求最小环的算法,重温了一遍floyd。首先对于floyd算法,是一种动态规划的思想dp[k][i][j]代表的含义是从ui到uj经过的除端点以外最大的不超过k的点的最小值dp[k][i][j] = min(dp[k - 1][i][k] + dp[k - 1][k][j],dp[k][i][j]);而求floyd时可以顺便求得最小环,对于构成最小环的点集{x1, x2,原创 2014-12-10 22:44:48 · 702 阅读 · 0 评论 -
poset_Dilworth定理及其应用
引用三篇比较好的文章,是对链,反链,偏序集,Dilworth的讲解和证明ttang 神牛的笔记,Axl牛,lambda2fei牛推荐四个可以用此方法做出的习题都是看他们的博客学习的,但对于边界问题,需要带数试一试HDU 1257#include#include#include#include#includeusing namespace std;#define原创 2014-12-03 17:46:29 · 801 阅读 · 0 评论 -
poj 3181 Dollar Dayz
题意:农夫约翰有N元钱,市场上有价值1……K的商品无限个,求所有的花钱方案?分析:完全背包+模拟大数,注意加前导0#include#include#includeusing namespace std;#define MAXN 1005#define MAXM 105long long const MOD = 1e17;long long dp1[MAXN],dp2[原创 2014-11-30 14:33:42 · 617 阅读 · 0 评论 -
poj 3046 Ant Counting
题意:T种蚂蚁,共计A只,种内没有区别,问含有x只蚂蚁的子集有多少种(x∈[S,B])分析 :1.类比C[i][j]相当于把每个种类增加到A只; 2.所以可以从类似组合公式的递推下手; 3.dp[i][j] 代表前i种蚂蚁取j只的情况数 4.转移方程可以继续类比,dp[i][j] = dp[i - 1][k](0 5.转移时可以用前缀和思想优化#i原创 2014-11-30 14:29:37 · 608 阅读 · 0 评论 -
poj 1742 Coins
题意:有n种面额的硬币,面额个数分别为A_i、C_i,求最多能搭配出几种不超过m的金额?分析:1.想到类似于完全背包,只是每个物品数量有限制 2.看到搭配出的钱数有最大上限,可以将其变成数组索引; 3.类似于完全背包的转移,不过每次转移需要记录用过多少金币,或者还剩多少 4.dp[i][j]表示第i种金币,搭配出j块钱还剩多少数量的硬币,其中dp值为负代表无法搭配出这个数目的原创 2014-11-30 13:58:23 · 559 阅读 · 0 评论 -
poj 3280 Cheapest Palindrome
题意:回文串,给你一串字符,通过添加删除其中的一部分,使其变成一个回文串,并且花费最小(添加删除都有权值)分析:1.添加和删除可以起到相同的效果,所以取花费少的那种 2.dp[i][j],表示从i到j的产生最便宜回文串的花费 3.开始想从区间的一个端点开始更新,每次更新需要遍历整个区间 4.后想到遍历可以化简为仅仅对两个端点的比较 dp[i]原创 2014-11-30 13:43:52 · 529 阅读 · 0 评论 -
poj 3616 Milking Time
题意:你有一头奶牛,你能够在一定的时间里挤奶。而且挤奶量也不同,每次挤奶要休息r时间,问你最大可以挤多少奶。分析:每个时间段dp[i]的最大产奶量需要和此时间段前面的每一个dp[j]作比较,所以想到排序,后从区间中找到最大值,这里面用树状数组解决#include#include#include#includeusing namespace std;#define MAXN 200原创 2014-11-30 12:57:28 · 546 阅读 · 0 评论 -
poj 2385 Apple Catching
题意:有两棵苹果树,标号分别为1,2。每分钟有其中的一棵树会掉下一个苹果,奶牛一分钟只能在其中一棵树下接到苹果,但她不知道下一分钟会是那棵树掉下苹果,所以她就要在两棵树下来回跑。但她只会在树下跑W次。问你在T分钟内,奶牛最多能接到多少苹果。分析:T分钟,W次机会,很像01背包,所以dp[i][j] 第i分钟费w点能量,得到的最多的苹果数目,进行状态转移#include#inc原创 2014-11-30 12:41:34 · 634 阅读 · 1 评论 -
poj 2229 Sumsets
每个状态都与其前面的状态有关分奇偶讨论1.从偶数到奇数对分解式不产生影响2.从奇数到偶数会多产生合并#include#include#includeusing namespace std;#define MAXN 1000010#define MOD 1000000000int dp[MAXN];int main(){ dp[1] = 1; for(原创 2014-11-30 12:38:20 · 568 阅读 · 0 评论 -
poj 3255 Roadblocks
题意:求次短路分析原创 2014-10-23 22:12:29 · 484 阅读 · 0 评论 -
poj 3684 Physics Experiment
题目是说n个同一大小(半径位r cm)的小球连在一起,最低的一个小球离地距离位h,从0秒开始依次掉落,中间发生所有的碰撞都是完全弹性碰撞。求t秒后所有小球的位置。原创 2014-10-16 12:16:01 · 818 阅读 · 0 评论 -
poj 3601 Tower of Hanoi
题意:汉诺塔问题,不过其中加了一个条件,就是盘子可以有相同的原创 2014-10-08 11:14:29 · 1375 阅读 · 0 评论 -
HDU 4635 Strongly connected
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4635大意:给出一个简单有向图,问最多可以向图中添加几条边,并且保证图不是强连通原创 2014-10-06 18:34:15 · 752 阅读 · 0 评论 -
HDU 4417 Super Mario--离线树状数组、划分树、线段树
题意:询问区间[l,r]内有几个数字小于h原创 2014-10-03 13:37:39 · 765 阅读 · 0 评论 -
UVA 1232 - SKYLINE
题意:求区间1-100000的最大覆盖度,如果新的建筑物在一段区间[a,b]的h >= 原来此区间的最大高度,则ans += b - a + 1;求ans;线段树思路:每个结点保存的信息:此结点及此结点孩子们结点的最小高度minh,最大高度maxh,标记值set 区间修改解法:对于每个新加的建筑物原创 2014-10-01 19:00:29 · 822 阅读 · 0 评论 -
UVA1400 - "Ray, Pass me the dishes!"
给出一个长度为n的整数序列,对于询问(a,b),找到两个下标x,y,使得a原创 2014-10-01 14:02:29 · 1939 阅读 · 1 评论