自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小G的ACM之路

一个在艰难爬坑的菜鸟

  • 博客(43)
  • 资源 (6)
  • 收藏
  • 关注

原创 HDU - 5004 KAMI(回溯+dfs)

题目大意:这题的规则和KAMI游戏的规则相同。可以百度一下这个游戏。规则大概如下:有一个 16*10 由4种颜色组成的图,你可以用任意一种颜色对这个图上颜色不相同的点进行染色,染色的同时,其周围上的颜色相同的点,也被染色成你要染的颜色。问你能否用至少n步,将图片染成1中颜色。解析:此题给出了最小步数n其实对于每次选择一个点变颜色,等价于每次都对同一个点改变颜色。

2014-10-31 19:47:47 1257

原创 UVA - 10003 Cutting Sticks(dp和记忆化搜索两种解法)

题目大意:有一根长度为L的木棍,还有n个切割点的位置(按照从小到大排列)。你的任务是在这些切割点的位置处把木棍切成n+1部分,使得总切割费用最小。每次切割的费用等于被切割木棍的长度。例如,L = 10,切割点为2,4,7。如果按照2,4,7的顺序排序,费用为10+8+6=24,如果按照4,2,7的顺序,费用为10+4+6=20解析:这题有两种解法记忆化搜索和dp,但是状态转

2014-10-30 20:23:30 1117

原创 UVA 674 Coin Change(完全背包)

题目大意:有5种硬币,分别为50分,25分,10分,5分,1分。现在给你一个数字n,问你能用多少种方法组成该数字。例如:1111 = 5*2 + 111 = 1*1111 = 1*6 + 511 = 10*1 + 1共4种方法。解析:刚刚看这题时候没什么思路,看了gg学长(水果君的日常)的解题报告,才明白怎么做。这题有两种做法,递推和记忆化搜索。记忆

2014-10-29 16:17:11 765

原创 UVALive 2326 Moving Tables(贪心+不相交区间问题)

题目大意:著名的计算机(高级电脑制造商)公司租了一个楼层的建筑物,其形状面积描述如下:这个楼层在沿着走廊的北面和南面有200个房间。最近该公司提出了计划改革系统。改革包括搬动客房里的多很桌子。由于走廊狭窄,所有桌子都很大,只有一张桌子可以通过走廊。就需要些让搬动更加有效率的方法。经理想出了以下计划:搬动一张桌子从一个房间到另一个房间可以在10分钟内。当搬动一张桌子从房间i到房间j,

2014-10-29 15:56:00 819

原创 UVALive 2322 Wooden Sticks(贪心)

题目大意:有n根木棒,我们预先知道了这些木棒的长度l和重量w,现在要将这n根木棒送入机器进行处理。第一个木棒处理的时间为1min当前木棒的长度为l,重量为w,当前木棒右边的木棒长度为l',重量为w'。如果l'>=l,w'>=w,这处理右边这根木棒时,不要花费时间,否则花费1min时间。请输出最少需要花多少的时间。解析:贪心题,可以先将木棒进行排序,先按照长度进行

2014-10-28 20:39:30 738

原创 UVA - 727 Equation(中缀式转后缀式)

题目大意:输入一个中缀式子,将其转换为后缀式注意每行输入一个操作符,或者一个操作数操作数用一个单个的数字代替解析:中缀式转后缀式的规则如下。首先需要分配2个栈,一个作为临时存储运算符的栈S1(含一个结束符号),一个作为输入逆波兰式的栈S2(空栈),S1栈可先放入优先级最低的运算符#,注意,中缀式应以此最低优先级的运算符结束。可指定其他字符,不一定非#不可。从中缀式的左端

2014-10-28 18:50:29 1877

原创 UVA 10405 Longest Common Subsequence(最长公共子序列)

题意:给你两个字符串,要你求出最长公共子串。

2014-10-28 11:29:22 685

原创 UVA 103 Stacking Boxes (DAG上的动态规划)

