自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fighting

做一只勤劳的小蜜蜂,幸福才能揽入怀中。

  • 博客(23)
  • 收藏
  • 关注

原创 UVa:10453 Make Palindrome

记忆化搜索。dp[i][j]表示区间[【i,j】之间插入个数。if str[i]==str[j] dp[i][j]=dp[i+1][j-1]else dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1同时记录转移 递归输出不知道怎么搞的,跑了2.5s。。#include #include #include #include #incl

2013-12-31 21:32:08 574

原创 UVa:10617 Again Palindrome

这个题我是用递推做的。dp[i][j]表示【i,j】区间内以j为回文最后一个字符时的回文个数。那么状态转移方程就是if i==j  dp[i][j]=1else if str[i]==str[j] :dp[i][j]=dp[i+1][k](k取值从0到j)之和+1else dp[i][j]=dp[i+1][j]其中求和那部分可以用一个数组存下来这样时间复杂度n^2即可。

2013-12-31 13:01:37 523

原创 UVa:10739 String to Palindrome

其实对于一个字符串第一个和最后一个字符不同的情况下,只有三种操作,删除第一个,删除最后一个,或者替换其中一个。这样对应三种递归方式。当然如果第一个和最后一个相同,那么直接递归不包括这俩字符的串即可。当只有一个字符或者两个字符而且成为回文的时候终止递归,返回值为0。不难写。 #include #include #include #include #include

2013-12-29 00:12:59 524

原创 UVa:10306 e-Coins

灵感来自题下面那个图。一开始想用dp[i][j]表示前i个coin得到j时的最少硬币数,但是后来想了想不满足无后效性。于是转化为dp[i][j][k]表示前i种硬币,分别得到x为j,y为k时的最少硬币数。这样答案就是dp[i][j][k],i==m,j*j+k*k==S*S的时候。这样对于每个coin,就那个图而言,枚举它每个终点,然后dp即可。一开始不知道哪写错了,还加了排序,一直没过样例,

2013-12-28 19:31:43 551

原创 UVa:620 Cellular Structure

一共三种情况,除此之外就是其他情况。另外注意如果有多种情况,要取考前的那种。给定字符串的起点和终点然后记忆化搜索即可。 #include #include #include #include #include #define ll long long#define MAXN 1005#define INF 2139062143using namesp

2013-12-26 21:26:12 550

原创 UVa:10069 Distinct Subsequences

两个字符串一个str,一个word,v[i]表示word中的第i个字符在str中出现的位置状态转移方程是if j>=v[i]  1.若word[i]==str[j] 则>else>需要用到大数,还用到了滚动数组。 #include #include #include #include #include #define ll long long#def

2013-12-26 09:07:00 534

原创 UVa:254 Towers of Hanoi

考试前最后一次码题了。主要是利用移动n个盘子需要2^n-1步这个信息来简化整个过程。这恰好也是奇数步。如果n是奇数那么这些盘子都移动到当前的下一个柱子上,否则移动到隔一个的柱子上。另外,第奇数步就是移动到下一个柱子上。第偶数步就是不移动1号盘子的时候,唯一只有一种可移动办法。这样模拟整个过程就可以了。#include #include #include #include

2013-12-22 23:51:01 936

原创 UVa:548 Tree

这个题跪了好多次居然都是因为读错题了。它要求在某条路径最小的情况下的叶结点的值。如果存在多条最小路径,则取最小的叶结点。后序的最后一个结点是根节点。在中序序列中找到该结点的位置,右边是右子树,左边是该结点的左子树。注意要先递归右子树。直接用后序和中序推出一个树的遍历过程,然后求就行了。用不着建树。 #include#include#include#include

2013-12-18 17:18:32 621

原创 UVa:10137 The Trip

看到网上有些人是有精度什么做的。我的思路不太一样。所谓最少的转换其实就是花钱少的给花钱多的人的钱尽量少,多出来那一分钱的误差尽量出在花钱多的人身上。首先求一个平均值a=sum/n。如果能整除那么这个就简单了。不能整除的时候,得到余数r,这个r的意思是说有r个人最后出了a+1钱,其余人出了a钱。原则上为使转移钱少,让原来花钱多的人,也就是原来花钱大于a的人,数目为x,出a+1的钱。如果x>=

2013-12-17 12:20:01 570

原创 HDU:4751 Divide Groups

今年网络赛的一道题。问是否能分成两个完全图,转化为判断是否二分图。关键在于建图上面。如果两个人不是互相认识,那么一定处于不同集合,根据这点建图,也就是不是互相认识的人之间连边。 #include#include#include#include#include#include#define MAXN 105using namespace std;boo

2013-12-16 14:03:05 631

原创 UVa:11029 Leading and Trailing

后三位好想,只要对1000取余只用后三位进行乘方即可。前三位可能难想点,转换成几点几,然后再乘方取前三位即可。但是k比较大,会超时。所以用快速幂运算。 #include#include#include#include#include#includeusing namespace std;double Convers(double val){

2013-12-16 12:30:37 660

原创 UVa:10127 Ones

很水的一道题,只要不断增大1串的长度然后判断多长的时候能被n整除即可。用到了大数的模运算。注意n最大也就是9999的时候对应的1串的长度不一定是最长的。我在这个地方RE了好多次。。。 #include#include#include#include#include#include#define MAXN 10000using namespace std;

2013-12-14 22:57:49 596

原创 UVa:10303 How Many Trees ?

卡特兰数。递推公式:h(n)=h(n-1)*(4*n-2)/(n+1)用到了大数乘法和大数除法。 #include#include#include#include#include#define MAXN 700using namespace std;void Mult(char *a,int b,char* back){ int c[MAX

2013-12-14 19:54:33 558

原创 POJ:1088 滑雪

这道题之前在UVa写过,用的是递推,但是要求从小到大的顺序,比较麻烦。这次用了记忆化搜索。其实这也是个非常经典的记忆化搜索题。 #include#include#include#include#include#define MAXN 105using namespace std;int R,C,grid[MAXN][MAXN];int M[4][2]=

2013-12-14 19:03:25 545

原创 UVa:10375 Choose and divide

直接求组合数再相除会溢出。所以要边乘边除,两个数同时进行。 #include#include#include#include#include#include using namespace std;double solve(double a,int b,double c,int d){ int L=max(b,d); double ans

2013-12-14 16:09:40 720

原创 UVa:10717 Mint

给你一些数,选其中四个,对于某个值,问你不超过该值的四个数的公倍数是多少和不小于该值的公倍数是多少。数字从大到小排序,选取其中四个,求他们的最小公倍数,然后分别对应该特定值的临界求解。注意一种特殊情况,是不超过的不存在的情况是0。 #include#include#include#include#include#include #define MAXN 55

2013-12-14 14:42:25 698

原创 UVa:1133 Rent your airplane and make money

dp[i]表示从终止时间到第i个order结束的最大利润。二分查找第一个大于等于第i个order结束时间的开始时间。暂时先贴上代码,题解慢慢写。 #include#include#include#include#include #define maxn 3005using namespace std;struct Segment{ int

2013-12-14 12:43:57 882

原创 UVa: 11045 My T-shirt suits me

二分图最大匹配。用匈牙利算法可以轻松解决。 #include#include#include#includeusing namespace std;int link[50];bool gl[50][50];int n,m;bool vis[50];bool Match(int v){ for(int i=1; i<=n; ++i)

2013-12-12 21:40:04 709

原创 UVa:127 "Accordian" Patience

这个题在早的时候就不会做。后来中间想清楚了是个模拟,尝试写了好多次一直都没过样例。今天又重写,还是没过。。。后来看题,发现是题意读错了。1.先移动左边可以移动的。2.如果该牌左三和左一同时可以移动,先移动左三。我一直都忽略了第一个条件了,一直都是从右往左移动,结果一直都不对。。侥幸过了样例以后交上去TLE。确实,各种重复,代码超渣。。最后改掉了STL,自己写了个stack;

2013-12-12 17:42:28 701

原创 中国海洋大学第四届朗讯杯高级组 The Urge to Merge

The Urge to MergeTime Limit: 1000MS Memory limit: 65536K题目描述The Acme Consulting Group has sent you into a new technology park to enhance dynamism, synergy and sustainability. You\'

2013-12-06 12:34:24 1281

原创 中国海洋大学第四届朗讯杯高级组 Super Phyllis

Super Phyllis Time Limit: 1000MS    Memory limit: 65536K 题目描述Phyllis works for a large, multi-national corporation. She moves from department to department where her job is to uncover and

2013-12-02 16:10:47 2035

原创 中国海洋大学第四届朗讯杯高级组 Playing Fair with Cryptography

Playing Fair with Cryptography Time Limit: 1000MS    Memory limit: 65536K 题目描述Encryption is the process of taking plaintext and producing the corresponding ciphertext. One method to do this

2013-12-01 15:01:02 2355

原创 中国海洋大学第四届朗讯杯高级组 Cash Cow

Time Limit: 1000MS    Memory limit: 65536K 题目描述Years before Candy Crush became the wildly popular game that may lead developer Saga to a multi-billion dollar IPO, there was an online game name

2013-12-01 12:50:00 2132

空空如也

空空如也

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

TA关注的人

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