上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页
摘要: 题目:http://poj.org/problem?id=1088记忆化搜索,dp[r][c] = max(dp[r - 1][c] , dp[r + 1][c] , dp[r][c - 1] , dp[r][c + 1]) + 1 ( if (题目给的条件满足))View Code 1 using namespace std; 2 typedef long long ll; 3 const int N = 110; 4 int map[N][N]; 5 int dp[N][N]; 6 int n,m; 7 int dfs(int r, int c) // 四个方向深搜 8 { 9 ... 阅读全文
posted @ 2012-09-08 10:08 AC_Girl 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 记九月的第一个小水题题目:http://poj.org/problem?id=3665好像是以前做过的一个比赛题目,当时没有过,后来再写也没有过。刚才看到,就又重新读了一遍题目,竟然发现,自己以前读错题目了,而且那时候总是检查程序,根本就没重新去读过题,悲剧!题目给的算法规则里第二条说要把最高分的牛的分数平均分给 除他以外的其他牛(当然,如果不能平分,那么就把多余的分数从第一头牛开始每个 + 1的分完,当然还是不能给自己加),然就是把分数按给每头牛(包括自己)错了好几次,View Code 1 #include <stdio.h> 2 #include <stdlib.h&g 阅读全文
posted @ 2012-09-03 21:41 AC_Girl 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 随便看到的一个题题目:http://poj.org/problem?id=1674给出 n 个数,问最小的交换次数可以让这 n 个数变成升序排列的这个一开始还以为dp呢,可是想了好长时间也不知道怎么dp,原来是找给的n个数里的环的问题,比如说样例 22 3 5 4 1 这里面有两个环 {2,3,5,1},{4},2应该在的位置是 3,3应该在的位置是 5,5应该在的位置是 1,然后1 就到 2 了,所以就是一个环,然后最小的交换次数就是 n - 环数View Code 1 const int N = 10010; 2 struct node 3 { 4 int x; 5 in... 阅读全文
posted @ 2012-08-20 21:51 AC_Girl 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 先说一下叉积求面积View Code 1 struct node 2 { 3 int x; 4 int y; 5 }point[N]; // 数组保存多边形顶点,但是必须按顺序(逆或顺)保存 6 double area(int n) // n 表示多边形的顶点数 7 { 8 int i; 9 double a = 0;10 for(i = 0; i < n; i++)11 {12 int j = (i + 1) % n; // 保证最后一个和第一个连起来13 a += point[i].x * point[j... 阅读全文
posted @ 2012-08-20 21:43 AC_Girl 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 今天突然看见凸包题,然后翻看自己以前学的时候写的博客,竟然发现那个学习的链接没了,就去看了算法导论,然后对着模板,把这个算法看了一遍,东西还是要多看几遍的,每次看都有不同的感受,总会有那么一次,你会发出一句感慨:呃,原来是这样啊!现在把模板整理一下吧先说一下求解步骤:1.首先在输入的点集中找出一个对照点,放入到 p[0]中,这个对照点就是 在点集的最下,最左的那个点2.对 1 ~ n - 1的点按相对于 对照点的极角从小到大排序,如果极角相同那么就按距离对照点的远近从小到大排序3.把输入的点集的前两个点放入到栈中,然后依次扫描剩余的点,把不是凸包顶点的点从栈中剔除,沿逆时针方向通过凸包时,在每 阅读全文
posted @ 2012-08-20 21:23 AC_Girl 阅读(674) 评论(0) 推荐(0) 编辑
摘要: 两道简单的 dp题目题目:http://poj.org/problem?id=1159给一个字符串添加字符,使字符串变成回文串,很简单的一个dp,不过还是MLE了一次,改成了滚动数组就可以了View Code 1 const int N = 5010; 2 int dp[2][N]; 3 char str[N]; 4 int main() 5 { 6 int i,j,n; 7 //freopen("data.txt","r",stdin); 8 while(scanf("%d",&n) != EOF) 9 {10 getcha 阅读全文
posted @ 2012-08-20 11:08 AC_Girl 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1319题意:给出一个容器的尺寸 a * b,在这个容器里装直径是单位长度的管子,有两种装的办法,一种是题目里面给的图 a,图 b,另一种是图 c,图 d,问最多可以装多少个管子,前两个图那样的很好计算,管子的数目就是 floor(a) * floor(b) (floor(x)是指不大于 x 的最大正整数,如 floor(2.8) = 2),如果是后面两组(交错装)那么就要考虑,是 a 为行数,还是 b 为行数两种情况了,后面两种方法画图可以知道,除了第一行管子的高度是 1,其他行的高度为 2 * ( sqrt(3) / 4), 如果宽 阅读全文
posted @ 2012-08-19 16:37 AC_Girl 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 半平面交,求解多变形内核的问题 感觉一个讲的很清晰的链接 http://www.cnblogs.com/ka200812/archive/2012/01/20/2328316.html首先说一下什么是多边形内核,内核是一个点集,该集合内的任意一个点与简单多边形边界上一点的连线都在简单多变形内,也可以说集合内任意一点都可以看见该多边行内的任何一个地方。求解多边形内核的方法是用多边形的两个顶点组成的线段不断的去切割多边形,切割到最后剩下的,就是内核区间了。一条直线可以将平面切割成两个区域,假设直线方程为ax+by+c==0,那么,两个平面可分别表示成ax+by+c>=0 和 ax+by+c& 阅读全文
posted @ 2012-08-18 21:35 AC_Girl 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=2121很很简单的题,权当用map 做着玩吧,就是给出英文的数,然后让你转换成数字,注意当是 百,千,百万的时候的处理,不为别的,就为了那个打表,打的眼晕,最后还是打错了,交了两次才发现,汗View Code 1 #include<iostream> 2 #include<sstream> 3 #include<cstdio> 4 #include<cstring> 5 #include<algorithm> 6 #include<string> 7 #includ 阅读全文
posted @ 2012-08-18 11:28 AC_Girl 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3286假设从 1 到 m的数中 含有 0 的个数为 numm,从 1 到 n 含有 0 的个数为 numn 那么要求 从 n 到 m 的数里含有 0 的个数 ans = numm - numn + sum(n 里面含有 0 的个数)对于给的数N,从右到左枚举每一位,当枚举第 i 位时,它左边的数记为 left,从它自身到最后记为 right, 1 若第 i 位为 0,说明 N里面本身有一个0 , 求出比 left 0 right(— 0 —) 小的数+1 加至 sum ; 2 若第i 位不为0,则 N 该位没0,那么小于 left 0 阅读全文
posted @ 2012-08-18 11:13 AC_Girl 阅读(202) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页