自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (3)
  • 收藏
  • 关注

原创 UVA 10635

题意:给定两个序列,每个序列中的数字范围值1~n^2(2  思路:这个一开始先想到了空间复杂度需要优化,然后发现对于状态d(i,j)表示第一个序列的前i位和第二个序列的前j位的LCS可以用滚动数组优化空间为O(n),时间复杂度还是O(n^2),虽然用处不大,还是留作纪念。for(int i=1;i>a[i];for(int i=1;i>b[i];for(int i=1;i<=p;i++

2015-01-31 11:05:26 383

原创 UVA 10911

题意:求最小的组合代价。  思路:状态压缩,因为最多只有16个人,且只需考虑当前状态下是否在集合中,所以状态dp(i)表示状态为i时的最小代价,转移时必须确保枚举的两个人均不在集合中,还有一点需要注意的是初始化。#include #include #include #include using namespace std;double d[20][20],dp[132000];

2015-01-29 00:07:48 519

原创 UVA 11151

题意:求最长回文子序列。  思路:状态dp(i,j)表示从i到j的最长回文子序列长度,那么    dp(i,j)=dp(i+1,j-1)+2,str[i]==str[j]    dp(i,j)=max(dp(i+1,j),dp(i,j-1)),str[i]!=str[j]#include #include #include #include using namespace

2015-01-28 14:03:07 362

原创 UVA 10891

题意:给定一组数,每一次选手可从左右两端任意一段选取连续的任意个数,至少选一个,甲先手,保证每次最优,则最后甲比乙得分多多少。  思路:和两端取一个数字的做法差不多,即dp(i,j)表示对于从i到j的序列,先手可得得最大分,那么dp(i,j)=sum(i,j)-min{min{dp(i,k)}  (k=i~j-1),min{dp(k,j)  (k=i+1~j)}},注意再求最小值是因为可以把整

2015-01-28 11:59:36 360

原创 UVA 10310

题意:求面值n用k个金币组成的方法数。  思路:一开始直接想到设状态dp(i,j)为面值i用j个硬币表示的方法数,但最后发现没办法转移,看到有人说用无限背包,可能是我理解不够深入,交了几次都WA了,最后查了写资料,发现需要用到一个结论,即面值i用j个金币组成的方法数等于面值i用不超过j的面值的金币组成的方法数。关于证明可以百度,用到了ferrers图像的性质,这样一来状态dp(i,j)表示面值

2015-01-27 23:48:44 422

原创 UVA 10029

题意:给定一个字典,找出连续变换的最长路径。  思路:我只想说LIS不超时啊,只需要预处理求出每个字符串长度就ok了。#include #include #include #include using namespace std;char e[25010][17];int dp[25010]={0},l[25010];bool ji(int pi,int pj,int li,

2015-01-27 11:32:27 454

原创 UVA 10453

题意:给定一个字符串,可向任意位置添加字符以构成回文串,求最少添加字符数和处理后的字符串。  思路:定义状态dp(i,j)为原串第i个字符到第j个字符够成回文的最小添加数,则       dp(i,j)=dp(i+1,j-1),(str[i]==str[j])       dp(i,j)=min{dp(i+1,j),dp(i,j-1)}+1,(str[i]!=str[j])  相等

2015-01-24 11:24:46 351

原创 UVA 10201

题意:过n个加油站,没站油价不等,问达到目的地的最小花费,其实100L油,到达终点至少100L油。  设状态dp(i,j)表示在第i个加油站有jL油的最小花费,初始dp(i,j)=min{dp(i,j),dp(i-1,j+dis(i,i-1))},然后根据油价尝试更新dp(i,k),(k>j)。  小心数据所给加油站并不是都在起点到终点的区间内。#include #include

2015-01-24 11:04:37 394

原创 UVA 10154

题意:有n个乌龟,每个乌龟又一个重量和一个力量,叠罗汉,每个乌龟受重不大于其力量减去自身重量,问最高能叠多少层。  思路:存在一个最优解使得乌龟的力量从上到下是递增的,证明是比较简单的,对于任何一个最优解,假设相邻两层的重量为w[i-1]和w[i],力量为s[i-1]和s[i],并且s[i-1]>s[i],上方的最大重量为s[i]-w[i]-w[i-1],此时交换两个乌龟的位置,则上方最大重量

2015-01-22 20:00:49 488

原创 UVA 10617

#include #include #include using namespace std;long long dp[100][100];int main(){ int T; cin>>T; while(T--){ string t; cin>>t; memset(dp,0,sizeof(dp)); for(int i=1;i<=t.length();i++)

2015-01-19 18:37:53 341

原创 UVA 10271

状态dp(i,j)表前i只筷子中选出j对的代价,那么状态转移为dp(i,j)=min{dp(i-1,j),dp(i-2,j-1)+(leni-leni-1)^2}。#include #include #include using namespace std;int dp[5010][1010]={0},len[5010];int main(){ int T; cin>>T;

2015-01-19 11:00:45 402

wwwscan字典

同学们,有wwwscan是没有用的,字典才是关键,别告诉我不会用,压箱底的字典

2014-08-28

2014北大acm集训课件

这是2014北大的ACM培训的课件,可以说比较基础,对区域赛和算法学习都有很大帮助。

2014-08-25

x-spoot arp嗅探工具

arp嗅探必备神器,可猜解弱口令,建立ipc连接,破解ftp用户名密码,

2011-10-29

空空如也

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

TA关注的人

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