自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划+之基础递推+noj三角形

#include#include#includeusing namespace std;int b[105][105],a[105][105];int main(){ int n,i,j; while(~scanf("%d",&n)) { memset(b,0,sizeof(b)); memset(a,0,sizeof(a)); for(i=

2013-04-16 20:09:00 505

原创 广搜--(搜索的第一道题)图像有用区域

点这里点击打开链接今天开始迈出了学习广搜的第一步,因为之前感觉搜索很难理解都没有固定的模式,但是觉得现在又到了不得不面对的时刻。一开始想用递归写的,就是想在外围加上1,然后就遍历一下如果不是0的就让它的递归它的四周,看看是否不是0;最后看了一下别人的思路,就换成了队列来写#include#include#include#include#includeusing namespace

2013-04-05 21:01:34 650

原创 每日阅读(产品) 汤道QQ与微信

SNG是腾讯体量最大、内部势力也最大的一个事业群,其覆盖了QQ、手机QQ、腾讯开放平台、腾讯云平台、广点通、移动分发平台应用宝在内的多条业务线。

2014-05-13 20:36:13 973

原创 2014/2/24

终于找回我的博客账号了,不想发说说,不想发微博,但是好像心里都有好多想说说的不说心里超级不舒服,和人说顾虑太多,还是自己写下来发泄一下吧。   四级居然没过,好吧我真的有被打击到了,组队的队友都过了,略显无力,但是心里还是有无数的声音在和我说着,事实就在眼前你要借鉴过去,把握今天的吧,心里老想着别人乃至学弟学妹看到我没过心里会不会超级鄙视的,心里总觉得居然现在还没过四级,原来总是自己害死自己,

2014-02-24 08:11:03 554

原创 4632

这是一道区间dp的题目;题意:就是给你一个字符串,让你找出回文子序列(可以不连续)的总数。之前在Noj上的一道 【回文字符串】也可以用这种方法。如果str[i]=str[j]     dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]+1; else   dp[i][j]=dp[i+1][j]+dp[i][j-1];dp[i][j]代表的是从

2013-08-03 17:06:37 1732

原创 2013 多校联合4 1011 Fliping game (hdu 4642)

题意:在一个矩阵中放着可上可下的银币,你可以翻一个矩形里面的银币使它们变成相反的方向,但此矩型必须是右下角是矩阵的最右下角,左上角这个点必须是朝上的。最 后结束的标志是所有的银币都已经都是朝上的,此时游戏结束。思路:首先游戏是会结束的。假设最右下角的是1(其他都是0)那显然第一个人赢了。假设其他还有1那么第一个人最优的是把右下角的这一枚银币组成的矩形,这样使得它变成0。另一个人只能翻外面的1,

2013-08-02 09:59:56 592

原创 Hu 4639 hehe

一开始已经看不下去了,一直一直不懂,对着这道呵呵的题只能说呵呵了。 思路:后面小d讲的思路,一开始递推发现好像是斐波那契数列每一个,每一串中的每一个hehe你可以选择变还是不变,当你变了就是相当是一个i-1;的子串当你没变的时候就  是 一个i-2;  状态方程写下来dp[i]=dp[i-1]+dp[i-2];而当你把所有的情况都乘起来的时候就是结果了。因为长度是10086,he两个字符s

2013-08-01 19:23:57 606

原创 NOJ 20 吝啬的国度

开始做深搜的题,这是一种比较常见的递归,就是直接看去的点是从那来的,标记一下避免重复搜。深搜的注意个人认为,1,要在一定范围内一般是在递归在1e4的范围内;    2,就是要注意标记,不然也可能导致超时的;3,就是不要递归混乱了,最后就是=-=用数组存放好。尽量思路要清楚。#include #include #include #include using namespa

2013-07-26 09:52:54 540

原创 NOj 720项目安排