题目意思:给定n个k维的盒子,问我们能够嵌套的盒子最多有几个,输出个数和嵌套的盒子的编号。解题思路:1. 先将盒子的每个边从小到大进行排序2. 建图,如果一个箱子比另一个箱子小,该边就标记为13. dp求出每点最长的升序的长度4. 取出最长dp数组,输出他的升序序列。

2014-10-27 23:40:55 685

原创 FZU 2148 Moon Game(暴力+几何)

题目大意:给出n个点,判断可以组成多少个凸四边形。解题思路:因为n很小,所以直接暴力,判断是否为凸四边形的方法是:如果4个点中存在某个点D,Sabd + Sacd + Sbcd = Sabc,则说明是凹四边形。注意这里有个坑点,因为枚举出的每个点,都有可能为内心,所以4种情况都要判断。#include #include #include using namespa

2014-10-26 21:21:32 694

原创 HDU - 1087 Super Jumping! Jumping! Jumping!(dp)

题意:求一个升序,且和最大的序列,输出出该最大序列的和。解析:dp,用一个dp数组存储子问题的解。(dp对应的下标i,从0到i,最长上升子序列的和)从头开始,遍历每一个数,开始第一重循环。对每一个数,又从头遍历到这个数的前一个数,这是第二重循环,在第二重循环中,用下标j表示当前遍历到的数,如果num[i]>num[j],则说明num[j]和num[i]能构成一个上升子序列,但此时还

2014-10-25 19:09:21 587

原创 UVA-111 History Grading(dp+最长公共子序列)

题意:一个历史考试,有n个历史事件, 它们之间的年份是不同的,要学生把这些事件按照正确的顺序排列出来。有两种记分方式,采用的是第二种: 假设有历史事件1,2,3,4, 它们正确的时间顺序是1,2,3,4, 然后假设学生的答案是1,3,2,4, 那么按照相对顺序正确的数量,答对了三个(1,2,4或者1,3,4),也就是它与正确答案的最长公共子序列长度是3,便是答对的数量。请你求出答对的数

2014-10-25 12:45:44 814

原创 HDU-2087 剪花布条(kmp)

题目大意很好理解,我就不啰嗦了,直接贴代码。

2014-10-25 12:14:44 933

原创 HDU-1711 Number Sequence(kmp入门)

这题是kmp的模板题,关于kmp的解析我认为这篇博文写得bi

2014-10-25 12:06:59 635

转载 NYOJ-28 大数阶乘

题意:对于比较小的n,求其阶乘的时候可以用递归解决。但是如果n很大的时候,比如1000,那么n!肯定超出整形数据所能表示的范围。因此必须采用其它方法解决,通常解决大数运算数据超出范围的问题时采用数组去模拟。其实求算n!可以看成是每次两个整数相乘的过程,因此可以模拟成大数相乘的过程。只是需要增加一些变量去存储中间临时变量。

2014-10-24 20:55:46 1010

原创 【索引】Volume 4. Algorithm Design

AOAPC I: Beginning Algorithm Contests (Rujia Liu)Volume 4. Algorithm DesignUVA10905 - Children's Game10763 - Foreign Exchange 10132 - File Fragmentation270 - Lining Up10341

2014-10-23 20:25:52 700

原创 UVA - 10148 Advertisement(区间选点问题)

题意:这题是区间选点问题的改版。大概翻译一下:一广告商想在一条街上贴小广告,于是他随机采访了n个慢跑者,得到了这些人每天经过这条路的起始位置和结束位置,现在广告商要让,这些人经过的路上至少贴上k个广告,如果距离比k小,则全贴广告。现在要求你求出最少贴多少的广告,才能满足上述要求,并把贴广告的点,全部输出。两个样例直接输出一个空行。解析:从第一个区间遍历到最后一个

2014-10-23 20:18:48 757

原创 UVA 757 Gone Fishing

题意:单位时间为5分钟,给你个数n代表有n个池塘,还有h个小时。每个池塘有两个属性f,d,f代表池塘单位时间内可以钓到的鱼,d代表每个单位时间池塘可以钓到的鱼会减少d。在给定每个池塘之间路程所需要的单位时间ti。例如t3代表从2到达3所花的时间。现在给你n行f,和n行d,和n-1行t要求出在h小时内,最多能钓到多少鱼,以及在每个池塘花掉的时间,人一开始在第一个池塘。

