上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页
摘要: 题目:http://poj.org/problem?id=2231题意:给出 n 头牛,给出 n 头牛的位置,求出每头牛到其他牛的距离的总和按给的牛的位置从小到大排序,假设 第 i 头牛的位置为 xi ,那么它前面的牛的个数假设是 N 个,并且我们可以求出它前面这些牛的 x (位置)值的和 记为 sum,那么它前面的这些牛到他的距离就是 N * xi - sum,同样处理它后面的那些牛的距离,对每头牛都这样处理后,把每头牛到其他牛的距离总和相加,就是答案代码写的有点乱View Code 1 #include<iostream> 2 #include<cstdio> 3 阅读全文
posted @ 2012-08-18 10:55 AC_Girl 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3150题意:给出 n 个数构成一个环,给出 m d k,每一个数从它的两边(连续的)各找 d 个数和这个数相加 再取余m后更新这个数,问 k 次操作后,输出新的n 个数的顺序。不知道怎么优化,看了别人的解析 http://hi.baidu.com/moon_1st/item/0381d80a85fd258a3d42e2f0,循环矩阵经过 k 次幂后仍然是循环矩阵,而且有 a[i][j] = a[i - 1][j - 1]成立,这样转移矩阵的下一列就可以由这一列转换过去,降低复杂度题目:http://poj.org/problem?id 阅读全文
posted @ 2012-08-18 10:43 AC_Girl 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3318题目中明确交代,0(n ^ 3) 会 TLE,可是一开始还就没看见,以为在计算矩阵时加两个优化可在 2s 挤过去呢,然后就TLE了三次,看别人的说是有一个结论 A * B * X == C * X时,有 A * B == C成立(成立的概率很大),然后 X 就是用随机函数求的View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 #incl 阅读全文
posted @ 2012-08-15 21:39 AC_Girl 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3070算是矩阵快速幂的模板吧View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 #include <vector> 6 #include <math.h> 7 #define N 160 8 #define mod 10000 9 #define _clr(a,val) (memset(a,val,sizeof(a)) 阅读全文
posted @ 2012-08-15 21:29 AC_Girl 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 状态压缩dp,感觉还是不清晰,虽说就两种状态 0 1,但是感觉变化太多了,而且状态转移也不好想题目:http://poj.org/problem?id=3254题意:给出 N * M的图,上面只有 0 或者 1两种情况,如果是 1 表示这里可以放牛,如果是 0 表示不可以放牛,而且牛是不可以相邻的,问在这片区域内最多有多少种放牛的方案很简单的一个状态压缩 按给出的样例来说先看第一行 (1 表示该位置有牛,0 表示该位置没有牛)可以用二进制串来表示牛的放置情况0 0 0 (0) 0 0 1(1) 0 1 0 (2) 1 0 0(4) 1 0 1(5) 也就是题目中给的第一行最多有这五种情况,分. 阅读全文
posted @ 2012-08-13 16:39 AC_Girl 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 两道树形 dp题目:http://poj.org/problem?id=2057题意:蜗牛的房子丢在了树上的某个节点上(每个节点的可能性相同),有些节点上有虫子,可以告诉蜗牛它的房子是不是在以这个节点为根的子树上,蜗牛找到房子的最小数学期望值是多少。首先期望是:找到房子走的步数 / 叶子节点的总数。叶子节点总数是固定的,那么走的步数越少,期望值也就越小,因为一个节点可能有多个孩子,从不同的孩子开始走得到的步数是不同的,优先选择哪个孩子这里用了贪心,解释见代码。定义三个数组su[N] // su [i] 表示走到以 节点 i 为根的子树成功找到房子的步数 如果 i 是叶子节点那么 su [i] 阅读全文
posted @ 2012-08-13 15:31 AC_Girl 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3280题意:给出一个字符串,可以增加 或 删除 个别字符,增加和删除都是有权重的,求在最小权重下把给的字符串变成回文串感觉类似于求最长公共子序列的,把每个字符串增加和删除的权重存入两个数组,当前后对称的两个字符串相等时 dp[j][k] = dp[j + 1][k - 1],否则 dp[j][k] = min( min(dp[j+1][k]+add[str[j]-'a'], dp[j][k-1]+add[str[k]-'a']), min(dp[j+1][k]+sub[str[j]-'a' 阅读全文
posted @ 2012-08-12 19:30 AC_Girl 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3301题意:给出一些点的坐标,求一个最小的正方形来覆盖所有的点用三分枚举转角即可,坐标转换公式: x’ = x * cosa - y * sina; y’ = y * cosa + x * sina;View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 7 #define N 60 8 #define inf 1000 阅读全文
posted @ 2012-08-12 18:38 AC_Girl 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3373题意:给出2个整数n(n<10^100)和k(k<10000),求满足以下条件的整数m 1、m与n位数相同 2、m能被k整除 3、满足以上两点时,m和n在相同位置的地方,数字不同的个数最少 4、满足以上三点时,m值最小题目里面那个mod(看的别人的)定义数组mod[101][10],mod[i][j]=((10^i)*j)%k,先求出:0123456789(%k)0102030405060708090(%k)0100200300400500600700800900(%k).....通过递推式mod[i][j]=(mo 阅读全文
posted @ 2012-08-10 20:23 AC_Girl 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4350以为移动的都是 0 到 r - 1 内的牌,所以直接模拟就行了View Code 1 #include <stdio.h> 2 #include <iostream> 3 #include <string.h> 4 #include <math.h> 5 #define N 60 6 #define _clr(a,val) (memset(a,val,sizeof(a))) 7 8 using namespace std; 9 10 typedef 阅读全文
posted @ 2012-08-10 11:53 AC_Girl 阅读(259) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页