ACM 策略
文章平均质量分 66
嚜寒
盖士人读书,第一要有志,第二要有识,第三要有恒。
有志则不甘为下流;
有识则知学问无尽,不敢以一得自足,如河伯之观海,如井蛙之窥天,皆无识者也;
有恒则断无不成之事。
展开
-
POJ1011 搜索+剪枝【很好】
1 题意。 2 分析。 枚举可能的最小长度,再搜索+剪枝,判断一下该最小长度是否可以由题目所给的一组子木条长度组合而成。 剪枝点:。。。 #include #include #include using namespace std; //const int INF=0x3f3f3f3f; const int maxn=70; int stick[maxn]; int visted原创 2016-10-30 17:24:40 · 433 阅读 · 0 评论 -
POJ1456 贪心
1 题意:有n个商品,给出它卖出的价值以及必须在第几天之前卖出去(deadline),在某一天只能卖出一种商品。请问最佳的销售计划。 2 分析: 容易想错题意,其样例可能是具有迷惑性的,即你想错了题意其样例也是可能过的。 3 #include #include #include #include #include using namespace std; const int m原创 2016-12-12 08:03:26 · 413 阅读 · 0 评论 -
POJ2408 模拟排序、char[]操作、利用hash优化
1 题意 给定若干个字符串,将其分组,按照组成元素相同为一组,输出数量最多的前5组,数量相同的输出字典序较小的一组,每组按照字典序输出所有字符串,不输出重复的字符串。 2 分析 主要用到了strcmp()、strncpy()或者strcpy()、sort。 应该加hash优化,明天再补。 代码二 没有优化的。 3 代码二 #include #include #include原创 2016-11-14 23:23:13 · 410 阅读 · 0 评论 -
POJ1003 二分_查找/自定义zero()函数
1 2 ① 参考的,a.它没有用递归,b.而且抽象出了Zero()函数,c.在细节上它让card[0]=0.0考虑到了小于0.5的情况(不用像自己写的还得特判)——【多想想某个递推的开始第一个值是不是需要为0】,是值得学习的。 #include #include #include using namespace std; const double delta=1e-8; co原创 2016-10-29 10:47:29 · 480 阅读 · 0 评论 -
POJ2109 高精度(含大数开方)+二分
1 高精度(含大数开方)+二分 一个技巧和三点注意: 技巧:假设k^n=p;(k的n次方),那么p的位数/n得到的是k的位数!例如:n=7,p=4357186184021382204544,p的位数为22,用22/7的结果向上取整,得到4,即为k的位数,也就是说k的取值范围是1000~9999。(引自code_pang)不利用这一点,高精度+直接二分,也会超时。用这一个技巧合理缩小二分的范围。原创 2016-07-18 21:36:27 · 2275 阅读 · 0 评论 -
hdu1231 连续子数组最大和(分治,动态规划)
1)开心,学习伪码之后,自己敲完的代码;发现《导论》在纯粹的算法知识方面比紫书讲的更细致,更好懂一些。 分治策略,旨在将原先的大问题不断分解成规模小的问题,比如最大连续子数组,以中间界线分三部分,左边是中界线左边的元素,右边是中界线右边的元素,第三部分是两边都有分布的元素集合,因为最大连续子数组之和一定是这三部分之其中的一个,所以比较这三个中最大的,就是最大连续子数组之和,也是该函数的返回值。而原创 2016-03-07 21:52:27 · 1778 阅读 · 0 评论 -
hdu1007最近点对-分治策略-具体优化
1)AC总是让人感到兴奋。 上一篇求最大连续子数组之和了解到分治策略之后,本题先是找到中间界线,依然分成三部分,左边集合、右边集合、两个点分别在左边和右边的集合的情况。前两种情况不断递归,直到该集合内只有两个点,则求两点之间距离并返回,第三种情况如果常规来做,则是左边集合中的每一个点都要对应求到右边集合中每个点的距离,比较出其中最小的,此处O((n/2)^2),时间复杂度依然是n^2层次,于是继原创 2016-03-08 21:23:52 · 880 阅读 · 0 评论 -
SDNU1331 二分法求,确定划分次数后的最小连续区间和
0) (这个题的数据OJ没有补充,0 二分法是有规律的暴力,那么二分的数列一定是有某种顺序,使得二分得到的数如果不符合某个条件,可以按规则再往左二分或再往右二分。 1) 之前用二分模拟划分情况,非常笨也非常麻烦,是不符合为了简洁高效而使用二分的思想。事后才知道,直接二分答案即可,因为二分效率非常高,找到答案所在的大概的区间位置,也就是二分所有可能的区间和,也不过是log(10^5)≈16,原创 2016-06-01 11:45:42 · 768 阅读 · 0 评论 -
高精度/大数模板
注意输入的是字符串。且字符串长度对应大数的位数。当然在BigNum的Class中的private处可以做相应的修改。另外,这个模板中,重载运算符号离不开对拷贝函数和比较符号的重载。 #include #include #include #include #include #include #include using namespace std; #define MAXN 9999 #原创 2016-06-01 16:15:01 · 742 阅读 · 0 评论 -
POJ1840 离散化+二分 OR hash_链接法 (简单题)
1 题意 2 分析 Note:代码一的二分,如果用STL的lower_bound(),速度很慢;而二分自己写的话速度就很快。 代码一:离散化+二分 (1000ms) 代码二:hash (明天补) 3 代码一 #include #include #include #include #define LI(x) x*x*x using namespace std; //-(a1原创 2016-11-22 21:43:16 · 390 阅读 · 0 评论