- 博客(14)
- 资源 (3)
- 收藏
- 关注
原创 hdu2037今年暑假不AC解题报告
这个题目很简单,不过作为练习可以体会其中的贪心思想,思路很简单不多说了,贴下代码: #include #include using namespace std; typedef struct node { int start; int end; }Node; Node time[101]; bool cmp(Node a,Node b) { return a.start<b.start
2012-11-30 20:43:49 753
原创 hdu1050 Moving Tables解题报告
貌似很简单的一道题目,可我却用了好长时间,哎、、、得多练练啊,废话不多说了,写下分析和代码,思路: 假设从1->399(或者2->400)的走廊是一条线段,每搬一张桌子(如从30号房间搬到40号房间),则线段30->40被重复了一次。如果另外再搬一张桌子(如从35号房间搬到45号房间),则线段35->45被重复了一次。而相同的线段35->40则被重复了两次。问题转化为求最大重复次数。 那很好办
2012-11-30 17:36:57 2086
原创 NYOJ104——动态规划的运用
每一道题目,只要你愿意耐心的去发现它的思路,你会发现其中其乐无穷。 题目非常简单,就是求一个子矩阵使得其各项的和最大。 在这里我们先回想一下求一个数组的最大连续字串和,假定一整形数列{a1,a2,a3,...,an},找出连续的非空子串{ax,ax+1,ax+2,...,ax+y},使得该子序列的的和最大。思路:假设F[m]表示以第m个数结尾的最大连续字串和,则F[m]=max{F[m-1],
2012-11-09 18:14:15 408
原创 NYOJ36与NYOJ37——最长公共子序列
这两道题目均是求最长公共子序列,只是36题说得更明白些,37题的思路:求原字符串和其逆序的最长公共子序列。 利用动态规划求最长公共子序列,状态转移方程为: if(str1[i]==str2[i]) then f[m][n]=f[m-1][n-1]+1 else f[m][n]=max{f[m-1][n],f[m][n-1]} f[m][n]表示的意思是str1数组的前m个元素与str2数组
2012-11-02 20:12:20 366
原创 NYOJ16和NYOJ17解题报告
这两个题目实际上应该就算是一道题,都可以应用动态规划来进行,并且NYOJ16在本质上就是NYOJ17题,即求最长单调递增子序列,其状态转移方程为f[m]=max{f[k]}+1,其中k=0,1,2,...,m-1,并且arr[m]>arr[k](arr是所给的已知数组). 在此请教高手帮忙看一下,我的NYOJ16题目在哪出错了,为什么一直WA呢,在此谢过了。 NYOJ16代码 #includ
2012-11-02 17:34:01 323
转载 poj3070Fibonacci解题报告
求矩阵的幂,采用二分法。很容易理解 #include using namespace std; const int M=10000; struct Matrix { int v[3][3]; }m; //求矩阵A*B Matrix mtMul(Matrix A,Matrix B) { Matrix C; C.v[0][0]=(A.v[0][0]*B.v[0][0]+A.v[0][1]*B
2012-10-27 16:14:40 297
原创 poj1008"Maya Calendar"解题报告
这道题思路很简单,就是一个转化的问题,我的思路: (1)根据给定的第一个日历时间,计算出从开始距今的天数; (2)根据计算出的天数,再将此转换为第二个日历对应的日期; (3)输出格式化,一定要注意要输出总的输入数。 题目虽不难,但也wr了好几次,刚开始是忽略了当计算出的天数恰好是第二个日历给对应的一年的最后一天的处理。 还有一个细节是最主要的,最后才发现,在我的代码中,month和day
2012-08-17 09:48:44 1192
原创 poj1007"DNA Sorting"解题报告
该题主要是对map的使用,思路如下: (1)根据题意要求,统计the measure,将其储存在一个数组中,并将相应的字符串存放在一个map中,此题中的the measure值不会有重复,所以不必担心map中的字符串被覆盖; (2)调用系统函数排序,结果格式化。 附上自己的代码,供大家参考: #include #include #include #include using name
2012-08-16 16:17:25 400
原创 poj1005"I Think I Need a Houseboat"解题报告
该题目只要读懂题意也不难,题目大意就是:判断所给的一个点是否在一个半圆内,并且这个半圆的面积是每一年都比上一年要增加50平方米。 思路: 判断一个点是否在半圆内,纯数学方法。 在此处附上代码,供大家参考: #include using namespace std; const int AREA=50; const double PI=3.1415926; int main() { /
2012-08-16 11:30:55 323
原创 poj1004"Financial Management"解题报告
这道题目比我想象的还简单一点,我以为最终还得设置精度,但是我两次提交(一次设置精度,一次没有)全都AC了。思路很简单,就是求平均值,代码如下,供大家参考。 #include #include using namespace std; const int NUM=12; int main() { //freopen("in.txt","r",stdin); float n; float
2012-08-16 10:51:21 278
原创 poj1003"Hangover"解题报告
这道题目并不难,思路就不在说了,看懂题意后就简单了,直接把自己的代码附上,供大家参考哈 #include using namespace std; int main() { //freopen("in.txt","r",stdin); double dNum; while(cin>>dNum&&dNum!=0.00) { int count=0; //记录结果 int n
2012-08-16 10:05:22 429
原创 poj1002“487-3279”解题报告
该题思路非常简单,三步: (1)想方设法去掉‘-’字符; (2)将字母转化成为对应的数字,注意对含有Q、Z这两个字符的处理,以及连续多个‘-’字符的处理(自己在这两个地方弄了好长时间,最后发现其实挺简单的哈); (3)调用系统排序函数进行排序,输出格式化。 下面的代码是将自己原始的代码整理后所得,为了给大家一个清晰地代码: #include #include #include #incl
2012-08-16 09:06:31 1325
原创 poj1001Exponentiation解题报告
思路: (1)将输入的字符串转化为整数,并记下小数点的位置; (2)将转化所得整数再次转化为字符串,进行大数相乘; (3)首先判断所得结果是否为零,若不为零,将小数点插入到结果字符串的合适位置,进行结果格式化; (4)结果输出。 下面是自己摸索着写的代码,供大家参考 #include #include #include using namespace std; int loc;
2012-08-14 14:38:18 412
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人