自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线段树离线处理专题

如果说算法是程序的灵魂,那么数据结构是程序的肉体。掌握基本的数据结构,并且能灵活运用这些数据结构,是信息学竞赛中常用的一些招法。在竞赛中,学会这种数据结构在当今的比赛中已经处于落伍地位,如何运用这些数据结构处理问题,才是我们需要掌握的真正本领。       在阅读以下的知识时候,博主默认各位朋友已经了解并且能合理使用线段树进行相应的增删改查操作,这些知识网上很多(推荐NotOnlySucces

2014-07-27 00:59:11 1063

转载 矩阵新理解

这是很早以前已经看过的,最近无意中又把保存的文章翻出来时,想起很多朋友问过矩阵,虽对矩阵似懂非懂,但却很想弄懂它,希望这几篇文章能帮你一下,故转之:线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙。比如说,在全国一般工科院系教学中应用最广泛的同济线性代数教材(现在到了第四版),一上来就介绍逆序数这个“前无古人,后无来者”的古怪概念,然后用逆序数给出行列式的一

2013-09-29 23:57:44 1047

转载 高斯消元法求解行列式

转自:http://blog.ac521.org/?p=53利用高斯消元法形求解行列式的值,高斯消元就是这样的一个过程。我们都知道行列式的代数性质(注意,第n+1列存储本方程等号右侧的系数)。这样,把第一行的要消去的元的系数和下面几行的相应的元的系数通过放缩化成一致(由于是实数,只放缩其中一个系数即可),进行减法即可消去该元。然后依次用第i行消去[i+1,n]的xi,直到只剩两项,即xn的

2013-07-22 14:50:20 5171 1

原创 CF #190(DIV2)总结

首先说说做CF的感受把:大多数是智力题,而且偏向某个方向很严重,而且答案具有开放性,可以有多种解。所以这轮的主题也就是“贪心”。                                                                                                                    A. Ciel and Danc

2013-07-16 23:09:02 745

原创 光做不总结是没有用的

是时候组织一波近期做题的题解,回顾并总结,这样才有效果。做题不在多,关键在于掌握了多少。

2013-07-16 22:19:55 460

转载 poj 3321详细树状数组

http://blog.csdn.net/zhang20072844/article/details/6703432以后忘记的时候再查查

2013-07-11 22:44:20 407

原创 HDU 4545 魔法串

题目描述就不再赘述,意思是将一个串2进行两种操作(1)删除一个元素,(2)更改一个元素,但是是有条件的更改,要满足转换表,不能随意改换。最后问是否能将串2变为串1(保证len1     不知道还记不记得有这么一个题,要求将一个串变为另一个串,可以进行操作:任意删除、增加、改变字符,嗯。。貌似是叫什么edit distance的题,那么这题其实就是edit distance的晋级版,要求更苛刻了

2013-05-18 16:45:35 399

原创 STL 优先队列priority_queue 使用练习

为了掌握简单的STL内容,遂学习优先队列后,做一题以加强记忆~    题意:合并果子,相信很多人都知道了,将n堆果子合并,每合并任意两堆,耗费为这两堆的果子数目,求最小花费将其合并为一堆。    直接优先队列搞起。    #include#include#include#include#include#include#include#include#

2013-04-04 20:39:51 497

转载 STL优先队列的使用方法

优先级队列,以前刷题的时候用的比较熟,现在竟然我只能记得它的关键字是priority_queue(太伤了)。在一些定义了权重的地方这个数据结构是很有用的。先回顾队列的定义:队列(queue)维护了一组对象,进入队列的对象被放置在尾部,下一个被取出的元素则取自队列的首部。priority_queue特别之处在于,允许用户为队列中存储的元素设置优先级。这种队列不是直接将新元素放置在队列尾部,而是放

2013-04-04 20:14:57 505

原创 寒假练习 1021 Pascal's Travels

题意:从map[0][0]走到map[n-1][n-1]有多少种不同的走法     要求:每次只能移动map[i][j]里面数字的距离(不多不少),而且只能向下或者向右移动     典型DP,dp[i][j]代表走到map[i][j]这个位置时候的方案数     那么状态转移方程: dp[i][j]=dp[i+map[i][j]][j]+dp[i][j+map[i][j]];

2013-04-01 23:04:19 404

原创 寒假练习 1020 小白鼠

题目大意:给定一些瓶子,以及每个瓶子的有毒概率,现在将几个瓶子混在一起给小白鼠实验,然后要求出最少的实验次数,找到那个有毒的瓶子。     这个题目啊,看完以后呢,是不会有什么想法的,但是只要你画一下图,你就知道它要干什么,为什么?(你按题意画画就知道了),其实本题愿意就是考察最后搜索二叉树,一个较为难想的DP题,具体的话,查查算法书~     这里就简单说一下实现吧,就是找两个最小概率的

2013-04-01 23:01:35 495

原创 寒假练习 1018 没有上司的聚会

树形DP的问题    题目大意:有一群人,有上下级关系,每人都有一定的欢乐值    下级不能和直接上司一同去参加聚会,要求出最终的最大的欢乐值    依照题意可以建造一颗树形结构的图(用邻接表储存,速度快)    对于某个结点x,dp[x][]表示以x为根结点的子树的最大欢乐值    那么,dp[x][0]代表x不去参加聚会所能得到的最大欢乐值

2013-04-01 22:44:38 589

原创 寒假练习 1017 To the Max

经典的DP了,跟这题打交道也有许久了,简而言之,就是求子矩阵的最大和。#include#include#includeint main(){ int a[103][103]; int b[103]; int i,j,k,p,q,n; while(~scanf("%d",&n)) { int max

2013-04-01 22:41:41 472

原创 寒假练习 1016 滑雪

题目大意就是说给定一个矩阵,里面的值代表这点的高度,要求只能从高处滑到低处。问最远能划多远。      简单的DP,是poj的一道题。#include#include#include#define maxn 106#define inf 9999999#define up i-1,j,map[i][j]#define down i+1,j,map[i][j]#d

2013-04-01 22:40:17 418

原创 寒假练习 1015 Edit Distance

这题就是算法书上的一个简单的DP题目。    题目大意:给定两个字符串:a,b    有三种改变方式:     1.加一个字符      2.删去一个字符     3.改变一个字符    每一个改变为一次操作,求出将a变为b的最小操作数    利用动态规划的思想解决。#include#include#include#define maxn 1006#

2013-04-01 22:38:49 446

原创 寒假练习 1014 Big Event in BIT

题目大意:有n种物品,每种物品的价格和数量已知,现在要求将这些物品分成两个集合,使两个集合的总价值的差最小。这就是典型的多重背包问题。#include#include#include//多重背包问题 int dp[250001],val[102],num[102];//dp一定要足够大 int main(){ int n,i,j,k; int s

2013-04-01 22:36:29 415

原创 寒假练习 1013 Bone Collector

题目大意:给定一定量的背包容量V,对于不同的物体,有不同的价值与容量,求所能获得的最大价值。典型的01背包问题#include#include#include#define max(a,b) a>b?a:b//DP问题 0/1背包问题 int w[1002];int c[1002];int dp[1002];int main(){ int i,j,

2013-04-01 22:35:11 453

原创 寒假练习 1012 导弹防御问题

这题题目大意很清楚,之所以一开始没做是因为理解出错。    因为导弹不能上升,所以:     第一个要求是求出某枚导弹的最多拦截个数,这个很好理解,就是求解不上升的最长子序列    第二个要求是求出最少的拦截导弹个数,因为一枚导弹发射出去后就不能上升,所以要求出需要多少枚导弹,就是求出最长上升子序列,相当于敌机是一架一架的来, 一枚导弹一经发射就不可能后退或者上升,所以为对付后来的上升

2013-04-01 22:33:48 466

原创 寒假练习 1010 Maximum Sum

题目大意:给定一个序列,求出序列的最大连续子序列的和。典型的DP,就不解释了,dp[i]代表i元素之前最大子序列和的值。#include#include#include#define min -99999999//DP问题 int sta,end;int main(){ int n,i,j,t,sum,maxsum,in,b; scanf("

2013-04-01 22:30:59 439

原创 寒假练习 1009 Number Sequence

题意:给定序列a1a2a3...  定义ai代表1234...i,现在给定位置n,求解出这个位置的数字是多少。   一开始想法简单,妄图利用几个计算就可以判断,   但是后来发现问题,对于序列a12:123456789101112,它是有15位数的,所以不能简单的通过等差数列求和来解决,因为数据量比较大,所以普通方法会超时   那么怎么办呢?这里利用到一个知识, 确定i的位数的方法,i

2013-04-01 22:29:26 445

原创 寒假练习 1008 Putting Apples

首先要感谢组合数学老师啊~不然还一直坑死在这题呢(一直想用组合数求解)   题目大意是:把n个相同的苹果放入k个相同的盒子里,可以有空盒子,问有多少种方法数?    首先分析一下这个题目的要求:    将n各相同的苹果放入k个相同的盒子里面,问有多少种方法?    最简单的理解就是使用斯特林数(组合数学来求解), 但是由于斯特林数求解方法没有显式公式,所以比较难写,

2013-04-01 22:16:13 481

原创 寒假练习 1007 Number Converter

题意:给定两个数子N,M,求A在B的进制情况下,表示成什么?        简单的进制转换嘛~#include#include#includeint main(){ int n, k, i, a[100]; while (scanf("%d%d", &n, &k)!=EOF) { i = 0; if

2013-04-01 22:12:46 401

原创 寒假练习 1006 The most frequent number

题意:给定一个序列,求出其中出现最频繁的数字。    先来一个快排,将所有的序列排列,然后遍历这个数组,得到每个数出现的次数并不断更新,最后就可以得到答案,用算法分析来看就是,快排O(n*log n) + 遍历维护O(n) = O(n * log n);#include#include#includeint cmp(const void * a, const void * b)

2013-04-01 22:10:07 517

原创 寒假练习 1004 Who is the Smartest Man

题意:曹操为了提高智商,与其他人对战,一开始有一个基础的IQ值,每战胜一人(即只要其IQ比这个人大),然后就可以增长2点的IQ,如果两人IQ相等,则增长1点IQ,现在问如何弄,可以获得最大的IQ值。    典型的贪心算法  先找比自己大的人比  让IQ += 2,然后再 IQ++ ;       先来一个快排 ,在找到第一个比 IQ 大的数,从这个数后 找比它大的数比 ,后又回溯就可以了。

2013-04-01 22:00:58 477

原创 寒假练习 1003 Exchange for Cola

题意:有一个促销活动,A个瓶盖换B个瓶子,可以借一些瓶盖,但是最后要保证能还回去,现在有N个瓶盖,问最多喝多少瓶饮料?典型的数学问题,具体推导见上图。#include int main(){ long long int N,A,B,sum; while(scanf("%lld %lld %lld",&N,&A,&B)==3) { s

2013-04-01 21:59:10 546

原创 寒假练习 1002 Roman numerals

题意:就是给一个罗马数字,然后要你求出这个数字所代表的值是多少?    简简单单的字符串处理~不过是代码写的有点难看~_~#include#include#includeint main(){ char array[100000]; int cishu; int length; scanf("%d\n",&cishu);

2013-04-01 21:56:31 518

原创 寒假练习 1001 Average Numbers

题意:给定一个序列,a1,a2,a3,a4,a5.....,an,求这样的序列,这个序列里面的每个值i代表原序列除了ai这个数之后的平均值==ai,如没有这样的序列,输出0;很简单的水题。#include#include#includeint main(){ int a[200002]; int b[200002]; int i,j,n,t,hu;

2013-04-01 21:53:24 477

原创 寒假练习 1000 A+B

高精度加减法,用的是一个模版,不能解决前导0的问题,但是很好用。#include#include#includevoid sub(char s1[],char s2[],char t[]){ int i,j,l2,l1,k; l2 = strlen(s2); l1 = strlen(s1); if(l2 > l1){ p

2013-04-01 21:51:12 553

原创 HDU 4515 小Q系列故事——世界上最遥远的距离

题目大意:给定当前时期2013.3.24(坑爹啊,比赛那天是3.23啊),求解往前退d天的日期,和往后进d天的日期。水题,就是要注意~  #include#include#include#include#includeusing namespace std;int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

2013-03-30 13:21:37 561

原创 HDU 4512 吉哥系列故事——完美队形I

题目大意:给定一个序列,求解出这样的序列,使得这个序列在原序列中相对位置不变,从a[0]到a[middle]上升,从a[middle]到a[n]下降,且关于中间元素对称的最长的序列,输出最长的长度。     这题一开始没想太懂,后来看了别人的算法,突然明白过来原来是求解最长公共上升子序列。为什么呐?     因为这里要求解对称的先上升后下降的序列,试想将序列倒置后与原序列求解最长公共上升子

2013-03-30 13:03:58 463

原创 HDU 4510 小Q系列故事——为什么时光不能倒流

题目大意就是给定当前时间,给定想要回去的时间长度,求解回去的时间点是什么时候,简单的模拟计算题~#include#include#includeint main(){ int Tcas; scanf("%d",&Tcas); while(Tcas--) { int a,b,c; int x,y,z;

2013-03-30 12:52:14 413

原创 HDU 4509 湫湫系列故事——减肥记II

题目大意,给定一些时间段,表示被占用,求解一天之内没有被占用的时间(以秒为单位)。      额,对于这题来说,也就是这样的了,一个hash判断,hash[i]表示第i秒是否被占用,占用为true,否则false,然后暴力枚举就搞定~但是试想如果这题题目数据量巨大,比如说统计一年的数据量?     肿么破?暴力枚举是不行的了,那怎么办呢,对于区间统计的题目啊,线段树什么的最好用了,所以可以

2013-03-30 12:43:48 539

原创 HDU 4508 湫湫系列故事——减肥记I

题目大意略,简化为完全背包DP,有n件物品,最大容量是m,每件物品有一个价值和容量,求可以获得的最大收益?     就不再分析了,dp[i]代表容量i的背包最大的收益 #include#include#include#include#include#define max(a,b) a>b?a:b#define maxn 106using namespace

2013-03-30 12:34:38 515

原创 HDU 4506 小明系列故事——师兄帮帮忙

这题就是给定一个序列,进行变换:a[i] = a[i - 1]’ * K,求解一定时间后,整个序列变成什么样?     题目虽说是简单模拟,但是数据量巨大long long,普通必超时,那么肿么办?快速幂呗~#include#include#include#include#include#define maxn 10006#define Mod 1000000007

2013-03-29 23:11:32 517

原创 HDU 4505 小Q系列故事——电梯里的爱情

题目大意就是电梯开门时间5,每下一个人1,每上一层6,每下一层4,求解最后的时间。一道简单的模拟题,首先是要对所有的人的下电梯楼层进行一个排序。然后就可以模拟了。#include#include#include#include#include#define maxn 1000using namespace std;int a[maxn];int main

2013-03-29 23:07:22 469

原创 HDU 4504 威威猫系列故事——篮球梦

题目大意:对于当前局势:比分A : B,还剩T时间,我方有三种得分方式:得1分,得2分,得3分;对手每次只能得1分,每次进攻耗时15秒,不足15秒不得进攻。     鉴于前面的几题DP,所以一看到有想到DP了(为什么?为什么?因为我方得分方式描述很容易想到状态转移方程),那么根据计算,我方最多进攻20次,就算每次得3分,那也只是20*60的状态量,good~很容易就ko。    #in

2013-03-28 21:14:58 709 3

原创 HDU 4503 湫湫系列故事——植树节

题目大意:有n个小孩,给出他们每个人认识的人的数目,且已知:a与b认识,那么b就与a认识,求解任选三个人他们之间的关系是相同的概率?   (即要么三个互不相识,要么三个都相互认识)     考虑相反的情况:选出的三个小孩中有两人认识    或者一个人认识其余两人,建图模型后即排除有1边和2边情况       随机选三人sum = C(n,3),不满足的情况种类:    小孩

2013-03-28 21:01:30 420

原创 HDU 4502 吉哥系列故事——临时工计划

刚看到这题的时候想到的是用最短路求解,大体思路是这样的:建立这样的一张图,如果s天到e天有工作,就在s到e这里连一条边,权值为工钱,第n天与第n+1天都连权为0的边,求解0到n+1的最短路就行。鉴于对最短路模版不在身边的情况,所以只能作罢,另想一个解法,那便是DP的解法(也许是受前面那题的影响吧~)。   DP解法:这题关键不是创立状态量,因为dp[i]表示前i天能获得的最大收益,这是很好想的

2013-03-28 20:56:08 506

原创 HDU 4501 小明系列故事——买年货

简单的多重背包,就是状态量有点多啊, 但是还是很好想的,总之简单的DP题。    题目大意就是:n个物品,每件物品有三个参数:    (1)a:购买物品的价钱    (2)b:兑换这件物品所需要的积分    (3)val:物品的价值     现在知道三个值,总钱数v1,总的积分数v2,还有优惠活动可以免费获得k件物品。     现在求解可以获得的最大价值。   对于DP

2013-03-28 20:26:47 492

原创 HDU 4500 小Q系列故事——屌丝的逆袭

这题就是签到题,一开始看到0.2秒的限时,以为是有什么坑,结果呢?水~~~      题目描述是中文,所以都看得懂,简化为问题:给定一个矩阵,里面有一些值(有正有负),定义一个点价值为相邻上下左右与其不同正负性的相加再减去与其正负性相同的值,求最大的价值,并输出行列号,还要什么最小行号,最小列号~~其实都一样,只要更新max_ans的时候,从上到下,从左到右更新,遇到相等的情况不更新,最后就行

2013-03-28 20:01:15 449

空空如也

空空如也

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

TA关注的人

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