摘要: 题意: 给出 n 个人,知道了每个人的成绩,和每个人想要的奖学金,要求从这些学生中找出 m (奇数)个人满足选出的人的成绩的中位数最大,且这些人总的奖学金需求要 小于等于总的奖学金数。分析: 可以先对学生按成绩降序排序,然后从位置m/2+1 到 N - m/2枚举,中位数 q[i],因此对于枚举每个中位数只要求出左面最小的 m/2个数,和右面最小的 m/2 个 数,只要 left[i-1]+q[i].money+rght[i+1] <=F ,i 即为要找的学生。 left[i] 表示从 i 个位置向左的序列中最小的 m/2个数之和,对于每次出现新的 i 值,要求出 m/2 个最小的数这个 阅读全文
posted @ 2012-08-07 20:56 'wind 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 题意: 从小到大排序分析:堆排序讲解:View Code “堆”定义 n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): (1)ki<=k(2i)且ki<=k(2i+1)(1≤i≤ n),当然,这是小根堆,大根堆则换成>=号。//k(i)相当于二叉树的非叶结点,K(2i)则是左孩子,k(2i+1)是右孩子 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树: 树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。 大根堆和小根堆:根结点(亦称为堆顶)的关 阅读全文
posted @ 2012-08-07 16:54 'wind 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 题意: 有 N 个人分属于两个帮派,对应两种操作: A X Y 询问x,y 是否属于一个帮派,或两者关系不能确定。 D X Y X和Y 分属不同帮派分析: 感觉就是简化版的食物链...方法一: 加一个数组 r[i] r[i] = 0 表示 i 与祖先属于同一个帮派 r[i] = 1 表示 i 与祖先属于不同帮派View Code #include<stdio.h>#include<string.h>int f[100005];int r[100005];int find(int x){ int s; if(f[x]==-1) return x; else s... 阅读全文
posted @ 2012-08-07 15:40 'wind 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一棵有 n 个节点并以 1 为根节点的树, 一开始每个节点有 1 个苹果,定义两种操作 Q i 询问以 i 为根节点的树上有多少个苹果。 C i 如果i 这个节点上有 1 个苹果就把它摘下,否在就在这个节点装上一个苹果。分析: 可以把树上的每个节点对应到树状数组中, 对应的时候,越靠近根节点的节点管辖的数组区间范围越大, 可以利用深搜,根据访问的时间戳的顺序,依次为每个节点标记在树状数组中的下限 l[i], 因为要使得越靠近叶子节点的节点管辖区间越小,可以利用深搜回溯的特点,即越靠近叶子的节点,回溯到本身的时间差越短,这个时间差即为该节点覆盖的数组区间长度,因此每个节点覆盖的数组上. 阅读全文
posted @ 2012-08-07 13:16 'wind 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题意: 一组造作: 0 n 创建一个 n*n 的矩形。 1 x y num 在(x,y)位置加上值 num。 2 l b r t 输出矩阵 l<=x<=r,b<=y<=t 内所有数值和。 3 退出。分析: 二维树状数组。#include<stdio.h>#include<string.h>int a[1025][1025];int n;int lowbit(int x){ return (x)&(-x);}void add(int x,int y,int num){ while(x<=n) { int ty=y; while(ty& 阅读全文
posted @ 2012-08-07 11:11 'wind 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题意: 模拟手机的输入,手机每个按键负责一定数量的字符,知道了一些单词,和这些单词的使用频率,给出一个按键的顺序,问每个数字所在位置对应的最大可能的输入单词是哪个,如果找不到 输出‘MANUALLY‘分析:建立字典树,把单词存起来,并累加每个字母使用的频率,每出现输入的一个数字,找出那个数字上对应的字母所在位置频率最大的单词。#include<stdio.h>#include<string.h>#define clr(x)memset(x,0,sizeof(x))char res[105];char tmp[105];int la;struct node{ int co 阅读全文
posted @ 2012-08-07 10:43 'wind 阅读(163) 评论(0) 推荐(0) 编辑