夏夜、

心若平似镜、何题不AC。

上一页 1 ··· 11 12 13 14 15

2013年8月10日

UVA 10891 Game of Sum DP

摘要: 题意:给n个数,A,B两人轮流取,每次可从左右其中一边取1或多个数,两个人都尽量使自己取的数总和最大,问最终sumA-sumB最大为多少。由于两个人取的数总和是一定的,所以只要求出先取的那个最多有多少就行了。用dp[i][j]表示a[i..j]这一段数中先取的人能取到的最大和。(这里的先取意思是表示这在一段先取,不是A的意思)先取的人可能取左边任意一段a[i..i],a[i..i+1],a[i...i+2]....a[i,j]或右边任意一段a[j...j],a[j-1...j],a[j-2..j]....a[i,j]那么另一个人就有可能从a[i+1...j]、a[i+2....j],a[j.. 阅读全文

posted @ 2013-08-10 10:43 BMan、 阅读(167) 评论(0) 推荐(0) 编辑

2013年8月9日

UVA 10635 Prince and Princess LCS转LIS

摘要: 题意:求最长公共子序列正常的算法O(n^2)不够快,但因为这题数据特殊,数组中的数各不相同,可以转化成求最大上升子序列比如样例中A{1 7 5 4 8 3 9}, B{1 4 3 5 6 2 8 9},将数字重新映射编号map[ai]=i;ai=map[ai];bi=map[bi];变成A{1,2,3,4,5,6,7} B{1,4,6,3,0,0,5,7} 问题便变成了求B的LIS可以在0(nlogn)求出// #pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#in 阅读全文

posted @ 2013-08-09 22:45 BMan、 阅读(177) 评论(0) 推荐(0) 编辑

UVA 1394 And Then There Was One 约瑟夫环数学方法

摘要: 题意:n个人围成环,首先第m个人出列,然后从下一个开始,数到第k个就出列。。。问最后剩下的是谁?为了方便,我们采用0~n-1的编号方式先考虑当题意没有m的时候,就是说从第一个人开始,第k个人出列。那么第一个出列的就是编号k-1的人,此时我们把剩下的人重新编号k->0k+1->1k+2->2........k-2->n-2假设新编号为x的人是最终剩下来的,那他在原来的编号是多少?就是(x+k)%n所以我们只要一直重复这个过程便能求得最开始那个人的编号,因为这个人最终的编号是0(只剩他一个人)0->(0+k)%2->((0+k)%2+k)%3->..... 阅读全文

posted @ 2013-08-09 22:22 BMan、 阅读(385) 评论(0) 推荐(0) 编辑

2013年8月5日

ZOJ 1063 Space Station Shielding 构造、搜索

摘要: 题意:给你一个正长方体,长宽高分别为n、m、k,这个长方体由n*m*k个1*1*1的小立方体组成把这些小立方体编号为0-(n*m*k-1),再给l个编号,表示这些小立方体是存在的,否则就是不存在的求最总整个图形的外表面积解题思路:首先解决坐标与编号的转换,用0开始标号,比用1方便很多,跟二维数组差不多,很轻松就可以推出坐标转编号:id=z*(m*n)+y*n+x;编号转坐标: z=id/(n*m); id-=z*(m*n); y=id/n; x=id%n;上面写成两个函数备用首先想到,以其中一个存在的小立方体开始,往上下左右前后六个方向搜索,如果这个方向上有小方块,就转移到这个小方块上继续搜索 阅读全文

posted @ 2013-08-05 22:55 BMan、 阅读(294) 评论(0) 推荐(0) 编辑

POJ 3190 Stall Reservations

摘要: 问题抽象成数学概念就是:给你n条线段,问最少需要分成几组,使得每组中的线段互不相交贪心:把线段按左端点排序,对于每一组,我们用一个变量t记录这组里面的线段中的最大的右端点对于每一条线段,我们找到t最大且#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 阅读全文

posted @ 2013-08-05 16:46 BMan、 阅读(531) 评论(0) 推荐(0) 编辑

POJ 3187 Backward Digit Sums

摘要: 题意:我们把1-n这n个数的某个排列摆成一排,然后相邻两个数的和放到下一行,依此类推,形成一个三角形3 1 2 4 43 6 7 916给你n和最终得到的和k,求第一行的系列(字典序最小)我们可以发现每个数字的计算次数是一个杨辉三角1 1 1 2 1 1 3 31 1 4 6 4 1 ......所以我们只要枚举1-n的全排列,计算sum{ans[i]*c(i-1,n-1)}是否为K就行了当然从顶层一步一步算到最低也是一样的10!为380W,而且因为左右对称,规模能减一半枚举全排序能用STL中的next_permutation能很方便的求出如果不知道这个函数,就写个DFS //#pragma 阅读全文

posted @ 2013-08-05 15:12 BMan、 阅读(256) 评论(0) 推荐(0) 编辑

POJ 3669 Meteor Shower BFS

摘要: 题意:M个陨石会在某个时间砸向地图某点,摧毁该点及其上下左右总共五个格子,也就是在这个时间以后这些格子就不能通过了,问主人公从(0,0)开始最少需要多少时间能到达安全的地方(也就是一直不会被摧毁的地方)此题有个小陷阱,with meteoriwill striking point (Xi,Yi) (0 ≤Xi≤ 300; 0 ≤Yi≤ 300) at timeTi(0 ≤Ti ≤ 1,000). 这里的X、Y指的是陨石的范围而不是地图的范围,地图是一张无限大的,也就是可以走到300以外地方。先初始化所以格子的崩塌时间为INF(无限大),然后预处理出所有的时间,再跑一遍BFS就行了// #pra 阅读全文

posted @ 2013-08-05 14:42 BMan、 阅读(385) 评论(0) 推荐(0) 编辑

POJ 1979 Red and Black DFS

摘要: 简单DFS注意边界就行了。// #pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 0x1f1f1f1f# 阅读全文

posted @ 2013-08-05 14:18 BMan、 阅读(195) 评论(0) 推荐(0) 编辑

不想切题、

摘要: 今天开始用cnblogs记录题解,与网易分开。没办法,能折叠代码就找到这个。没心情切题,把开始集训以来的题解补上。 阅读全文

posted @ 2013-08-05 13:58 BMan、 阅读(116) 评论(0) 推荐(0) 编辑

上一页 1 ··· 11 12 13 14 15

导航