
算法题目
wyjvip333
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[转帖]6个变态的Hello world
下面的六个程序片段主要完成这些事情:输出Hello, World (1)nb的宏替换[code="c"]#define _________ }#define ________ putchar#define _______ main#define _(a) ________(a);#define ______ _______(){#define __ ______ _...原创 2010-02-02 15:00:46 · 121 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.12搏击俱乐部
1,题意:n个成员两两决斗,给出胜负关系.问:合理安排决斗次序,成员i是否有可能胜出?2,解决:动态规划0,...,n-1,0,...,n-1meet[2*n][2*n] 胜出的条件meet[i][i+n]相遇初始:meet[i][i+1]=1,相邻两个人可以相遇.g[i][j]=1,表示i可以战胜j那么meet[i][k]充要条件为:meet[i][j]&&meet[...原创 2010-02-21 14:45:02 · 146 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.13石子游戏
1,输入:w,b(白,黑数目)抽到白拿出,抽到黑放进去,最后抽到白获胜.要求:第一个抽获胜的概率.2,解决:递归公式还有i个白获胜的概率win[i]=p(白)*(1-win[i-1])+p(黑)*(1-win[i])初始win[0]=03,实现代码[code="cpp"]#include using namespace std;int cnt; //测试...原创 2010-02-21 16:01:38 · 168 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.15构造序列
1,题意:构造长度为N的01序列输入M个命令(B,E,T)(起点1)要求位置B到E至少有T个1.输出:1的个数和位置2,解决:贪心算法.按照E从小到大排序,从每个E的最后向前放入点,保证点被最多的命令覆盖.3.实现代码[code="cpp"]#include using namespace std;const int maxn=5010;const ...原创 2010-02-21 18:05:29 · 121 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.16小树
1,题意.树根指定为0,找出根的子树节点,保证距离/边数的均值最大.输出最大值.2,解决:对每棵子树做一次dfs即可.3.实现代码[code="cpp"]#include #include using namespace std;const int maxn=1001;struct node{ int v;//孩子结点 i...原创 2010-02-21 18:34:58 · 132 阅读 · 0 评论 -
水仙花数
1,题意:找到m到n之间的水仙花数.(12010-02-22 22:54:35 · 141 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.1昵称
1,题意:输入n(ncnt; while(cnt--) { cin>>n; memset(hashTable,0,sizeof(hashTable)); while(n--) { cin>>str1; strcpy( str2, strlwr(str1...原创 2010-02-23 12:17:16 · 199 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.6最难的任务
1,题意:实质求顶点1到n的最短路径.注意:有重边的可能,选择最小权值2,解决:dijkstra算法.3,实现代码:[code="cpp"]#include using namespace std;const int hashCnt=6000;const int maxN=201;const int inf=1000000;int graph[maxN]...2010-02-23 16:50:24 · 119 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.2三角形
1,题意等腰直角三角形,斜边位于x轴.输入一系列的直角顶点,求这些三角形覆盖的面积总和.2,解答:三角形有相离,包含,相交三种情况.3,实现代码2010-02-23 23:37:14 · 125 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.7三只小猪
1,题意:m个房子,n只小猪,(n>=m),房间保证住满,问共有多少种方案?2,解答:动态规划d[i][j]:j只小猪住i个房子的方案.初始化:d[i][j]=0,d[1][j>=1]=1;状态转移:d[i][j]=1;(i==j)d[i][j]=d[i-1][j-1]+d[i][j-1]*i;(i=0&&!a[n];n--); int i; ...2010-02-24 11:59:40 · 232 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.11美味的蛋糕
1,题意:输入矩阵维数n,枣的个数m2,输出:是否可以将矩阵分成m个方阵,每个方阵含有一个枣.3.解答:向下向右扩展,注意一个枣的情况需要回溯.4,实现代码[code="cpp"]#include using namespace std;#define NUM 100int cnt; //测试数目int n;//矩阵维数int m;//枣的个数...原创 2010-02-21 13:58:09 · 262 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.18最长数列
1,题意给出n个数,让你利用这些书构造出一个最长的生成序列.要求序列是一个等差数列或等比数列或等幂数列2,解答3,代码[code="cpp"]#include #include using namespace std;typedef long long LL;map m; //保存元素LL d[100]; //输入序列int cnt;//测试...原创 2010-02-20 12:33:08 · 143 阅读 · 0 评论 -
是否存在i,使得n*n矩阵的i行都是1,i列都是0(交点除外)
要求:复杂度为O(n)问题分析:如果存在i,那么i有且仅有一个.算法:(1)寻找这个可能存在的i.从a[1][1]出发,判断当前元素是否为0.如果不是向右前进,直到越界,此时1就是唯一可能存在的解.如果a[1][k]==0从a[k][k]出发,判断当前元素是否为1.如果不是向下前进,直到越界,此时k就是唯一可能存在的解.如果a[k][m]==1...原创 2010-02-05 16:21:41 · 323 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.4 最小值
1.题意:s[cnt_s],t[cnt_t] cnt_t>=cnt_s.返回t-s的绝对值和的最小值.(cnt_s个元素)2.思路:动态规划d[i][j]:表示t的前j+1个数和s的前i+1个数匹配,得到的最小值.转移方程:d[i][j]=d[i-1]d[j-1]+abs(s[i]-t[j]); i==jd[i][j]=min(d[i][j-1],d[i-1][j-...原创 2010-02-06 21:16:20 · 112 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_1.4 旅馆
1,题意:字符串匹配一个待匹配字符串M("*"0或多个任意字符,"?"1个任意字符),一个验证字符串T长度不超过50输出:符合条件的个数2,思路:动态规划d[i][j]:表示M的前i个字符和T的前j个字符匹配的结果.转移方程:d[i][j]=d[i-1][j-1] t[j]=='?'d[i][j]=d[i][j-1]|d[i-1][j] t[j]=='*...原创 2010-02-06 22:21:37 · 137 阅读 · 0 评论 -
平均要取到第几个随机数才会让序列第一次下降
[转载][url]http://www.matrix67.com/blog/[/url]1,考虑这么一个游戏:不断在区间 [0, 1] 中概率均等地选取随机数,直到所取的数第一次比上一个数小。那么,平均需要抽取多少个随机数,才会出现这样的情况?答案:记 Pi 为第 i 次才取到小于前一个数的数的概率。则我们要求的就是 [table]|P1 + 2 * P2 + 3 * ...原创 2010-12-15 12:05:21 · 146 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.8 基本的图问题
1,题意:给定一个整数序列1到n.给m个连边的命令(s,e):表示:第s个到第e个之间的最大和最小数连起来.k个询问:(x,y)点x和y是否连通.2,解题思路:(1)RMQ问题,求出s和e(2)并查集:Union(s,e) (3)结果:Find_Set(x)==Find_Set(y)?3,严重超时??????[code="cpp"]#include ...2010-02-09 17:56:59 · 109 阅读 · 0 评论 -
童年的回忆:字母金字塔
1,论坛上有个问到这个蛋疼的题目,然后各位大神各显神通.(1)递归实现,tmp函数对递归常量的巧妙封装.[code="cpp"]#include using namespace std;const int LETTER=0x41;void z2a(int m){ if(m...原创 2010-02-11 15:55:37 · 167 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.21 Turan图
1,题意:输入:顶点数(n),阶数(k)要求:图中不能含有任何一个k阶完全图.输出:图中最多的边数.2,解决:将n个顶点尽可能均匀的分成k-1份,在任意两个不属于一个子集的顶点间连边,同一个子集内的顶点之间没有边.3,实现代码[code="cpp"]#include using namespace std;long group[1000]; //...原创 2010-02-19 20:18:16 · 269 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.20 BOB
1,题意:将一个字符串首尾连接,找出字典排序最小的字符串.2,解决:初始化连个位置p=0,q=1,往后扫描tp,tq分别记录扫描位置.如果s[tp]s[tq],那么p=tp+1;同时保证q大于p,扫描一次得到的p,既是开始的位置.3,实现代码[code="cpp"]#include using namespace std;#define MAX 20010 ...原创 2010-02-19 20:42:04 · 187 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.19原子能转变
1,问题:u+a1y1+a2y2+a3y3+a4y4=v+a1z1+a2z2+a3z3+a4z4y1+y2+y3+y4=z1+z2+z3+z4;判断是否有整数解.2,解答:令x1=y1-z1,...问题转化为(a1-a4)x1+(a2-a4)x2+(a3-a4)x3=v-u是否有整数解定理:a1x1+...+anxn=N,其中a1...N都是整数,n>=2.a1..an都不等于...原创 2010-02-20 12:32:32 · 163 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_1.3冲突
1,题意:输入字符串,有几个关系">",">=","!=","="检查:有无冲突2,解决:可以将关系转化为"原创 2010-02-26 11:26:57 · 110 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_1.7木棒
1,题意:n根(n为奇数)木棒,有n-1/2对长度相等,找出长度惟一的那个长度.2,解决:利用 a xor b xor b=a.3,实例代码:[code="cpp"]#include using namespace std;int ans;int main(){ int cnt; int n; int len; cin >...原创 2010-02-26 12:08:28 · 125 阅读 · 0 评论 -
寻找丑数
1,题意:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。返回第n个丑数.2,分析: //类似于筛法寻找素数创建一个数组,里面的数字是排好序的丑数。里面的每一个丑数是前面的丑数乘以2、3或者5得到的。我们假设数组中已经有若干个丑数,排好序后存在数组中。现在我们来生成下一个丑...原创 2010-08-26 10:57:18 · 156 阅读 · 0 评论 -
字符串的逆序
1,老题目了,给个自己的版本.[code="c++"]#include #include using namespace std;void Reverse(char* b, char* e){ if ((b == NULL) || (e == NULL)) return ; while (b < e) { ...原创 2010-08-26 11:23:25 · 98 阅读 · 0 评论 -
找出数组中两个只出现一次的数字
1,题意:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。2,分析:(1)各个元素依次异或,得到两个数字异或的结果 val.(2)找到val的一个bit为1的位.(3)根据上述比特位1或0将原来的数组分成两组.(4)每组异或,即可得到要求的数.3,实例代码:[code...原创 2010-08-26 13:13:04 · 125 阅读 · 0 评论 -
输出1到最大的N位数
1,题意:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。2,用递归可以比较简短地实现:[code="c++"]#include #include using namespace std ;void OutPut(char* number){ bool isBegin = true; ...原创 2010-09-01 14:23:02 · 125 阅读 · 0 评论 -
称球问题
[节选][url]http://mindhacks.cn/2008/06/13/why-is-quicksort-so-quick/[/url]1,问题:12个小球,其中有一个是坏球。有一架天平。需要你用最少的称次数来确定哪个小球是坏的并且它到底是轻还是重。 2,分析:(1)坏球可能是12个球中的任意一个,这就是12种可能性;而其中每种可能性下坏球可能轻也可能重。于是“坏球是哪...原创 2010-12-16 14:13:47 · 211 阅读 · 0 评论 -
不限数目的1、5、10、20、50面额的纸币,有多少种方法凑出100元
1,有不限数目的1、5、10、20、50面额的纸币,有多少种方法凑出100元 解答:实质就是暴力枚举[code="c++"]#include#includeusing namespace std;const int Len = 5;int ans = 0;int m[Len] = {50, 20, 10, 5, 1};int total[Len] = {...原创 2010-09-21 17:22:41 · 3357 阅读 · 0 评论 -
一些常见的海量数据处理题目
很长时间没有更新blog了,先唠叨两句.这段时间发生了几件不大不小的事吧.(1)工作暂时签tencent了,会不会有变数谁也不知道.也许通向网易的路还没有完全堵死.(2)javaeye一度居然真的上不去了,于是正在考虑是否该有个新家了.(3)知道了云风,对网易更加的有爱了.言规正传,开始正式的内容.1,给定a、b两个文件,各存放50亿个url,每个url各占64字节...原创 2010-11-25 11:23:55 · 135 阅读 · 0 评论 -
输入是一个n*m的矩阵,要求找到其中最大的全0字矩阵
1,分析:这个题其实就是最大子矩阵,只不过把0的权设为1,其他的权设为负无穷,这样求出来的肯定是最大的全是0的矩阵,仔细看一下我得做法,用的是动态规划。2,实例代码:[code="C++"]#include const int Max_Int = 0xfffffff;int map[301][301],opt[301];int n, m, maxn;vo...原创 2010-11-25 12:16:23 · 1264 阅读 · 0 评论 -
给出前序和中序序列,输出后序序列
1,给出一个实现代码:[code="c++"]#include #include void outputPro(char* pre, char* ord){ int len = strlen(pre); if (len != strlen(ord)) { printf("input error!\n"); r...原创 2010-12-10 11:46:29 · 182 阅读 · 0 评论 -
寻找连续序列,使其和等于n
1,分析:首尾两个游标.如果当前sum < n, 尾巴向右移动.如果当前sum > n, 首向右移动.如果当前sum == n,输出结果.首向右移动两位,尾巴向右移动一位.循环条件: 首 < (n+1)/22,实现代码:[code="c++"]#include using namespace std;void FindContinuousSum(...原创 2010-08-26 10:15:26 · 254 阅读 · 0 评论 -
n个筛子的和出项的次数
1,题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的次数.2,分析:要求出n个骰子的点数和,我们可以先把n个骰子分为两堆:第一堆只有一个,另一个有n-1个。单独的那一个有可能出现从1到6的点数。我们需要计算从1到6的每一种点数和剩下的n-1个骰子来计算点数和。接下来把剩下的n-1个骰子还是分成两堆,第一堆只有一个,第二堆有n-2个。...原创 2010-08-25 15:47:20 · 124 阅读 · 0 评论 -
寻找半数以上的数
1,输入一组数,其中有半数以上的数相同,找出这个相同的数.2,解答:指定一个flag,临时变量temp,如果tmep==ai,flag++,否则flag--,如果flag==0,temp=ai,flag=1.3,实例代码:[code="cpp"]#include using namespace std;int main(){ int a[]={2,...2010-02-26 12:22:25 · 108 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_1.5字符串子串
1,题意:给定一系列字符串,把它们合在一起,给出字典序最小的结果.2,解决:给子串排序,注意:ba和a,排序的方式定位: str1+str2cnt; while(cnt--) { cin>>n; for(int i=0;i>s[i]; sort(s,s+n,cmp); for(int i=0;i...2010-02-26 18:54:15 · 128 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.3狙击兵
1,起点:0,终点:n1到n-1设置n-1的狙击点,给定边和每个点至少需要的狙击兵数量.求:成功阻击最少需要多少个狙击手?2,解答:最大流最小割定理.这里需要将一个点拆成一条边.举例:[img]http://dl.iteye.com/upload/attachment/209813/71cb4738-6809-3530-ada4-ae9bb395ea0e.bmp[/im...原创 2010-02-26 20:03:31 · 147 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_5.9距离
1,求树的两个结点之间的距离2,解答:求u和v的最近公共祖先(LCA)先做一次dfs,转化为求第一次出现的u和v之间深度最大的点即是它们的公共祖先.3,实例代码:[code="cpp"]#include#include#include#includeusing namespace std;const int maxn=20010;struct n...原创 2010-02-26 20:28:44 · 130 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_4,1遥远的距离
1,题意:y轴左右两个点集,求它们中点的最远距离.2,解决:最远距离的两个点必定在所有点的凸包上,点到点的最远距离对应点相关的凸包边到点的最远距离.先求出凸包点,在依次求出每条凸包边对应的最远点,得到一个ans,遍历所有的边即可得到结果.3,实现代码:[code="cpp"]#include #include using namespace std;/*...2010-03-02 10:52:05 · 159 阅读 · 0 评论 -
国际大学生程序设计竞赛例题_4,6树
1,题意:n个节点,每个节点都有编号.k(k>=2)个叶子,可以组成多少这样的树.辅助方法:Prufer Code,选出标号最小的叶子点,删除,输出它的父亲节点编号,直到剩余两个节点.得到一个n-2的序列,就是Prufer码,可以证明其和树是一一对应的.问题转化为先从n个节点选k个作为叶子,剩余的n-k个符号扩展为n-2长度的序列,即是对应的一种的方案.结果:对2007取模2,实现...2010-03-02 16:23:55 · 130 阅读 · 0 评论