07 2012 档案

noi 2009 植物大战僵尸 网络流
摘要:网络流经典题#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<cstdlib>using namespace std;#define MAXN 610#define MAXM 730000#define INF 123456789struct node_connect{ int num; node_connect *next;};struct node_dinic{ int u,remain; node_dinic *next,*inv 阅读全文

posted @ 2012-07-25 22:01 myoi 阅读(358) 评论(0) 推荐(0)

noi 2005 维护数列 平衡树
摘要:非常恶心的一道数据结构题。 1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 #include<cstdio> 5 using namespace std; 6 #define MAXN 510000 7 #define INF 9876 8 struct node 9 { 10 node *left,*right,*father; 11 int value,size,sum,ml,mr,max; 12 bool change,rev; 13 }; 14 node *root 阅读全文

posted @ 2012-07-23 20:52 myoi 阅读(659) 评论(0) 推荐(0)

marcool 0200 互质二元组 数论
摘要:题意:给出N个整数A1,A2,……,AN,统计满足i<j且Ai和Aj互质的二元组(i,j)的数量。对于100%的数据,1≤N≤100000,1≤Ai≤1000000。思路: 因为Ai比较小 所以我们用num[i]统计n个数中i的个数然后先求出 分别以2~1000000为公约数的有多少对再求出以2~1000000为最大公约数的有多少对最后用n*(n-1)/2减去总对数 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #define 阅读全文

posted @ 2012-07-21 17:57 myoi 阅读(296) 评论(0) 推荐(0)

noi 2008 志愿者招募 费用流
摘要:申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者。经 过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人。 布布通过了解得知,一共有M 类志愿者可以招募。其中第i 类可以从第Si 天工作到第Ti 天,招募费用是每人Ci 元。新官上任三把火,为了出色地完成自己的工作,布布希望用尽量少的费用招募足够的志愿者,但这并不是他的特长!于是布布找到了你,希望你帮他设计一种最 优的招募方案。膜拜:gyh神牛 1 #include<iostream> 2 #include<cmath& 阅读全文

posted @ 2012-07-19 19:39 myoi 阅读(533) 评论(0) 推荐(0)

noi 2003 逃学的小孩 树型DP
摘要:思路:本题就是求在树上 MAX(dis[A,B]+MIN(dis[A,C]+dis[B,C]))可以证明AB是树上最长链 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 #define MAXN 200001 7 struct node 8 { 9 int num; 10 long long weight; 11 node *next; 12 }; 13 node *graph[MAXN], 阅读全文

posted @ 2012-07-18 18:07 myoi 阅读(461) 评论(0) 推荐(0)

noi 2007 项链工厂 线段树
摘要:1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 using namespace std; 6 #define MAXN 500001 7 struct node 8 { 9 int left,right,left_color,right_color,part; 10 bool mark; 11 }tree[4*MAXN]; 12 int color[MAXN]; 13 int rev,delta,n,m,cur_color; 14 vo 阅读全文

posted @ 2012-07-17 21:05 myoi 阅读(435) 评论(0) 推荐(0)

noi 2007 社交网络 最短路
摘要:题意:大水题一道 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 #define MAXN 101 7 int map[MAXN][MAXN]; 8 long long path[MAXN][MAXN]; 9 int c[MAXN][MAXN][MAXN];10 double ans[MAXN];11 int n,m;12 void solve()13 {14 memset(ans,0,si 阅读全文

posted @ 2012-07-17 16:39 myoi 阅读(454) 评论(0) 推荐(0)

noi 2008 设计路线 动态规划
摘要:题意:Z 国坐落于遥远而又神奇的东方半岛上,在小Z 的统治时代公路成为这里主要的交通手段。Z 国共有n 座城市,一些城市之间由双向的公路所连接。非常神奇的是Z 国的每个城市所处的经度都不相同,并且最多只和一个位于它东边的城市直接通过公路相连。Z 国的首都是Z 国政治经济文化旅游的中心,每天都有成千上万的人从Z 国的其他城市涌向首都。 为了使Z 国的交通更加便利顺畅,小Z 决定在Z 国的公路系统中确定若干条规划路线,将其中的公路全部改建为铁路。 我们定义每条规划路线为一个长度大于1 的城市序列,每个城市在该序列中最多出现一次,序列中相邻的城市之间由公路直接相连(待改建为铁路)。并且,每个城市最多 阅读全文

posted @ 2012-07-17 10:23 myoi 阅读(636) 评论(0) 推荐(0)

