摘要:
/* 返回数组的引用(返回数组的指针,方法与之相同) 共四种方法(在下面示例程序中,调用其中一种方法时,需要将其他三种方法注释掉)*/ 1 #define _CRT_SECURE_NO_WARNINGS 2 #define HOME 3 #include <iostream> 4 #include 阅读全文
摘要:
Number Triangles: /* DP 题 dp[j] = max(dp[j - 1] + tgl[i-1][j], dp[j] + tgl[i-1][j]); */ 1 #define _CRT_SECURE_NO_WARNINGS 2 #define HOME 3 #define _CR 阅读全文
摘要:
Arithmetic Progressions: /*需要注意两个可以优化的地方:1)预处理,找到all integers of the form p^2 + q^2 (where p and q are non-negative integers)2)判断以a为等差数列的第一个值,b为等差数列的公 阅读全文
摘要:
/* hdu4842(NOIP2005过河)之动态规划(距离压缩) dp[i]:=到桥上的i位置,最少需要踩到的石子数。 dp[i]=min(dp[i],dp[i-j]+isStone[i]) 条件: (1)S=(T-1)*T时 (这个具体数值不精确,但是满足想达到的效果,下面有简单的证明),青蛙... 阅读全文
摘要:
/*叠箱子问题: dp[i][j]:=第i个箱子到第n个箱子叠放起来总重量为j,所能叠放的最多箱子数 dp[i][j]=max(dp[i][j],dp[i+1][j-weight[i]]+1)*/ 1 #include 2 #include 3 #include 4 #include 5 #... 阅读全文
摘要:
/* 学习了一种新的解题方法,很巧妙,利用坐标系来解题。 参考:http://blog.csdn.net/nys001/article/details/12637201*/ 1 #include 2 #include 3 #include 4 #include 5 #inclu... 阅读全文
摘要:
/*(1)如果是奇数: dp[i]=dp[i-1] 相当于在(i-1)每个分隔的前面添了一个1 (2)如果是偶数: dp[i]=dp[i-1]+dp[i/2] 相当于在(i-1)每个分隔的前面添了一个1,同时(i/2)的每个分隔乘以2eg:2: 11 23: 111 124: 1111 112 22... 阅读全文
摘要:
/* * 任意顶点为A、B、C的三角形,如果点P在三角形内,那么 * 1)点P和点C在AB边的同一侧 2)点P和点A在BC边的同一侧 3)点P和点B在AC边的同一侧 * 反之亦然(充要条件) * * 关键:如何判断某两个点在某条直线的同一侧 * 参考图示发现: * ... 阅读全文
摘要:
/*poj2337之有向图欧拉路径输出 每个单词看作一条有向边,顶点即为单词首尾字母,然后求欧拉路径即可。 1)为保证字典序,先对单词按字典序排序2)深搜,输出单词序列*/ 1 #include 2 #include 3 #include 4 #include 5 #include... 阅读全文
摘要:
/*欧拉路径之poj2513ColoredSticks 欧拉路径:若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径。 无向图存在欧拉路径充要条件: 1)图是连通的; 2)所有节点的度为偶数,或者有且只有两个度为奇数的节点。 题目要求: alignthesticksinast... 阅读全文