上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 23 下一页
摘要: 题意:求n个非负数中任意2个的异或值的最大值。n数量级为10^5分析:直接暴力肯定超时了。一个非负整数可以看成1个32位的01字符串,n个数可以看成n个字符串,因此可以建立字典树,建好树后,对于任意非负整数x,可以沿着树根往下贪心找到y,使得x异或y最大,复杂度为树的深度。View Code #include <stdio.h>#include <string.h>#define MAX(a,b) ((a)>(b)?(a):(b))#define NODE 3200010#define N 100010int n;int v[N];int node;int nex 阅读全文
posted @ 2012-07-22 23:39 BeatLJ 阅读(3437) 评论(0) 推荐(0) 编辑
摘要: 题目大意:找出1到300的数中其平方在b进制下是回文的数,并打印这些数数及其平方在b进制下的表示。View Code /*ID: lijian42LANG: C++TASK: palsquare*/#include <stdio.h>#define LEN 20#define N 300char t[20]={'0','1','2','3','4','5','6','7','8','9','A','B 阅读全文
posted @ 2012-07-22 21:22 BeatLJ 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题目大意:2到9每个数字对应3字母(对应关系题中已给出),给定一个长度不超过12的数字序列,则可以对应到多个字符串,现给定一个字典(含很多字符串的文件),打印数字序列对应的且在字典中出现过的字符串。分析:每个数字对应3个字母,最坏情况下有12个数字,可对应312=531441个字符串,而且题中字典中的字符串是按字典序给出的,所以可以用二分查找,所以应该可以用暴力+二分过。另一个办法就是建字典树,然后dfs时边搜遍判断,这样效率应该有所提升。我是用字典树过的。需要注意的是当字典中不存在符合要求的字符串时,要输出“NONE”View Code /*ID: lijian42LANG: C++TASK 阅读全文
posted @ 2012-07-22 20:49 BeatLJ 阅读(305) 评论(1) 推荐(0) 编辑
摘要: DescriptionIn this problem, you are given a pair of integers A and B. You can transform any integer number A to B by adding x to A.This x is an integer number which is a prime below A.Now,your task is to find the minimum number of transformation required to transform S to another integer number T.In 阅读全文
posted @ 2012-07-22 19:31 BeatLJ 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 数学模型:在数轴上画n条线段,求最长的连续线段的长度和最长的空白的长度(线段间的空白)。分析:读数据时只读入有效线段,被其他线段完全覆盖的略去,然后根据线段的起点排序,此时相邻线段要么中间有空白,要么相交,若相交则合并为一条线段,经过处理后得到cnt条互不相交的线段,此时统计结果即可。View Code /*ID: lijian42LANG: C++TASK: milk2*/#include <stdio.h>#include <stdlib.h>#define MAX(a,b) ((a)>(b)?(a):(b))#define N 5001int n;struc 阅读全文
posted @ 2012-07-20 23:32 BeatLJ 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题目大意:统计从1900年1月1号开始的n年时间内,每个月的13号落在星期一、星期二、星期三……星期日的次数。分析:从今年某个月的13号到明年那个月的13号经过的时间恰好是一年,经过的天数可能是365或366,从今年的1月13到明年的1月13经过的天数是由今年的二月份的天数决定的,也就是由今年是否是闰年决定的,2月也是一样,但从今年的3月13到明年的3月13经过的天数是由明年的二月份的天数决定的,也即由明年是否是闰年决定,4、5、6、……12月也一样。365%7=1366%7=2知道了以上2个算式,便可以从今年每月13的星期数推得明年的每月13的星期数,以后n年的都可以推出。递推的初始边界为1 阅读全文
posted @ 2012-07-20 22:40 BeatLJ 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 此题是经典树形DP题,没有上司的晚会。公司所有人员之间的关系可以用一个树来表示,任何一个人(除了最大的boss外)都有且只有一个直接上司,现要开一个Party,邀请尽量多的人参加,要求任何人不得与直接上司同时参加。抽象后的数学模型:在一棵树中,最多能选取多少结点,使得任何结点之间没有直接连边。状态设计:d[i][0]表示在以i为根结点的子树中,在不选结点i的情况下最多能选取的结点数目,d[i][1]表示在以i为根结点的子树中,在选取结点i的情况下最多能选取的结点数目。状态转移:d[i][0]=(max(d[j][0],d[j][1])),j为i的儿子结点,d[i][1]=∑(d[j][0]), 阅读全文
posted @ 2012-07-20 17:04 BeatLJ 阅读(269) 评论(0) 推荐(0) 编辑
摘要: Description有N个点,有一个商人想经过所有的点恰好一次(商人最终不一定要回到起点),求商人需要走最短路程。Input两个整数N,M表示图的点数和边数,接下去有M行,每行三个整数a ,b ,c 表示从a到b有一条无向边,长度是cN<=15 c<=10000Output输出商人需要走过的最短距离 ,如果不能到达所有的点,输出-1 。Sample Input4 6 1 2 1 1 4 2 4 3 4 2 3 3 2 4 6 1 3 5Sample Output6将已走过的点和未走过的点用二进制编码成整数,然后再DP.例如:共4个点,1和2已走过,3和4未走,此时状态编码为二进制 阅读全文
posted @ 2012-07-20 16:40 BeatLJ 阅读(189) 评论(0) 推荐(0) 编辑
摘要: Description听说附近的超市有N种商品打折促销,每种商品的单价为 Ci,实际价值为Wi。你和你的朋友们决定去超市购物,当然你们要买的东西已经包括在这N种商品中。一行A个人就往超市走了,到了超市被促销员告知每种商 品每人限购一件,让大家都有些许遗憾。你们每个人身上都带了一定数额的钱M,每个人都想用自己的钱买到总价值最大的一些商品。现在,你想知道所有人买的商 品总的实际价值是多少?Input多组测试数据直到文件末尾。第一行输入A和N(0 < A <= 50, 0 < N <= 1000)代表人数和商品种数。第二行输入A个数,表示每个人身上带的钱Mi(0 < M 阅读全文
posted @ 2012-07-19 12:57 BeatLJ 阅读(213) 评论(0) 推荐(0) 编辑
摘要: Description给出N个长度不超过5000的只含数字的字符串,你需要回答M次形如i j的询问,对于每次询问用一行输出一个整数表示第i个字符串和第j个字符的最长公共前缀的长度。比如两个字符串分别为201212和201112,"2"、"20"和"201"都是它们的公共前缀,但最长的公共前缀是"201",于是就应当输出3。Input输入包含多组测试数据。每组数据的第一行为一个整数N(1<=N<=1000),表示一共有N个字符串。接下来一共有N行,每行均有一个长度不超过 5000的只含数字的字符串,这N行 阅读全文
posted @ 2012-07-18 17:13 BeatLJ 阅读(228) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 23 下一页