自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 java数组的行数和列数

object [][] array ;array.length 就是行数array [0].length 就是列数

2015-10-25 12:54:15 4161

原创 uva 10130 超市减价全家买东西

uva 1013001背包,给你n种物品,m个人,给每个人能承受的最大重量,求可以最多买到的价值是多少不知道There is a SuperSale in a SuperHiperMarket. Every person can take only one object of each kind, i.e. one TV, one carrot, but for extra low p

2013-05-13 20:02:12 1146

原创 uva 10313 整数拆分——硬币凑价

pay the pricehttp://www.cnblogs.com/staginner/archive/2011/11/30/2269491.html给你一个价格n,求在指定使用的硬币个数范围内付款的方案数,后面可能给你边界a,b,也可能不给,不给的话个数是1-n,给一个a就是1-a,给两个是a-b直接开二维数组背包的话会算重复,比如凑6的话,1、2、3,,2、1、3,3、1、

2013-05-12 20:55:55 1151

原创 浙江13省赛B 拼凑砝码

题目Break Standard WeightTime Limit: 2 Seconds      Memory Limit: 65536 KB The balance was the first mass measuring instrument invented. In its traditional form, it consists of a pivot

2013-05-12 19:56:11 873

原创 uva 10285 记忆化搜索

uva 10285求矩阵中最长递减路径的长度,记忆化搜索,因为要找的路径是严格递减的,所以不会有回头路Sample Input2Feldberg 10 556 14 51 58 8826 94 24 39 4124 16 8 51 5176 72 77 43 1038 50 59 84 815 23 37 71 7796 10 93 53 829

2013-05-12 19:43:18 1822

原创 uva 11151 增减改求变成回文的最小步数

uva 11151#include#include#define N 1010int dp[N][N],n;char a[N];int min(int a,int b,int c){ if(a<=b&&a<=c) return a; if(b<=a&&b<=c) return b; if(c<=a&&c<=b) return c;}int main()

2013-05-07 16:21:56 819

原创 uva 10453 补全回文并打印结果

uva 10453#include#include#include#include#define N 1010using namespace std;int dp[N][N];char a[N];string print(int l,int r){ string s=""; if(l==r) { s+=a[l];

2013-05-05 15:04:01 882

原创 uva 11151 最长回文子串

uva 11151空串输出0#include#include#define N 1010int dp[N][N];char a[N];int max(int a,int b){ return a>b?a:b;}int main(){ int i,j,k,le,l,max; scanf("%d",&le); getchar();

2013-05-05 12:03:36 923

原创 uva 10911 Forming Quiz Teams

状态压缩集合上的dpuva 10911 Forming Quiz Teams#include#include#include#define N 10#define INF 1<<30double dp[1<<(N*2)];int x[N*2],y[N*2],n;double min(double a,double b){ return a>b?b:a;}

2013-04-26 13:44:06 824

原创 uva 10118 免费糖果 深搜+记忆化搜索

uva 10118http://www.cnblogs.com/kedebug/archive/2013/04/07/3006493.html#include#include#define N 45#define C 22int max(int a,int b){ return a>b?a:b;}int pile[4][N],f[N][N][N][N],n

2013-04-24 09:55:54 1752

原创 uva 10317 调整等式中数字的位置使等式成立

uva 10317记录把等式移项后正数的位置,让这些正数之和等于sum/2,dfs搜索这些正数,再把剩余的数依次放入负数的位置,按照输入输出即可#include#include#include#define N 17int num[N],n,zh;int flag[N],end,sum;char ch[100];int ok;void dfs(int w,int t

2013-04-17 14:35:13 718

原创 uva 10827 求和最大可延伸的子矩形

uva 10827 Maximum sum on a torus为了算可延伸的矩形,要在原矩形的右面、下面和右下再补上矩阵,然后枚举全部的子矩形来求最大的和,枚举时先枚举矩形的左上点,再枚举所有的长和宽#include using namespace std;#define MAX 155int main(){ int x,y,i,j,n,s,ans; int c[MAX]

2013-04-16 20:21:22 701

原创 uva 10391复合词 字符串哈希

head的下标是哈希值,head[哈希值]=字符串的下标,拉链处理矛盾要注意字符串哈希值的取法#include#includechar st[121000][30],temp[30];int head[10000019],next[121000];int hash(char *str){ int seed=31,v=0; while(*str) {

2013-04-16 10:47:18 770

原创 uva 10003 切木棍

uva 10003#include#includeint n,a[55];int dp[51][51];int DP(int i,int j){ if(dp[i][j]!=-1) return dp[i][j]; else { if(i+1==j)//这是一段,切不了,不用切了 { d

2013-04-15 13:00:13 867

转载 优先队列

基本操作:empty() 如果队列为空返回真pop() 删除对顶元素push() 加入一个元素size() 返回优先队列中拥有的元素个数top() 返回优先队列对顶元素在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。使用方法:头文件:#include 声明方式:1、普通方法:pr

2013-04-14 00:10:44 518

原创 uva 11795 洛克人打机器人 加法原理