一开始有的唯一思路就是dp[i]是表示i这个项目所给出所有不冲突的和的比较,但是没有想到怎么实现,然后受到飘逸一个劲的折磨之后,思路终于变的很清楚了。思路:dp[i]代表的是第i个项目得到的最大价值,然后转移方程就是dp[i]=max{dp[i-1],dp[j]+value[i]);这个最大价值可以是前i-1的最大价值,或者是第i个项目和前面所有不冲突的项目之和(dp[j])+本身的价值,两者

2013-07-24 11:03:21 518

原创 字符串处理Keep Deleting

Assume that string A is the substring of string B if and only if we can find A in B, now we have a string A and another string B, your task is to find a A in B from B's left side to B's right side, an

2013-07-23 18:23:56 526

原创 NOJ --138 找球号(二)

最基础的哈希表用法,先看所要存的个数,一般都是10N+10的内存,这样相当于十个位置里面有一个,空间是足够的。之前一直一直都是超时,就是因为内存开小的话就会出现死循环,因为存不了那么多个数  #include#include #include using namespace std;const int base =10000010;int h[base];voi

2013-07-23 10:10:01 557

原创 Noj-589 --糖果

其实就是相当于所有给出种类最多的糖果类型里面个数最多的哪一类是一组,然后剩下的所有的糖果可以算是另一种,如果能错开的话就“Yes”,不能的话就不能。   另一种说法就是让所有种类的糖果从小到大的排序,然后看最多的,和第二多的差值是不是大于一,大于就不能,反之可以。#include #include #include using namespace std;int main(

2013-07-17 16:03:05 439

原创 模拟noj——打扑克

看到这个题一开始是想到有栈来做的,或者是直接看#include #include #include #include #include #include #include using namespace std;int a[10099],pos[10099];int main(){ //freopen("1.txt","r",stdin);

2013-07-17 15:36:10 501

原创 吃土豆

#include #include #include #include #include using namespace std;int dp[510],save[510][510],m,n;int main(){ while(~scanf("%d%d", &n,&m)) { memset(dp, 0, sizeof(dp));

2013-07-10 10:35:00 443

原创 记忆化搜素,和递推法

记忆化搜素是动态规划的改进,------自上而下,就是在递归重叠子问题时候,对子问题的重复问题的对策,就是一开始对所有子问题进行赋值(一般为-1)这样的标记方法来区分是否被查找过。  递推----也是动态规划的一种从底而上的方法。

2013-07-08 15:57:44 535

原创 别人整理的dp大全

动态规划动态规划 容易: , 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 1952, 1953, 1958, 1959,

2013-05-07 17:23:28 790

原创 分组背包基础--1712 ACboy needs your help

有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有: f[k][v]=ma

2013-05-04 09:45:52 448

原创 大数相乘(大数阶乘模板)

#include#includeconst int max=40000;int f[max], n;int i,j, c,s;void find (){ memset(f,0,sizeof(f)); f[0]=1; for(i=2;i<=n;i++) { int c=0; for(j=0;j<max;j++)//开的数组比5000

2013-05-03 19:23:14 657

原创 两个大数(整数)相加模板

#include#includechar str[1005],ch[1005];int sum[1005],L;void fun(){ memset(sum,0,sizeof(sum)); int i,l,l1,t; l=strlen(str); for(i=l-1;i>=0;i--) //一个个数放进去; sum[

2013-05-03 18:59:43 511

原创 HU 3496 Watch The Movie---二维费用

点击打开链接这题是一道二维费用背包问题,刚开始的时候我把所有的都初始化为-1,只有ans[0][0]=0,这样是不对的,为什么呢。。。如果要恰好用完的话,是要将别的都初始化为-1。但是这个恰好是指的物品的件数恰好,那么就是说二维的费用中有一个费用是恰好,所以初始化-1的时候只要是对有这个要求的这一维进行初始化就可以了。#include #include #include

2013-05-03 17:22:51 524

