上一页 1 2 3 4 5 6 ··· 8 下一页
2013年9月7日
摘要: 链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4222题意:定义F(x) = max(Si(x)),i= 1...n.x的范围为[0, 1000].Si(x)=ai x2+ bi x + ci .思路:F(x)是一个单峰函数,用三分法求极值,注意下精度。#include#includeusing namespace std;const int maxn=10000+5;int a[maxn],b[maxn],c[maxn] 阅读全文
posted @ 2013-09-07 16:09 ∑求和 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1282题意:Solve the equation:p*e-x+q*sin(x) +r*cos(x) +s*tan(x) +t*x2+u= 0. where0 =0,F(1)#include#define F(x) (p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*(x)*(x)+u)const double eps=1e-14;int main( 阅读全文
posted @ 2013-09-07 11:01 ∑求和 阅读(284) 评论(0) 推荐(0) 编辑
2013年9月4日
摘要: 链接:http://poj.org/problem?id=2155题意:给一个矩阵,元素初始值都是0,对于一次修改操作,把要修改的矩阵中的0变为1,1变为0,给出要修改矩阵的左下角和右上角的位置。对于每个查询操作,输出矩阵某个位置上的值。思路:二维的树状数组,有个学习的链接:http://www.java3z.com/cwbwebhome/article/article1/1369.html?id=4804这道题要修改的是一个区间,求的是一个点,和最基本的树状数组不同。这里有个链接:http://hi.baidu.com/czyuan_acm/item/b14bff6ab6ffd093c5d2 阅读全文
posted @ 2013-09-04 20:42 ∑求和 阅读(318) 评论(0) 推荐(0) 编辑
2013年8月23日
摘要: 链接:http://poj.org/problem?id=3928题意:一条街上有n个人,每个人都有一个不同的值 a ,进行要求选3个人,1个裁判,2个选手,满足:裁判必须住在选手中间,裁判的值也要在选手中间。求能有多少种比赛。思路:枚举第 i 个人当裁判,设 a0 到 ai-1 中,有 bi 个数比 ai 小,ai+1 到 an-1中有 di 个数比 ai 大,那么比赛种数为 b[i]*(n-i-1-d[i])+(i-b[i])*d[i].要求 bi 和 di ,可以采用树状数组。ai 的最大值为100000,那么BIT的范围是1-100000,A[100000]的每个数 A[i] 代表一个 阅读全文
posted @ 2013-08-23 15:05 ∑求和 阅读(208) 评论(0) 推荐(0) 编辑
2013年8月21日
摘要: 链接:http://poj.org/problem?id=2828题意:n个人排队,每个人有一个权值,给出他们插队的位置,求最后的顺序,按顺序输出权值。思路:看到这题目,我想这货和线段树什么关系啊,这货怎么能用线段树来做呢。诶,大千世界无奇不有,线段树就是这么的神奇,叹叹!!!闲话少说,走起。逆着想,最后一个人插队后, 他的位置就是确定了下来的。倒数第二个人插的话,位置在最后一个的前面,最后一个对他无影响,位置在最后一个后面,则最后一个对他有影响,他必须往后移一位。线段树叶子节点保存的是这个位置上的空位数,初始化为1,如果这个位置上有了一个数,那么减一。但是我不明白在查找的时候,为什么用当前人 阅读全文
posted @ 2013-08-21 20:07 ∑求和 阅读(220) 评论(0) 推荐(0) 编辑
2013年8月20日
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607题意:前一阵子做的,题意忘记了,大体就是求树的直径,就是树的最长路的长度。思路:树的直径有这么一个算法,从树上任意一点出发,找一条最长路,终点为A,再从A点出来,找一条最长路,终点为B,那么树的直径就是AB的长度。求最长路可用dfs或者spfa来写。#include#include#include#include#includeusing namespace std;const int maxn=100000+5;const int INF=0x3f3f3f3f;//不能随便写,不然后面的mems 阅读全文
posted @ 2013-08-20 21:13 ∑求和 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795题意:一个高h宽w的木板,要往上面贴字条。每条字条的高度都为1,长度为wi,贴的时候字条要尽量往左上方贴。求每条字条贴在哪个位置,比如左上方第一条的位置为1,如果贴不下的话输出-1.思路:想不到这可以用线段树来做。这题有个关键是字条的高度都是确定为1的,所以可以以木板的高h来建一个[1,h]的树。每个叶子节点对应的是位置,保存的是可以使用的长度,初始化为w,如果在某个位置上贴上一个字条的话,相应的叶子节点的值要减去这个wi,完成更新。在查找的时候,二分查找,找的是最大值的位置插入,这里有点不理解。 阅读全文
posted @ 2013-08-20 20:55 ∑求和 阅读(288) 评论(0) 推荐(0) 编辑
2013年8月19日
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:给一个0-n-1的排列,这个排列中的逆序数为数对 (ai, aj)满足 i aj的个数。依次把第一个数放到排列的末尾会得到另外n-1个排列,求这n个排列中的最小的逆序数。思路:关键是要把第一个排列的逆序数求出来,后面的排列可以递推出来。假如第一个逆序数为s0,当把a0从首位移到末位时,新得到的s1应该是在s0的基础上加上比a0大的数的个数,减去比a0小的数的个数。由于这一串数是一个0-n-1的排列,所以比a0大的数的个数为 (n-1)-(a0+1)+1=n-a0-1,比a0小的数的个数为 . 阅读全文
posted @ 2013-08-19 21:52 ∑求和 阅读(751) 评论(0) 推荐(0) 编辑
摘要: 链接:http://codeforces.com/problemset/problem/4/D题意:有一张卡片,若干张信封,它们有个长和宽。要求,找到数量最多的一串信封,这一串信封满足信封的长和宽都是严格递增的,而且卡片的长和宽要比最小的信封小。思路:先对长度排个序,然后求宽度的最长上升子序列。要处理好长度相等的信封。#include#include#include#include#include#include#includeusing namespace std;const int maxn=5005;int dp[maxn],c[maxn];struct en{ int w,h,f... 阅读全文
posted @ 2013-08-19 21:06 ∑求和 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 链接:http://poj.org/problem?id=1631题意:最长上升子序列。复杂度为O(n*logn).思路:这道题只能用nlogn的算法,n^2的话会卡掉。下面这两个个链接介绍nlogn的算法讲的还可以。http://www.cnblogs.com/celia01/archive/2012/07/27/2611043.htmlhttp://blog.sina.com.cn/s/blog_4b1e4fe9010098af.html代码如下:#include#include#include#include#include#include#includeusing namespace 阅读全文
posted @ 2013-08-19 15:51 ∑求和 阅读(184) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页