#include#include#define N 1<<18long long dp[N],st[N],w[N];int main(){ int i,j,k,l,m,n; scanf("%d",&l); for(k=1;k<=l;k++) { memset(w,0,sizeof(0)); memset(st,0,sizeof(0)); memset(dp,0,siz

2013-04-13 19:54:21 1082

原创 uva 11404 LCS打印字典序最小路径

#include#include#include#include#define N 1020using namespace std;int dp[N][N];char str[N][N][N];string st[N][N];char a[N],b[N];int maxn;string jieguo;int main(){ int i,j,k,l; while(~sc

2013-04-13 19:52:11 732

原创 uva 11552 无后效性的动态规划

#include#includeint min(int a,int b){ return a<b?a:b;}#define maxn 1010char s[maxn];int n;int dp[maxn][30];int vis[30];int main(){ int i,j,k; int T; scanf("%d",&T); while(

2013-04-13 19:50:30 1272

原创 uva 10599- Robots(II) LIS记录路径

http://www.cnblogs.com/staginner/archive/2011/12/06/2278453.html给出一个矩阵N行M列,指定点上有垃圾,我们有一个机器人可以清理这些垃圾,它从1,1点出发,每个垃圾有自己的编号,求最多可以捡到的垃圾数和捡到最多垃圾时的路线数还有垃圾号字典序最小的路径,例如i,j点的垃圾编号就是(i-1)*n+m.因为路径数只跟带有垃圾的格子

2013-04-08 10:54:37 1013

原创 hdu 3127 二维完全背包,长方形布料剪裁求最大价值

想法很直接有效#include#include#include#includeusing namespace std;int dp[1100][1100];struct node{ int x,y; int val;}Node[24];int max(int a,int b){ return a>b?a:b;}int main(){ int

2013-04-07 20:41:32 691

原创 uva 11396 爪分解,判断所给图是否能分解成爪,二分图判断

爪是一个点连三条边,若满足条件,点的个数满足n*2=m*3,中心点是一个集合,三条边连的点是一个集合,是二分图#include #include #include #include using namespace std;const int maxn = 300 + 5;int color[maxn];vector G[maxn];bool bipartite(int u)

2013-04-07 20:26:30 898

原创 uva 1424 简单DP

求把所给路径改成合法路径需要的最小修改次数#include#include#define maxn 1010#define INF 1<<30char str[maxn];int dp[maxn];char vis[maxn][maxn];void init(){ int i; memset(vis,-1,sizeof(vis)); for(i=1;i<

2013-04-07 20:22:33 757

原创 uva 11584 把字符串分成最少的回文段

#include#include#define maxn 1010#define INF 1<<30char str[maxn];int dp[maxn];char vis[maxn][maxn];void init(){ int i; memset(vis,-1,sizeof(vis)); for(i=1;i<=strlen(str+1);i++)

2013-04-07 20:19:42 824

原创 uva 10534 Wavio Sequence LIS 栈实现nlogn

#include#include#define maxn 10010int st[maxn],z[maxn],f[maxn],a[maxn],n,top;int min(int a,int b){ return a>b?b:a;}int max(int a,int b){ return a>b?a:b;}int main(){ int i,j,k,l;

2013-04-07 20:14:05 678

原创 uvalive4467

E - Electric BillTime Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %lluSubmit StatusDescriptionIt's year 2100. Electricity has become very expensive. Recently, yo

2013-04-07 00:14:16 710

原创 hdu 2089 不要62和4

首先明确数字只有两类——有不吉利的和没有不吉利的还是把数字分成三类,1、不含有不吉利;2、不含有不吉利以2开头;3、含有不吉利这道题除了不要62两个组合之外又加了不能有4的情况,接2和接9写起来有些不同,9的话循环的i位不能填9,而就不同,当num[i]>2时可能与last连成62#include#includeint dp[10][3];int num[10];int f

2013-03-31 01:29:25 2458 2

原创 hdu 3555Bomb找49

首先把所有的数字分成三类,含有49的,不含49的,以9开头但是不含49的先找规律求出前所有可能的位数中三种情况的个数1、含有49,dp[i][0]=dp[i-1][0]*10-dp[i-1][1]     在前i-1位前添上0-9十个数,再减去添4以九开头的i-1位总数2、以9开头但是不含49,dp[i][1]=dp[i-1][0];              没有49的前i-1位前添

2013-03-30 20:39:59 795 1

原创 zoj 1425 最多匹配交叉 LCS

zoj 1425要注意题目的要求,不然就会想得很复杂1、要求得匹配线是成对交叉的,只是两两相交2、一对交叉线不能是4个相同的数字知道第一点后会发现LCS的方法可以解决这类问题,按照i j循环,每次只看新加的b[j],每个b[j]都与m个a[i]尝试过匹配#include#includeint m,n;int a[120],b[120];int dp[120][120];

2013-03-29 12:57:31 1090

原创 zoj 1100 铺砖 状态压缩