原创 二维费用 hdu 2159 FATE(完全背包)HDU OJ 4501 小明系列故事——买年货【DP】

二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。算法费用加了一维,只需状态也加一维即可。设f[i][v][

2013-05-03 15:40:58 698

原创 二维费用 买糖果

Description清明君、五一君和六一君三个人是好朋友。他们很喜欢去一家糖果店买糖果,糖果店有巧克力和草莓两种口味的糖果出售。清明君喜欢吃巧克力味的糖果,六一君喜欢吃草莓味的糖果,五一君是个吃货,两种口味的糖果他都很喜欢吃。店老板把两种口味的糖果混在一起装在罐子里,于是每个罐子里每种糖果的数量都可能不相同。这一天,清明君、五一君和六一君三个人去买糖果。他们的钱只能购买m罐糖果。

2013-05-03 15:35:26 595

原创 循环节模板 NOJ427Number Sequence

点击打开链接#include #include #include #include using namespace std;int ye[7][7]; //可能出现的情况,用来存出现值得位置。int circle , from;int a ,b, n, f[52]={0,1,1};void find(int a, int b){ memset(ye,

2013-05-01 17:35:29 502

原创 矩阵模板之一

一个大数的k次方  斐波那契数#include #include #include using namespace std;struct app{ int p[30][30];};app mult(app a, app b){ app c; int i , j, k; for( i =0; i<2; i++)

2013-05-01 14:34:10 500

原创 NOJI 148 fibonacci数列(二) 矩阵乘法二分幂

第一次这样写以为不对的,自己撮合的着写的没想到对了,太激动了~。~点击打开链接#include #include #include using namespace std;struct app{ int p[30][30];};app mult(app a, app b){ app c; int i , j, k; f

2013-05-01 14:24:30 495

原创 矩阵相乘入门,两个矩阵相乘

•矩阵:矩阵可以看成一个n×m的数表,用二维数组表示•矩阵乘法:定义矩阵A,B。A和B可以乘法操作当且仅当A的大小是a×b,B的大小是b×c,设矩阵C=AB,则C的大小是a×c,且有    最普通的矩阵乘法是直接三个for循环直接计算而已,所以复杂度是O(n3)#includeusing namespace std;int main(){int i,j,k;cons

2013-05-01 10:52:31 3212

原创 还是树形dp 也可以用最短路来写--NOJ679 贪婪的商店

其实也是简单的dp,还可以把价格看成是权值用最短路来写,求出所要买的商品到各点的商品用最短距离;这个和376其实是一样的思路就是用深搜的。点击打开链接#include #include #include #include #include using namespace std;int dp[1005],flag[1005],cost[1005];vecto

2013-04-29 16:48:16 521

原创 简单的树形dp NOJ376 小强的Linux

树形dp是建立的树的基础上的有二叉和三叉等等树,现在学到的知识很简单的树形dp,但还是要注意深搜时要标记避免已经搜素得到过的结果可以直接用了不用在浪费时间去搜素了。还有就是对根节点的处理。点击打开链接#include #include #include #include #include using namespace std;int dp[1005],flag[1

2013-04-29 16:26:16 502

原创 二分枚举 +贪心 NOJ 680 摘枇杷

其实就是一到和疯牛一样思路的题目。每次分下了满足要求的每个组的最大值得最小值就是所以数中的最大值,最大值的最大值就是所有的数的和,此时是装在一个袋子里面的。如果是枚举的也可以因为数据太水还是可以过的,但是可以用二分,但是每次二分返回的就是你要符合条件的值,还有要注意的是,while(left《=right)是和right=mid-1;left=mid+1,而while(left点击

2013-04-29 15:58:04 607

原创 map的用法-HD 1029Ignatius and the Princess IV

这道题要注意的就是要所以的数不一定都是正数。用简单的dp来写如果你想用数组来存也可以,但是要把所有的数分成大于零和小于零两个数组,然后再dp。但是我发现可以哦用一种map来它可以存字符为下表,当然也能用负数。点击打开链接#include #include #include using namespace std;int main(){ int n;

2013-04-29 15:19:07 476

原创 把十进制的n转化成r进制的数的模板

void ttor(int n, int r){ if (n) { ttor(n / r, r); printf("%c", n % r > 9 ? n % r - 10 + 'A' : n % r + '0'); }}

2013-04-26 10:28:46 839

原创 注意区分啊~这里求的的事公共子串不是子序列。NOJ308-Substring

求公共子序列的思路:  假设A 串;B串,当第一个字符相等时就等于lena-1,lenb-1 的公共子序列的个数加一,当不相同的时候就是等于max(lena-1和lenb的公共,lena和lenb-1的公共)所以就可以等到一个状态转移方程式。而求公共子串的时候只要变一下就可以了。而下面就是求公共子串的。可以意会一下。点击打开链接 #include #include

2013-04-26 09:31:11 666

原创 NOJ37 回文字符串---整理一下都是各种回文类型啊,

点击打开链接注意要是求的字符串和逆串的公共子序列,和公共子串分开了哦。思路分析:1.判断字符串前后俩个字符是否相同,如果相同,则删去这俩字符,判断剩余的字符,不需要添加字符。2.如果不相同,则添加最少的字符的数量 = min((在字符串前添加和末尾一样的字符,删除末尾字符,判断其余字符串),(在字符串后添加和前边一样的字符,删除前边的字符, 判断其余字符串) ) + 1 ;很容

2013-04-25 21:06:16 584

原创 回文字符串啊~---太搞了 少年 DXH

点击打开链接j几天比赛了刚好出现了回文字符串,记得不要喝公共自序列区分啊,回文就是从前到后看是一样的,从后往前看也是一样的,这道题的思路就是先找出本串中自有的回文串,然后再加上不是回文的剩下的子串。代码如下,好好研究吧,自个好好研究吧~O(∩_∩)O哈! #include# includeint main(){ char a[50]; int

2013-04-25 20:29:24 566

原创 序号互换

#include #include int main(){ char str[10010],s[10010]; int t, i, len; scanf("%d", &t); while(t--) { memset(str, 0, sizeof(str)); scanf("%s", str);

2013-04-24 18:30:46 424

原创 sscanf 的应用noj——663弟弟的作业

点击打开链接在ssprintf(s,"%d",d);是把整型转化成字符串;#includeint main(){ char s[99]; int a, b, c, n = 0; while(scanf("%s", &s) == 1) //这里的1是代表是否有一个字符串出现 { if(sscanf(s, "%d+%d=%d", &a,

2013-04-24 08:55:40 539

原创 strstr的应用---Hd 2054 A == B ?

点击打开链接主要还是怕小数后面有零存在然后导致错误出现;所以就只要把小数处理好就可以了。#include #include char str[1000005],s[100005];void find(char s[]){ int i,len; len = strlen(s); if(strstr(s,".")) //在这个字符串中如果

2013-04-24 08:43:47 564

原创 HD Piggy-Bank完全背包

#include #include #define min(a,b) a<b? a:bint dp[1000005];int main(){ int t; scanf("%d",&t); while(t--) { memset(dp, 99898,sizeof(dp)); //注意初始化数组这里 dp

2013-04-22 20:34:36 410

原创 HDU OJ 2830 Matrix Swapping II 【动态规划】

#include #include #include using namespace std;bool cmp( int x, int y){ return x>y;}int main(){ int n, m, sum[1005], dp[1005]; while(~scanf("%d%d", &n, &m)) {

2013-04-19 18:18:27 413

原创 noj +422字串和之差

#include #include #include using namespace std;int dp[1000005], sum[1000005];int main(){ int t, n,a, b; scanf("%d", &t); while(t--) { memset(dp, 0, sizeof(dp))

2013-04-19 16:44:21 415

空空如也

空空如也

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

TA关注的人

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