自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学无纸巾

终习

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

原创 【dp】POJ 3666 Making the Grade

/*基础dpMaking the Grade 题意: 给出n个数字组成序列a,然后再找到一个序列b,从1至n,abs(a[i]-b[i])的总和最小,其中序列b是非严格单调序列,要么是要么是非递减序列,要么是非递增序列。题解:分别求非严格递减和非严格递减的答案,取最小值怎么求? 非严格递增:如果数组数字需要改变,那么往目前数组最大的数字变将数组排序存于c[];dp[i][j]代表

2017-02-27 22:53:20 237

原创 【dp】POJ 3616 Milking Time

/*基础dpR - Milking Time题意: 在N小时内,有M个可以得到的牛奶,在相应的时间段得到相应的牛奶,在一时间只能处理一个,而且每次得到后要休息R时间,才能进行下一次。问最大能得到的牛奶总量。题解:首先每个时间段都在N内,那其实就是求在m个选择几个得到最大。先将结束的时间均加上R,就能处理R的问题了吧。然后就类似叠塔问题了,排序+LIS吧*/#include#in

2017-02-27 20:59:44 257

原创 【dp】HDU 2859 Phalanx

/*基础dpQ - Phalanx题意:问矩阵最大对称矩阵(按左下角到右上角对称)的对角线长度题解:设mp[i][j] 代表处于(i,j)的上面与右边字符对称的最长长度dp[i][j] 代表走到(i,j)的最大对称矩阵的对角线长度if(mp[i][j] > dp[i-1][j+1]) dp[i][j] = dp[i-1][j+1]+1;else dp[i][j] =

2017-02-27 19:54:19 327

原创 【记忆化搜索】HDU 1078 FatMouse and Cheese

/*记忆化搜索P - FatMouse and Cheese题意: 从(0,0)出发,每次最多走k格,但每次只能往值比它现在在的值大的格子走。题解:dp[i][j] 代表走到(i,j)的最大总值。dp[i][j] = max(dp[prei][prej]+mp[i][j]){i,j 是 prei,prej能走到的格子}贡献1T,1Wa,注意题意走K步是只能笔直走K步,导致T。我以为

2017-02-27 16:13:38 214

原创 【区间dp】POJ 3186 Treats for the Cows

/*区间dpO - Treats for the Cows题意:给你一组数,可以选择取最前面的数和最后面的数,第i次取到这个数,就将总数加上(i*取的数),使总数最大。题解:dp[i][j] 代表从i取到j的最大总数dp[i][j] = max(dp[i+1][j]+a[i]*(n+i-j) , dp[i][j-1]+a[j]*(n+i-j));*/#include#includ

2017-02-26 21:34:04 294

原创 【状压dp】FZU 2218 Simple String Problem

/*状压dpSimple String Problem题意:给你一个长为n的字符串,由'a'~'a'+k的英文字母组成,从中取出两个子字符串,要求这两个字符串组成的字母没有重复,并且两个字符串长度乘积最大。题解:dp[i] 代表i状态在字符串中最大的长度,处理出dp数组,由于可能 ab 状态的长度,不如 a 状态长度,但如果ab与另一个状态不重叠,a与其也一定不重叠,如果a状态长度大

2017-02-26 20:26:41 294

原创 【BFS+优先队列】HDU 3442 Three Kingdoms

/* Three Kingdoms时间: 2017/02/25 题意:刘备逃跑,从'$'逃到'!',除了'.'和'C'能走其他不能走,走'C'处要受伤害,其他字母各有攻击范围和伤害值,问刘备逃跑最少扣的血或不能逃到目的地题解:全程搜索 先BFS搜索每个有范围字母能触及到的位置存储起来。再从起点BFS到终点,但是注意要使用优先队列优化这个BFS。。。打的比较挫*/ #inclu

2017-02-25 15:42:55 302

原创 【计算几何】点定位(线段,三角形,多边形)