noi 2009 管道取珠 动态规划
摘要:这是一道非常精致的递推问题,程序非常短,但很难想到。问题的关键是对目标的转化以及递推状态的设计。首先对 ∑ai^2进行转化,将其这样理解:用A和B分别表示一种取珠的方法,将结果相同的两种取珠方法(不管这两种取珠方法本身是否相同)记为(A, B),不难发现∑ai^2就是所有这样的(A, B)的对数。设状态f(a1, b1, a2, b2),如果f(a1, b1, a2, b2) = K,表示存在K对不完全相同的(A, B),使得A方法已经取出了第一个串的前a1个字符及第二个串的前b1个字符,B方法已经取出了第一个串的前a2个字符以及第二个串的前b2个字符,同时A方法与B方法得到的结果相同。显然, 阅读全文

posted @ 2012-07-16 20:33 myoi 阅读(1114) 评论(0) 推荐(0)

noi 2009 二叉查找树 动态规划
摘要:思路:先把权值离散化按数据值排序sum[i]为前i个节点频度和dp[i][j][w]表示把节点[i,j]合并成一颗根节点权值不小于w的子树所需的访问代价与修改代价的最小和dp[i][j][w]=min(dp[i][k-1][w]+dp[k+1][j][w]+sum[j]-sum[i-1]+K,dp[i][k-1][a[k].weight]+dp[k+1][j][a[k].weight]+sum[j]-sum[i-1](a[k].weight>=w))(i<=k<=j)ans=dp[1][n][1]; 1 #include<iostream> 2 #include& 阅读全文

posted @ 2012-07-16 08:12 myoi 阅读(502) 评论(0) 推荐(0)

noi 2009 诗人小G 动态规划
摘要:思路:设前i个句子和+i为sum[i]dp[i]表示以第i个为结尾的最小不协调度dp[i]=min(dp[j]+abs(sum[i]-sum[j]-l)^p);我们发现y=a1+abs(x-b1)^p和y=a2+abs(x-b2)^p至多有一个交点所以可以用斜率优化时间复杂度nlogMAXL 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 #define MAXN 110001 7 #def 阅读全文

posted @ 2012-07-15 22:04 myoi 阅读(998) 评论(0) 推荐(0)

noi 2009 变换序列 贪心
摘要:题意: 1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 #include<set> 5 #include<cstdio> 6 using namespace std; 7 #define MAXN 20000 8 int n; 9 int l,r;10 int ans[MAXN];11 bool use[MAXN];12 pair<int,int> part[MAXN];13 int a[MAXN];14 set<int> opt[MAX 阅读全文

posted @ 2012-07-11 22:17 myoi 阅读(261) 评论(0) 推荐(0)

noi 2010 超级钢琴 划分树
摘要:题意:小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。 这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。 一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的,当且仅当这两个超级和弦所包含的音符集合是相同的。 小Z决定创作一首由k个超级和弦组成的乐曲,为了使得乐曲更加动听,小Z要求该乐曲由k个不同的超级和弦组成。我们定义一首乐曲的美妙度为其所包含的所有超级和弦的美妙度之和。小Z想知道他 阅读全文

posted @ 2012-07-11 21:24 myoi 阅读(497) 评论(0) 推荐(0)

noi 2010 航空管制 贪心
摘要:【问题描述】世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生。最近,小X就因为航空管制,连续两次在机场被延误超过了两小时。对此,小X表示很不满意。在这次来烟台的路上,小X不幸又一次碰上了航空管制。于是小X开始思考关于航空管制的问题。假设目前被延误航班共有n个,编号为1至n。机场只有一条起飞跑道,所有的航班需按某个顺序依次起飞(称这个顺序为起飞序列)。定义一个航班的起飞序号为该航班在起飞序列中的位置,即是第几个起飞的航班。起飞序列还存在两类限制条件:第一类(最晚起飞时间限制):编号为i的航班起飞序号不得超过ki;第二类(相对起飞顺序限制):存在一些相对起飞顺序限制(a, b 阅读全文

posted @ 2012-07-09 11:58 myoi 阅读(710) 评论(0) 推荐(0)

poj 2104 K-th Number 划分树
摘要:题意:给一个数列a[1~n],有m个询问每次询问 [l,r]中第k小的数思路:划分树 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 using namespace std; 7 #define MAXN 100001 8 struct node 9 {10 int val[MAXN],num[MAXN];11 }tree[20];12 int n,m;13 int sorted[ 阅读全文

posted @ 2012-07-08 21:47 myoi 阅读(211) 评论(0) 推荐(0)

导航