LCS属线性结构上的动态规划,应该是动规里面很简单的一种类型。
最长公共子序列问题,一旦明确了状态,找到状态转移方程还是很简单的。但是对于本题来说,难点之一就是会很难想到该如何定义状态。
作为一只菜鸟,兹认为此题很复杂。
首先我是想不到每一步都把没到终点的字母全加上1,以及这种效果与你去找开始和结束的效果是一样的。
甚至,若不是在做动规的专题,我根本想不到这样的题目,会用动规来解决。
再...
分类:
其他好文 时间:
2014-08-07 19:14:11
阅读次数:
256
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 1010;
double d[maxn][maxn];
int n;
struct node
{
double x,y;
}a[maxn];
double dist(int p1,int p2)
{
double ...
分类:
其他好文 时间:
2014-08-07 19:12:00
阅读次数:
182
错的我真是无语。。。还是状态的把握不准确。。
起始状态转移方程是很重要,但是只推出了方程是不够的
对边界状态的处理,对特殊状态的处理,这些都很重要,错了任何一个小地方,都会导致WA....
细节!更清晰的思路,更全面的考虑!
#include
#include
#include
using namespace std;
int n,t;
int v[55];
int d[55][1000...
分类:
其他好文 时间:
2014-08-07 19:11:09
阅读次数:
228
有思路就去做,要相信自己
多处理更复杂的情况,你就不觉得现在复杂了
#include
#include
#include
using namespace std;
typedef long long ll;
struct soli
{
ll a,b,c;
}s[40];
int n;
ll d[40][3];
int vis[40][3];
ll answer[40][3];
ll ...
分类:
其他好文 时间:
2014-08-07 19:07:30
阅读次数:
278
本题难处好像是在于 可以把一些灯泡换成电压更高的灯泡以节省电源的钱 ,所以也才有了对最优方案的探求
好的处理方法是按照电压从小到大排序,只能让前面的换成后面的,也就满足了把一些灯泡换成电压更高的灯泡
的要求;
一种电压的灯泡,要么不换,要换则应该全换:换,说明用当前的电源不值;而既然不值则应该全部换掉以避免使用当前电源,不然即增加了灯泡费用又没节省电源费用,亏大了。。。
状态转移详见代码
...
分类:
其他好文 时间:
2014-08-07 19:02:38
阅读次数:
267
Easy Problem from Rujia Liu?
Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld
& %llu
Description
Easy Problem from Rujia Liu?
Though Rujia Liu usually sets...
分类:
其他好文 时间:
2014-08-07 15:54:00
阅读次数:
259
说说:这道题初看完全不知道如何下手,但最终也不过就是个二分查找而已,其实不用二分也行,从1开始遍历从显示的结果来看花费的时间是一样的。首先,讨论N是正数的情况。很明显这是个等差数列求和的问题,当总和任然小于N的时候,那么显然此时的n还不够大。当然若直接等于N了,那输出答案就好了。如果最后总和大于N了,但两者之差为奇数,这显然是不行的,因为把序列中任何一个数变为其相反数,那总和都相当于减去一个偶数。所以此时n需要进一步变大,直到两者的差为偶数。最后将序列中的某些正号变为负号,不过具体的我们不用管,问题就解决啦...
分类:
其他好文 时间:
2014-08-07 15:48:20
阅读次数:
232
说说:这道题非常之坑!开始还以为要递归判断的,其实根本不用,只要判断第一层的S即可,其中内嵌的S肯定是正确的。居然还有这样的题目,真的很无语╮(╯_╰)╭...
分类:
其他好文 时间:
2014-08-07 15:41:30
阅读次数:
333
首先这道题的节点数太多了,达到10^5,所以不能用数组模拟啊,肯定TLE,所以用贪心算法,读取第一个结点,搬到第二个结点,剩下的和第二个结点合并,一起搬到第三个结点。。。。。。这个算法很好,每次看成只是邻居间买卖,下面是代码:
#include
#include
#include
using namespace std;
int main()
{
int n;
while(cin...