判断是否点在线段上1.满足向量 AC×AB == 0,使C点满足在AB的直线上2.满足C在AB构成的矩形内,使C点排除在AB的延长线和反向延长线上注意:考虑竖直和水平的情况,横坐标和纵坐标都要判断。bool dot_line(point a,point b,point c){ V v_line,v_dot; v_line.start = a;

2017-02-25 12:32:57 1544

原创 Codeforces Round #401 (Div. 2)(C,D,E)

/*C. Alyona and Spreadsheet时间: 2017/02/25题意:给出q个询问,问第l行到第r行是否存在一列是非单调递减的。题解:建一个数组:f[i] 代表i行最多能非单调递减到达的行数对于每列不断更新这个数组即可,*/#include#include#include#include#include#include#includeusing n

2017-02-25 09:26:29 556

原创 【DFS】HDU 5423 Rikka with Tree

/* DFSRikka with Tree时间: 2017/02/24题意:判断树是否存在跟他相似并不同的树题解: 要求相似并不同,树的结构必须除了最后一层,每层只能一个点最开始我用记忆化搜索去计算其长度,因为我觉得树都是已知指向未知,相当于DAG,但是一直wa。(困惑)后来用dfs计算长度过了*/ #include#include#include#include#

2017-02-24 16:30:29 265

原创 【Floyd】HUD 5418 Victor and World

/*状压dpVictor and World时间: 2017/02/24题意:一张无向图,求从1位置出发,每个点至少走一遍,再返回1点的最小花费。题解:先floyd处理出各个点之间的最小距离dp[i][j] 表示停留在i点的j状态的最小花费wa1,注意:边的赋值可能重复*/#include#include#include#include#include#include

2017-02-24 14:47:20 246

原创 【计算几何】向量表示

计算几何中的向量表示二维图中,点与向量的表示:struct point //点坐标{    double x;    double y;};struct V //两点式{    point start;    point end;};V change(V a) //两点式起点化为 0,0{ V b; b

2017-02-24 10:24:26 339

原创 【dp】POJ 2533 Longest Ordered Subsequence

/*基础dpN - Longest Ordered Subsequence时间: 2017/02/23题意:题解:裸LIS*/#include#include#include#include#include#include#includeusing namespace std;#define N 1010#define INF 0x3f3f3f3fint dp

2017-02-23 21:32:17 267

原创 【dp】POJ 1661 Help Jimmy

/*基础dpM - Help Jimmy时间: 2017/02/23题意:题解: 首先无疑的肯定要按高度进行从高到低排序,肯定有解,那么高度肯定加上去,再加上最少的横向走的时间应该有两种决策,向左跳,向右跳dp[i][0] 代表以i左边为起点向左跳到达地面的距离,dp[i][1] 代表以i右边为起点向右跳到达地面的距离如果i平台左能跳到j平台:dp[i][0] = min(dp[

2017-02-23 21:07:17 207

原创 【dp】HDU 1159 Common Subsequence

/*基础dpL - Common Subsequence时间: 2017/02/23题意:求最长公共子序列题解: LCS题具体的思路我在其他写51nod 1006 题解写过。简单的来讲:dp[i][j] 表示在第一序列的前i个和第二序列的前j个的最长公共子序列长度dp[i][j] = a[i] == b[j] ? dp[i-1][j-1]+1 : max(dp[i-1][j],d

2017-02-23 19:33:46 295

原创 【基础dp路径记录】HDU 1160 FatMouse's Speed

/*基础dpJ - FatMouse's Speed时间: 2017/02/23题意:给出n组数据,要求选择数据,证明越胖跑的越慢(即找个最长的体重严格递增而速度严格递减的数据)。题解: LIS题先按体重排序下,然后就是LIS找最长递减就好了记录路径:1. 记录终点,最后倒推回去,下面代码用的这种方式2. 直接在过程中记录:dp[i].pre = j;(或者用其他数组记录也可)

2017-02-23 18:46:10 274

原创 【基础dp】HDU 1257 最少拦截系统

/*基础dpI - 最少拦截系统时间: 2017/02/23题意:题解: dp[i] 代表第i个人使用的拦截导弹系统*/#include#include#include#include#include#include#includeusing namespace std;#define N 30010#define INF 0x3f3f3f3fint a[N]

2017-02-23 16:45:59 303

原创 【基础dp】HDU 1260 Tickets

/*基础dpH - Tickets时间: 2017/02/23题意: n个人在买电影票,可以两个相邻的一起买,也可以单独买,给出分别需要的时间,问需要的最短时间题解: dp[i] 代表前i人的最小花费时间*/#include#include#include#include#include#include#includeusing namespace std;#def

2017-02-23 14:29:13 356

原创 8VC Venture Cup 2017 - Elimination Round(A,B,C)

/*8VC Venture Cup 2017 - Elimination RoundPolandBall and Hypothesis时间: 2017/02/21题意:题解:枚举*/#include#include/*8VC Venture Cup 2017 - Elimination RoundPolandBall and Game时间: 2017/02/21题意:给出

2017-02-23 13:01:43 979

原创 Codeforces Round #399 (A,B,C)

/*Divide by Zero 2017 and Codeforces Round #399Code For 1时间: 2017/02/21题意:将一个数2^50,分半划分成0,1后,问在l,r区间1的数量题解:发现1,0出现的位置是和n的二进制有关,具体:满足i%(2^xi)==0的最大xi,第i个位置的数就是二进制从后往前的第xi个二进制值。注意 位运算1<<n 在n较大时时间

2017-02-21 15:03:26 383

原创 【基础dp】HDU 1176 免费馅饼

/*基础dpG - 免费馅饼时间: 2017/02/20题意:在一个坐标轴上,最初处在5上,给出一些点在一些时间能得到1个馅饼,每秒能移动一格,问最大能得到的馅饼个数。题解:数塔问题1.预处理mp[i][j]表示在第i秒第j处能得到几个馅饼dp[i][j] 表示在前i秒,人在j处能得到最大馅饼数dp[i][j] = max(dp[i-1][j-1],dp[i-1][j],dp[i

2017-02-20 22:35:37 348

原创 【完全背包】HDU 1114 Piggy-Bank

/*背包dpF - Piggy-Bank时间: 2017/02/20题意:装满背包,但要求价值最低的完全背包题解:dp[i][j] 表示在背包大小为j中装前i个物品最优的价值*/#include#include#include#include#include#include#includeusing namespace std;#define N 1010#def

2017-02-20 20:34:16 376

原创 【dp】HDU 1087 Super Jumping! Jumping! Jumping!

/*基础dpE - Super Jumping! Jumping! Jumping!时间: 2017/02/20题意:最大递增子序列题解:dp[i] 表示以i为终点的递增子序列最大值dp[i] = max(dp[i],dp[j]+a[i]) {j < i}*/#include#include#include#include#include#include#includ

2017-02-20 20:25:36 216

原创 【状压dp】HDU 1074 Doing Homework

/*状压dpD - Doing Homework时间: 2017/02/20题意:作业超过时限,超过一天扣一分,给出n个作业及其时限和需要完成的时间,求最小扣分值和其路径题解:状态压缩dp,本应该要想到的。其N<=15,所以每个状态状态转移最多15次。因为题目要求最后方案如果多个情况以字典序排序,所以可以先将原数据先排序然后我们发现递归时缺少了上一个状态的所用时间,我先预处理出来。

2017-02-20 16:13:55 314

原创 【dp】例题9-2 UVa 437 (HDU 1069)

/*基础dpC - Monkey and Banana时间: 2017/02/20题意:叠放立方体,使其叠的高度最大。在按底的长宽排序后,进行求最大子序列和题解:1. 在按底的长宽排序后,进行求最大子序列和2. 类似嵌套问题,记忆化搜索*/#include#include#include#include#include#include#includeusing na

2017-02-20 10:34:14 274

原创 HDU 1029 Ignatius and the Princess IV

/*水题B - Ignatius and the Princess IV时间: 2017/02/19题意:在一组数找到出现次数最多的数。题解:1.可以按map容器计数。2.可以排序后,线性计数3.因为最大的哪个数出现次数大于一半,可以如果遇见那个数+1,不是-1,那么剩下的肯定是那个数。*/#include #include #include #include #inc

2017-02-19 21:05:43 144

原创 【dp】HDU 1024 Max Sum Plus Plus

/*基础dpA - Max Sum Plus Plus时间: 2017/02/18题意:在一组数取出m个不相交的区间,使区间和的总和最大。题解:dp[i][j]表示前i个数,分为j个区间和的总和最大的值dp[i][j] = max(dp[i-1][j]+a[i], max(dp[0……(i-1)][j-1])+a[i]);因为dp[i][j]只和dp[][j-1]和dp[i-1][j

2017-02-19 20:35:06 238

原创 【分半dfs暴搜】Zoj 2868 Incredible Cows

对于一个超出范围暴搜问题,尝试分一半暴搜求解/*Zoj 2868 Incredible Cows时间: 2017/02/18题意:将一堆数分成两堆,使两堆和差最小题解:直接暴力2^34,分成两堆优化,将一堆暴力预处理所有可能的和,将和排序后,在另一堆暴力出和后,寻找于第一堆相加最接近sum/2的值,枚举找出最小答案。*/#include #include #include

2017-02-18 14:41:37 269

原创 动态规划初步

算法竞赛入门(LJR) p259  动态规划初步/*算法竞赛入门 LRJ 数字三角形时间: 2017/02/17*/#include #include #include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;const int N = 110;double

2017-02-17 22:30:10 499

转载 set 理论知识(学习)

STL中的set容器的一点总结1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如

2017-02-17 21:39:08 728

原创 Codeforces Round #390 (Div. 2)(A,B,C(记忆化搜索),D(贪心,优先队列))

/*Codeforces Round #390 (Div. 2)时间: 2017/02/16A题题意:将集合分成几个小集合,要求小集合的和不为0.题解:遍历过去,一直到不满足集合并数字非0前生成一个集合*/#include #include #include #include #include #include using namespace std;const int

2017-02-16 22:36:55 420

转载 状压dp - 棋盘问题(学习)

转载自:http://blog.csdn.net/math_coder/article/details/9671581如果看不明白代码的位运算,请先了解下位运算的应用**********此文章属于原创,看此文章前请先参考论文   周伟《动态规划之状态压缩》**********问题1:        在n*n(n≤20)的方格棋盘上放置n个车(可以攻击所在行、列),求

2017-02-16 11:26:07 2071

原创 位运算应用

位运算应用按位与: (&)全一为一,否则为零。应用:1. 取出一个数的一些二进制位。(x&(1 2. 取出一个数的最后一个二进制位1。(x&(-x))【10100 & (01100) = 4】最后一个二进制位是第三位按位或: (|)有一为一,否则为零。应用:将某些位设为1。(x|(1 按位取反: (~)是一为零,是零为一。按位异或: (^)不同为一,

2017-02-16 10:12:48 264

转载 如何解除压抑感

首先要调整自己的心态,其次要努力做好分内工作,积极关注其他的工作,不断丰富自己的知识。压抑是现代人面临的共同困境。人们在生活的洪流中拼搏,有成功也有失败。失败导致沮丧,而沮丧则可能导致压抑。即使是成功了,因为惧怕未来的失败,成功者也可能压抑自己,使自己成为成功的奴隶。我们常可听人说:“活得真累啊!”这便是压抑的表现。当我们陶醉在童年故事之中,而不敢在现实生活中放声大笑时,这也是压抑。因

2017-02-14 19:48:35 922

原创 【01背包】HDU 3350 Proud Merchants

题意:需要Qi的钱才能买,Pi贵的物品,拥有Vi的价值,给你拥有的钱,求最大能拥有的价值。 题解:按照(Qi-Pi)大小来排序后,进行01背包,理由是:(Qi-Pi)大小是dp数组改变不掉的那一部分,越小的先取对后面就不会造成影响。#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#includ

2017-02-14 16:47:17 256

原创 poj 1002 487-3279

poj 1002 487-3279链接:http://poj.org/problem?id=1002题意:给你n个字符串,均可以化简成为标准的字符串,问化简后的标准字符串的具体串,和每种的标准串的个数。 思路:将n个字符串化为全数字的字符串,进行字典序排序后,输出答案时加上需要的‘-’即可。ac代码:#include #incl

2017-02-14 09:54:33 254

原创 【DFS剪枝】poj 1011 Sticks

poj 1011 Sticks链接:http://poj.org/problem?id=1011题意:将未知根数的相同长度的树枝随机截断,给出截断后的树枝,求原树枝最短可能的长度。思路:将枚举可能的长度,dfs判断长度的可行性。剪枝:将树枝从大到小排列,如果长度大的树枝无法组合成(需判断的长度),那么不需继续判断。在找组合时,如果无法与前一个

2017-02-14 09:49:21 294

空空如也

空空如也

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

TA关注的人

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