- 博客(12)
- 资源 (6)
- 收藏
- 关注
原创 HDU - 1754 I Hate It (线段树)
解析:线段树模板题,线段树单点更新,找出区间最大值和更改区间点的值。#include #include #include using namespace std;const int N = 200000;int a[N];int s[N << 2], L[N << 2], R[N << 2];void build(int u,int l,int r) { if(l == r)
2014-12-28 18:58:11 676
原创 UVA 10069 Distinct Subsequences(dp+高精度加法)
题意:给定2个字符串a, b,求b在a中出现的次数。要求可以是不连续的,但是b在a中的顺序必须和b以前的一致。思路:类似于数字分解的题目。dp[i][j]表示:b的前j个字符在a的前i个字符中出现的次数。dp[i][j] = dp[i][j-1];if(b[i] == a[j]) dp[i][j] += dp[i-1][j-1];母串:ba
2014-12-28 14:11:46 665
原创 UVA - 825 Walking on the Safe Side (dp)
题目大意:给出n,m,现在给出n行,每行有k(k为不定值)个数字,第一个数字代表行数, 后面k - 1个数代表当前行的这个位置不可走, 问有多少路径可以从(1,1)到(n,m),只能向下或向右。解析:可以推出,该最短的路径一定为当前矩阵的行+列,dp[i][j]数组用于保存走到每个格子有多少种情况,dp[i+1][j] += dp[i][j]; dp[i][j+1] += dp[i][j]
2014-12-28 13:01:55 634
原创 UVA 620 Cellular Structure(dfs)
这题真的很难理解,看了别人的解析才明白是在讲什么,其实做起来不算难。题目大意:给定一个细胞链,只有AB两种字母组成。有三种方式,一种是从物到有生成A,一种是在原有的基础上,加上AB,一种是B+原有的字符串+A,O代表是正常的细胞链,最后看一下这个细胞链是否是由这些组合构成的,输出最后的操作。如果不是这三种方式中的一种,那么该细胞链已变异,作为第四种输出。解析:不算dp,
2014-12-28 12:53:37 650
原创 UVA 10404 Bachet's Game
题目大意:在桌子上有k个石头,现在有Stan和Qllie在玩一个取石子的游戏,由Stan先行,当一方取得最后一个石子的时候,该方胜利,但是这和普通的取石子游戏不同,该规则是从每次规定的个数中,取石头。问:如果两方都执行完美的操作,那么谁能取得最终的胜利。解析:首先,假设当石头只剩0块时,那么搬运的次数就为0接下来考虑博弈过程,假设A搬动,那么他想赢,就得使从他这次搬动算起到石头最终
2014-12-28 12:43:19 648
原创 UVA 437 The Tower of Babylon(最长上升子序列)
题目大意:输入若干种立方体(每种若干个),然后将立方体堆成一个塔,要求接触的两个面下底面的长宽分别严格大于上底面,求塔的最大高度。解析:将每种立方体的各种摆放形式均视为不同的立方体,并存起来。再将所有立方体按照下底面的面积从小到大排序(因为在塔上面的立方体的底面积一定比下面的小),然后求该序列的最大上升子序列的高度。#include #include #include using
2014-12-28 12:22:56 539
原创 UVA 10285 Longest Run on a Snowboard
题目大意:求矩阵中最长递减路径的长度。解析:有两种解法,一种是dfs,还有一种是dp,因为最大的矩阵为100*100,所以直接暴力dfs就可以过。dp解法:先把点的坐标和数值存于结构体中,然后将结构体从小到大排序,然后按照数值从小到大dp如果当前点周围的高度h[newx][newy] > h[x][y],且dp[x][y] >= dp[newx][newy]那么dp[newx][n
2014-12-28 09:03:48 598
原创 UVA 10465 Homer Simpson(完全背包)
问题描述:给出m,n,t,m为吃第一种汉堡的时间,n为第二种汉堡的时间,t为总时间,如果总时间全部用于吃汉堡,那么就输出最多能吃多少个汉堡,否则在剩余时间喝啤酒。输出且汉堡的数量最大,且喝啤酒的时间最小。解析:完全背包问题,即把01背包的时间从前往后dp。#include #include #include using namespace std;int dp[10005]
2014-12-28 08:51:44 841
原创 UVA - 531 Compromise
题目大意:输入两段文字,每段文字以'#'结束,要求你求出这两段文字中最长公共的单词,并输出。解析:可以当两个字符串相等时进行标记,并递归输出,详见代码。#include #include #include #include #include using namespace std;const int N = 105;string s1[N],s2[N];int dp[N][
2014-12-28 08:41:26 588
转载 java中调用c(c++)写的dll文件的实现及步骤
JNI使用技巧点滴本文为在 32 位 Windows 平台上实现 Java 本地方法提供了实用的 示例、步骤和准则。本文中的示例使用 Sun Microsystems 公司创建的 Java Development Kit (JDK) 版本 1.4.1。用 C 语言编写的本地代码是用 Microsoft Visual C++ 6.0编译器编译生成。 简介 近日,由于项目需要,要在W
2014-12-14 09:09:10 1147
原创 UVA - 10181 15-Puzzle Problem(15数码 A*)
题目大意:给你一个八数码的序列,要求你在50步之内还原成,初始的形状,如果可以就输出其路径,否则就输出 This puzzle is not solvable.解析:这题是用A*算法实现的,上网查了很多资料,了解了什么是A*算法。A*算法,实质上是根据估价函数进行bfs,每次都选取估价最小的状态,进行移动。其中 f(n) 是从初始点经由节点n到目标点的估价函数,g(
2014-12-13 11:56:43 2144
java十五数码图形界面程序
2014-12-23
ctags58.zip
2014-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人