1、st中存的是每一行摆放的所有可能,0是空着,1是占着,st[i][0]中存一行的可能的状态即from,st[i][1]中存与其匹配的下一行状态即to;2、dfs中from是一行中前n个格子的状态,to是与之吻合的状态;3、因为只看每一行的可能状态,所以dfs中的n==w时已取完该种可能,退出递归;4、对于一行的第n列,采取三种摆放长方形的方式dfs(n+2,(fromdfs

2013-03-26 00:23:34 2080

原创 uva 11008

uva 11008状态压缩+记忆化搜索#include#include#define max 20#define maxn 2<<18#define INF 1<<30int min(int a,int b){ return a>b?b:a;}int g[max][max],f[maxn],limit,x[max],y[max];int m,n;int dp(i

2013-03-25 14:18:53 684

原创 zoj 3211 砍树 有顺序的dp

zoj 3211有n棵树,m天,每天只能砍一棵树,每棵树的初始价值为ai,每过一天价值增长bi,求m天砍树得到的最大价值。开始贪心不可以,n棵树长m天好像可以分成n*m棵树再分组背包(一棵树只能砍一次)(装酒问题),dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]+w[i]),但是一天有只能砍一棵树,有两个限制条件,直接背包有后效性,(放第i棵树可能改变dp[i-1

2013-03-22 14:35:51 1174

转载 zoj 动态规划分类

动态规划 解 #1100 经典,状态压缩 DP,要先枚举出行全部可能的状态,DP[i][j] 表示 i 层,j 末状态,dp[i][st[j][1]]+=dp[i-1][st[j][0]];#1425 交叉线匹配,经典 DP,n^3。#1503 估价游戏,一个决策为背景的 DP,当前剩下 i 次机会和 j 条命,最优的策略可以覆盖 DP[i][j] 范围内的所有情况,那

2013-03-21 21:19:47 1064

原创 uva 10723 uva 10723 Cyborg Genes求s1,s2的最短合串即合串的组成方法数

已知两个母串s1,s2,求它们最短合串的长及组成该长度合串的方法数,用LCS解dp[i][j]存s1[i]与s2[j]最短的合串长度,初始化dp[i][0]=dp[0][i]=i1、当s1[i]==s2[j]时,dp[i][j]=dp[i-1][j-1];2、否则dp[i][j]=min(dp[i-1][j],dp[i][j-1])。f[i][j]存s1[i]与s2[j]组成最短串

2013-03-21 10:16:35 1249 1

原创 uva 11258 String Partition

uva 11258把给的字符串拆成32位有符号整形范围内的整数,(1先把全部可能用到的家数都枚举出来,得到sum[i][j],其中为str[i]到str[j] 构成的数字,再对每个数字加或不加判断最优结果,类似背包,dp[i]为前i位能分出数的最大和dp[i]=max(dp[i],dp[j]+sum[j+1][i])#include#include#define maxn 21

2013-03-21 09:36:17 753

原创 uva 10163 - Storage Keepers 每组最多选一个的分组背包

uva 10163        有N个仓库,总共有M个人来应聘仓库看守员,每个人的能力是P,一个人可以看守多个仓库(设k个),每个仓库只能被一个人看,仓库的安全系数为p/k,公司的安全底线为最低的仓库安全系数,每个人每月的薪水是P,求能使安全底线最高的值和达到此值中最小的花费。有两个条件,最低线和花费,要加一维开三维的数组,把每个人看1到n个仓库分作w为p,c为p/k的物品, dp[i]

2013-03-17 14:23:15 1003

原创 uva 10280 Old Wine Into New Bottles 有剪枝的完全背包

uva 102801、这道题如果直接把每个酒瓶的可用容量来做完全背包的话会超时,但是由最低的容量不低于95%,最高的容量不超过99%,由于容量的连续性有一些规律可循,可藉此优化:   考虑任意一种瓶子能够将酒全装满的情况,最小容量min,最大容量max,只要酒的体积x在[min,max]|[2*min,2*max]|……[k*min,k*max]的范围内就能完全装满,而max比mi

2013-03-14 01:47:49 1598 1

原创 uva 11081 Strings 字符串匹配

uva 11081#include#include#define s 66char s1[s],s2[s],s3[s];int f1[s][s][s],f2[s][s][s],f[s][s][s];int l1,l2,l3;int main(){ int i,j,k,n; scanf("%d",&n); while(n--) { s

2013-03-13 19:25:01 889

原创 poj 2192 字符串匹配

poj 2192判断s1,s2是否能组成s3,可以全部匹配,比较简单,直接判断就行#include#includeint dp[1010][1010];int l1,l2;char s1[1010],s2[1010],s3[2020];int main(){ int i,j,k,n; scanf("%d",&n); for(k=1;k<=n;k++)

2013-03-12 11:13:44 740

原创 sdut 1961 dfs递归

Image Compression像素按精确度压缩,直接dfs即可解#include#includeint w,t;char map[70][70];int f(int x,int y,int size){ int i,j,sum; sum=0; for(i=x;i<x+size;i++) { for(j=y;j<y+size;

2013-03-11 19:44:17 732

原创 数字游戏 qsort

数字游戏#include#include#includeint cmp(const void*_a,const void*_b){ int i,j; char* a=(char*)_a; char* b=(char*)_b; /*if(strlen(a)==strlen(b)) { return strcmp(a,b);

2013-03-10 20:45:55 491

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除