2014-10-23 16:01:49 861

原创 UVA - 10041 Vito's Family(贪心)

题目大意:一个黑社会老大要搬家到纽约的某一条街上, 他在那条街上有很多的亲戚朋友,要找到一个地方,使得这个地方走到所有亲戚朋友家的总距离最短,输出总最短距离。解析:可以将题目理解为在一个数轴上有r个点,输出其中某个点到所有点距离最短的总和,输出最短距离。注意某个点上可能存在多个重复的点。贪心,不要被重复点给迷惑了,以为放在点数最多的位置上,总距离最小,其实放在中位数的点距离最小

2014-10-21 19:21:38 819

原创 CodeForces 361B

题目大意:输入n,k,其中n代表有这个序列中的数字为1~n现在你要将这个数进行排序,使得其每个位置i上的数字Pi,gcd(Pi,i) > 1,则代表该位置上的数字漂亮,如果你能使得排序上的漂亮的位置的个数恰好为k,则输出该排序。如果不存在这个排序,则输出-1。解析:刚刚开始思路错了,想用暴力求解。后来听了yh同学的解答,才明白怎么做。如果两个数相邻则他们的最大公约数只可能为1,

2014-10-20 20:46:26 777

原创 Codeforces 363C. Fixing Typos

题意:告诉你一个字符串,使得字符串满足下面条件:1.一个串若结尾的两个字符相同,则这个串后面的两个字符不能相同。2.不存在连续相同的三个字符。求删除最少的字符,使得字符串满足上面条件。解析:直接用栈来求解,先往栈内压人前两个字母,因为前面的尽量不要删除,删除中间的,这样可以减少删除字母的次数。依题意,有两种情况,当前字母无法入栈1. 如果当前的字

2014-10-20 15:27:09 824

原创 codeforces 363B round211 div2 B. Fence

