08 2012 档案

摘要:题解原文请戳这里这题完全不会。。看了题解好像似懂非懂。。。先把题解弄这里来,慢慢研究题意:GG有两张奖券,面额分别为V1、V2,准备给MM买礼物。当天是MM生日,所以MM 还可以免费得到一份礼物。礼物有价格和幸福值两个参数,并且礼物分为特殊礼物和普通礼物,特殊礼物是一定要全部到手的。两张奖券不可以合并使用,一种礼物也只能买一次。问MM最大幸福值是多少,如果特殊礼物不能全部得到MM会不高兴,幸福值为-1。分析:这是一个二重01背包,因为还有免费的礼物,故还要增加一维用f[v1][v2][s]表示奖券V1,V2分别使用v1,v2时,且状态为s时候(s=1表示已经免费得到一份礼物了,s=0表示还木有 阅读全文
posted @ 2012-08-25 15:21 z.arbitrary 阅读(531) 评论(0) 推荐(0)
摘要:今天决定刷图论了,做到至少比赛的时候图论的题能够写出来。。。POJ-1062-昂贵的聘礼用Dijkstra即可。。因为这题可以抽象出边上有权值,点上也有权值。。我们可以先忽略点上的权值,用Dijkstra算出1~n的最短路,最后再加上点上的权值,然后求所有点的最小值即可。。否则把点上的权值也带入求最小值,会wa。。。我被wa了N次了。。。这题有等级制度,故需要枚举区间进行多次最短路。View Code #include <cstdio>#include <cstring>#include <iostream>#define MAXN 105#define M 阅读全文
posted @ 2012-08-18 16:53 z.arbitrary 阅读(418) 评论(5) 推荐(0)
摘要:多重背包二进制优化模版先上int dp[N];void OneZeroPack( int v , int n , int w ){ for( int i = v ; i >= n ; i-- ) dp[i] = max( dp[i] , dp[i-n] +w ) ;}void CompletePack( int v , int n , int w ){ for( int i = n ; i <= v ; i++ ) dp[i] = max( dp[i] , dp[i-n] +w ) ;}void MultipliePack( in... 阅读全文
posted @ 2012-08-17 21:27 z.arbitrary 阅读(189) 评论(0) 推荐(0)
摘要:下面文章抄袭到hello kity的。。原文章地址请戳这里/*******************************hello kity********************************************/一直弄不明白单调队列是什么,在网上也找不到易懂的介绍。最后结合别人博客上的介绍和程序看才理解是怎么回事。我们从最简单的问题开始:给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k.要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0,1,...,N-1问题的另一种描述就是用一个长度为k的窗在整数数列 阅读全文
posted @ 2012-08-16 00:07 z.arbitrary 阅读(343) 评论(0) 推荐(0)
摘要:本内容摘自xieshimao牛,内容连接为:请戳这里1、本原勾股数:概念:一个三元组(a,b,c),其中a,b,c没有公因数而且满足:a^2+b^2=c^2首先,这种本原勾股数的个数是无限的,而且构造的条件满足:a=s*t,b=(s^2-t^2)/2,c=(s^2+t^2)/2其中s>t>=1是任意没有公因数的奇数!由以上概念就可以导出任意一个本原勾股数组。2、素数计数(素数定理)令π(x)为1到x中素数的个数19世纪最高的数论成就就是以下这个玩意儿:lim(x->∞){π(x)/(x/ln(x))}=1数论最高成就,最高成就!!!有木有!!!3、哥德巴赫猜想(1+1)一个大 阅读全文
posted @ 2012-08-14 10:42 z.arbitrary 阅读(395) 评论(0) 推荐(0)
摘要:看了一晚上hh大牛的划分树,总算看懂了是怎么回事了。。hh大牛的博客,请戳这里划分树是快排+线段树先来一模版 POJ-2104-K-th Number题意:给出n,m,n代表N个数,m代表查询的次数,再输入m行l,r,k;求在[l,r]区间中第k小的数;#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 100050#define lson l,mid,rt<<1#define rson mid+1,r,rt< 阅读全文
posted @ 2012-08-14 00:25 z.arbitrary 阅读(286) 评论(0) 推荐(0)
摘要:树状数组模版int lowbit(int x) { return x&(-x); } void add(int pos,int val)////如果要把a[i]增加v,可以通过调用如下函数实现 { while(pos <= MAXN) { tree[pos] += val; pos += lowbit(pos);//pos+lowbit(x)可以理解变成了x的父亲 } } int read(int x)//前x项和 { int s=0; while(x>0) { s += tree[x]... 阅读全文
posted @ 2012-08-12 18:22 z.arbitrary 阅读(225) 评论(0) 推荐(0)
摘要:线段树+二分 阅读全文
posted @ 2012-08-10 19:56 z.arbitrary 阅读(170) 评论(0) 推荐(0)
摘要:今天晚上cl叫我写的,我打开一看,一开始没什么思路,感觉很像DP,后来他说就二分就可以了。然后我突然想到这不就是四省赛热身赛的题么,而且白书上也有写题解。。o(︶︿︶)o 唉,题没做还是不熟悉。因为是把天数化成连续的几段,所以把答案进行二分查找,每个答案可以用线性的时间判断对错,因此总的时间是nlogn。#include <cstdio>#include <cstring>#include <iostream>#define MAXN 100050using namespace std;int g[MAXN];int s;int N,M;bool solve 阅读全文
posted @ 2012-08-04 00:55 z.arbitrary 阅读(182) 评论(0) 推荐(0)