Designing Efficient Algorithms
WorstCoder
能够做出困难的算法题是最快乐的事情!
展开
-
poj 3684 Physics Experiment
题目是说n个同一大小(半径位r cm)的小球连在一起,最低的一个小球离地距离位h,从0秒开始依次掉落,中间发生所有的碰撞都是完全弹性碰撞。求t秒后所有小球的位置。原创 2014-10-16 12:16:01 · 818 阅读 · 0 评论 -
uvaoj 12097 - Pie.cpp
题解: 1.二分 2.在windows下输出格式竟然是:printf(“%.4f\n”,l);这里找了半天错 总结 今天不小心又犯了盲目找错的坏习惯,下次冷静的思考一下再找错#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; #define MAXN 10010原创 2015-11-01 22:25:42 · 467 阅读 · 0 评论 -
uvaoj 1267 - Network
题解: 1.贪心,把树的任意一点作为树根,这棵有根树的‘最深叶子节点’的最优服务安装位置是确定的! 总结: 1.这道题没有自己想出来,憋了好久好久啊!总结一下,现在总是习惯性的躺在床上才想题,丢掉了在纸上随意画一画的习惯了,导致总是在一个地方纠结而没有看到那里没有想到!(画在纸上可能更能帮助完善思维) 2.这道题目的一个关键是把无根树想成有根树!无形中加强了条件,以后再去从极端的地方入手,也原创 2015-11-15 01:05:07 · 576 阅读 · 0 评论 -
uvaoj 1069 Always an integer
题解: 1.对于最高次数是n次的时候,为x分别带入0,1,2…到n + 1,如果都为整数,则多项式为整数 总结: 1.这个题目没有自己想出来,总结一下,以后在做题的时候还是要明确目标,猜猜可能能通过哪些方面得到答案 2.这道题依旧碰到了bug,导致浪费了很多时间,以后做到,每次犯错误,都停下来思考一下,对以后要做的事情做一个简单的规划 3.昨天写xv6的编程作业,感觉都几乎已经能够写完了,原创 2015-11-09 11:52:52 · 564 阅读 · 0 评论 -
uvaoj 10795 - A Different Task
题解: 1.汉诺塔问题,试图将初始情况和终止情况通过一个中间状态联系在一起 总结: 1.这几天一直在想uvaoj 10253,感觉有点小坎还没有想出来,感觉以后应该明确解题思路后再写题,这样效率会高一些,嗯,写的过程中发现有些问题没有考虑到,暂时没有想出怎么做,下面再捋一遍这道题的思路,也许会比较好,因为对这道题的思路都是片段化 + 试代码试出来的。 2.以后写题,不管有多大的把握,或者多着原创 2015-10-06 23:31:02 · 445 阅读 · 0 评论 -
uvaoj 11520 - Fill the Square
贪心#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAXN 12 char ch[MAXN][MAXN]; int main() { int _,n; cin >> _; for(int kcas = 1;kcas <= _;kcas++) {原创 2015-11-03 09:44:23 · 568 阅读 · 0 评论 -
uvaoj 11300 - Spreading the Wealth
题解: 1.列关系式,定义: 第0个人给第1个人A0块钱 第1个人给第2个人A1块钱 … 最后ans = |A0| + |A1| + |A2| + |A3|….. 2. A0表示A0 A0表示A1 A0表示A2 … 总结: 1.很多复杂的题目,感觉都可以通过列关系式的方法解出来,列关系式可以帮助整理思维#include<iostream> #include<cstring>原创 2015-09-14 01:18:19 · 416 阅读 · 0 评论 -
uvaoj 11729 - Commando War
题解: 1.贪心,按j从大到小排序 证明: 1.j[0] > j[1] if(j[0] < b[1] + j[1]) b[0] + b[1] + j[1] vs b[1] + b[0] + j[0] if(j[0] > b[1] + j[1]) b[0] + j[0] vs b[1] + b[0] + j[0] 都是左边更优一些,所以j大的优先分配任务 总结: 1.坚持每日一题有原创 2015-09-09 23:27:31 · 452 阅读 · 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 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 4864 Task
大致题意:有n台机器和m个任务,都有两个参数工作时间time和难度level。每个机器 一天只能完成一个任务,一个任务只能被一台机器完成,每个任务完成后的利润是 500*time+2*level。问在一天能完成尽量多的任务下获得的利润是多少。 思路:1.感觉像是贪心; 2.可以发现尽量完成时间需求更多的任务,而后是难度需求更多的任务,故对其排序。 3.对于每个任务,希望找到对原创 2014-12-11 16:49:57 · 740 阅读 · 0 评论 -
uvaoj 1099 - Sharing Chocolate
题解:状态压缩dp 总结:继续努力做到,没犯一些错误,思考一下对策,再进行改正#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAXN 110 #define N 16 int d[(1 << N) + 10][MAXN],w[N],sum[(1 << N) + 10]; int原创 2015-11-02 22:35:25 · 546 阅读 · 0 评论