题目大意:题目意思是给你两个整数n, k ( 1表示有n个宽度相同的木板 然后给你一行n个整数代表从1到n个木板的高度h ( 1这些木板是有序的 但是不循环问你要拆除k个连续的木板 而且这k个木板的高度之和为所有可能性中最小时,输出该k个木板第一个木板的序号解析:简单dp,可以开一个数组来记录前i个木板的总和。可以拆除时就是有k个木板的时候开始记其木板总和找最小的,每次读入

2014-10-20 15:20:40 892

原创 Codeforces 363A Soroban(算盘模拟)

题目大意:算盘模拟题,从小到大来看,左边珠子向右移动一格为5,右边珠子向左边移动一格+1

2014-10-20 15:10:22 1043

原创 UVA - 108 Maximum Sum(最大子矩阵和)

题目大意:给一个N*N大小的矩阵,每个格子上有一个数字。 求这个矩阵中的子矩阵上面数字之和最小的数字是多少。解析:将二维矩阵转换为一维,再用最大子段和的思想求解,和上题的思想差不多。

2014-10-19 15:38:15 993

原创 UVA - 10827 Maximum sum on a torus(dp最大子矩阵和)

题目大意:经典的最大连续和问题的变形,从一串数变成矩阵,且行列首尾相连;解析:1. 如何解决首尾相连的问题,可以将矩阵拓展为原来的4倍。2. 对付矩阵,降维,将多行累加到一行; 假设最大子矩阵的结果为从第r行到k行、从第i列到j列的子矩阵,如下所示(ari表示a[r][i],假设数组下标从1开始):  | a11 …… a1i ……a1j ……a1n |  |

2014-10-19 14:51:24 1075

原创 UVA - 507 - Jill Rides Again (dp最大子段和)

题目大意:Jill喜欢骑自行车,但是自从他的城市有了公交系统后,他就比较少骑车了,于是他买了一个折叠自行车,这样他就可以把自行车带到公交车上,当他下车后,他就可以继续骑车。现在b条道路,每条道路有n个公交站点,两个站点间都有一个喜欢值,现在问你能否求出,哪两个站点间的喜欢值最大,如果有多个最大值,输出其中距离最远的站点。解析:题如果用普通枚举起点和终点的O(n^3)肯定超时

2014-10-18 19:57:44 921

原创 UVA-11129 - An antiarithmetic permutation (分治)

思路:对于一个等差的序列。如0 1 2 3 4 5 我们可以这样做,把他分离成2部分等差子序列0 2 4和1 3 5然后组合成一个新的序列0 2 4 1 3 5。这样做的话,可以保证前半部分无法和后半部分组合成等差数列。证明:一个序列的等差是k,首项为a1,序列为,a1, a1+k, a1+2k, a1+3k ... a1+(n-1)k。分成的两部分为a1, a1 +

2014-10-18 19:04:56 856

原创 UVA-10720 Graph Construction(Havel-Hakimi定理)

Havel-Hakimi定理主要用来判定一个给定的序列是否是可图的。首先介绍一下度序列:若把图 G 所有顶点的度数排成一个序列 S,则称 S 为图 G 的度序列。一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的。判定过程:(1)对当前数列排序,使其呈递减,(2)从S【2】开始对其后S【1】个数字-1,(3)一直循环直到当前序列出现负数(即

2014-10-17 20:38:20 642

原创 UVA-10245 The Closest Pair Problem(最近点对问题)

题目大意:给你在n个在二维平面坐标系上的坐标,要你q

2014-10-17 18:15:45 892

原创 UVA - 11100 The Trip, 2007(贪心)

题目大意:给你n个箱子的尺寸,大的箱子能套小的箱子,现在你要用大的箱子来套小的箱子,使得总箱子数量最小,并在总箱子数最小的情况下,使得套的层数尽量小。解析:不用说肯定是贪心,由于相同大小的箱子不能互相嵌套,所以外围箱子的个数取决于最多箱子的个数,那么最多箱子的个数k确定下来了。那么就按照1,2,3...k,1,2,3..k,这样输出就好了。

2014-10-16 19:53:22 758

原创 UVA-10716 Evil Straw Warts Live(贪心+模拟)

题意:给定一些字符串,要求出能否通过交换相邻的字母变换为回文。如果可以输出最少变换次数。解析:贪心1、首先要预判一下是否可以构成回文串,如果字符串中没有或只有1个字母是奇数。就可以组成。剩下的工作就是看怎么移动了。2、每次从第i个字母开始,和它反向的字母进行比较如果相同不用进行任何操作,否则从该字母对应的反向往前找到一个相同字母,放到最后就是匹配了。每次移动的次数为当前位置

2014-10-15 16:12:00 739

原创 Uva-993 Product of digits(简单贪心)

题目大意:能否找到一个自然数q,使它每位上的数字的积,等于n,如果q存在,就输出q,不存在就输出-1解析:这是一道简单的贪心题,从9到2,对n进行分解,然后把因数存在一个数组中,如过最后n > 1就输出-1,否则反向输出那个数组。

2014-10-14 20:59:46 697

原创 Uva-10670 Work Reduction(贪心)

题目大意:老板要你要完成N份任务,完不成就炒鱿鱼,但是你是不可能全部完成,所以需要雇佣代理来做,做到剩下M份时,自己再亲自出马。现在有L个机构,有两种付费方式A和BA为完成一个工作,所需要的价格B为完成全部工作的一半,所需要的价格现在题目要求,你对所有l个代理进行分析,分析他们每个完成到M时,所用的价格是多少。分析完按照价格升序排序,如果价格相同按照字典序小的进行排序。

2014-10-14 20:23:18 654

原创 FZU - 2150 Fire Game(bfs)

题目大意:平面上有n堆草,两个人想在上面OOXX,一个人只能烧一堆草,草烧着的话一个单位时间后会烧着它周围四个方向的草,如果草堆大于2个他们就不能烧完输出-1,输出最少要多长时间他们能把草烧完。注意两个人可以同时烧同一堆草。解析:枚举图中所有草地,找到任意两块不一样的草地,然后bfs求出烧掉所有草的最短时间,可以将两个初始状态都push进队列,这样就可以模拟两堆草同时燃烧的情况

2014-10-13 21:19:22 1228

原创 POJ 2386 Lake Counting

题目大意:N*M表格,W代表水域,其他代表空地。相邻点形成整片的水域,问一共有几块水域。解析:DFS基础题,直接8个方向dfs,相邻点标记。

2014-10-13 15:15:28 617

原创 HDU 2212 DFS(水题)

题目大意:求出1到2147483647,中每位的阶乘的和等于该数的数。如1!+4!+5!=145解析:水题,直接求解+打表。

2014-10-13 15:01:05 771

原创 HDU 1518 Square(回溯)

题目大意:给你n个棍子,要求将所有的棍子都用上,拼成一个正方形。解析:回溯+剪枝,用一个pos来记录搜索到的位置,当下次搜索时,从上一次结束的位置开始搜索。总结:这题写剪枝的时候把dfs(i+1,sum+s[i],cnt)写成了dfs(pos+1,sum+s[i],cnt),结果一直超时,浪费了好的时间来找错误,下次要吸取教训。

2014-10-13 14:52:06 790

原创 UVa 10382 - Watering Grass(贪心+区间覆盖问题)

题目大意:在一个长为l,宽为w的草坪上,有n个洒水器,现在题目告诉你每个洒水器的位置p和洒水的半径r。问你能否用最少的洒水器覆盖整个草坪。如果可以输出最少洒水器的个数,如果不能输出-1。解析:将洒水器转换为一个矩形的区间,让后用区间覆盖问题求解。总结:这题超时了好几次,看来题解才水过的。

2014-10-12 18:13:17 864

原创 UVA-11054 Wine trading in Gergovia(贪心)

题目大意:在一个小镇上每个人都是销售员,每个人都已买葡萄酒和收购葡萄酒为生,有趣的是,买葡萄酒的总量和收购葡萄酒的总量相同,现在要把葡萄酒卖给需要收购葡萄酒的人,但是葡萄酒的运费 = 葡萄酒的数量 × 路程。相邻的居民路程为1。现在给你n个数字,ai代表第i户居民,买或者卖的葡萄酒量,其中ai >= 0代表买的葡萄酒量,ai 解析:1、第一个村庄可以与第二个村庄交易,所以转移量

2014-10-12 14:58:19 772

原创 UVA - 10718 Bit Mask(贪心+位运算)

题目大意:输入3个数 n,l,u,问你能否找出一个数m,在满足 l 解析:直接暴力求解肯定tle,所以这题要用贪心+位运算。从二进制的高位到低位扫描,(1)如果当前n的二进制位为1,尽量让m该位变为0,但是如果当前二进制位置为1都小于l,则该位置保持1。(2)如果当前n的二进制位为0,尽量让m该位变为1,前提是要让当前的二进制位为1,小于u,否则该位置为0。

2014-10-12 11:46:11 760

原创 UVA - 10400 Game Show Math(回溯)

题目大意:给定n个数字,问能否

2014-10-11 19:59:47 922

java局域网聊天(模拟QQ)

本程序实现了注册登入,私聊,群聊,文件传输的功能。 程序需要连接MySQL数据库,所以需要先安装MySQL数据库,然后执行建表语句,才可以运行。

2015-01-01

java十五数码图形界面程序

本程序是用java实现,15数码逻辑的逻辑部分是用c++生成的动态链接库实现的。 15数码的可能状态有 15!/2 这么多,不可能全部算完,所以这里我是用A*算法,寻找50之内,最接近答案的解,如果当前的状态没有找到答案,那么继续查找,最后肯定能复原。

2014-12-23

winmanager

winmanager插件,集合了taglist窗口,显示文件夹的目录结构并显示程序中的宏\函数\变量等

2014-09-15

ctags58.zip

ctags(Generate tag files for source code)是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。

2014-09-15

taglist_45.zip

taglist_45.zip包,加压把doc,plugin,auto中的东西风别放到vim对应的目录中去

2014-09-15

C++函数手册

一份比较全面的C++函数手册,欢迎大家下载

2014-08-18

空空如也

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

TA关注的人

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