自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员充电站(itcharge)

高效率编程,慢节奏生活。

  • 博客(28)
  • 资源 (3)
  • 收藏
  • 关注

原创 HDU1059_Dividing【多重背包】【二进制】

题目大意:给你价值为1、2、3、4、5、6六种宝石的个数,把它按价值平均分成两份,不能切割,不能分开。问是否能平分思路:多重背包问题。先判断下宝石总价值是不是偶数,只有偶数才能平分。若是偶数在用多重背包左。只要总容量为价值的一半的背包能装满就能平分。多重背包用了二进制的思想。

2014-11-28 08:14:31 1151

原创 HDU1395_2^x mod n = 1【数论】【水题】

题目大意:给你一个数N,判断是否存在x,满足2^x mod N = 1。若满足,对于满足条件的最小x,输出2^x mod N = 1,否则输出2^? mod 2 = 1。思路:用到数论上的乘法逆元的规律了。乘法逆元:对于整数a、p如果存在整数b,满足a*b mod p = 1,则称b是a的模p的乘法逆元。a存在模p的乘法逆元的充要条件是gcd(a,p) = 1此题中,令a = 2^x,b = 1,p = n,则若存在x使得2^x mod N = 1,则gcd(2^x,N) = 1。1>.因为

2014-11-27 16:33:02 1699

原创 HDU1393_Weird Clock【水题】

题目大意:有一块表,上边总共有0~59个刻度,每一刻度代表一分钟,给你当前的分钟s,和一个数d,d表示一次能顺时针转动d次s分钟。即一次能转d*s分钟,问:表能否转到0上边。若能转到0上,输出满足要求最小的次数;否则输出"Impossible"。思路:很奇葩的题目要求,按照要求求解即可,每次记得对6取余,因为表盘是以60为环循环的。

2014-11-27 15:31:27 1344

原创 HDU1931_Number Steps【水题】

题目大意:按照如图所示的规律和顺序给平面描点,给你坐标(x,y),判断(x,y)上是否有点,若有点,输出该点的值是多少。若没有点,则输出No Number。思路:可以看做是值为0,1,2,3的点组成的平行四边形的平移,或是递推得到。可看出0,1,2,3分别平移能得到4个差值为4的等差数列,只需判断点是否在这两条直线上,然后通过总结出的等差数列的公式计算出该点的值就行了

2014-11-27 11:36:34 962

原创 HDU1158_Employment Planning【DP】

题目大意:老板想要决定M个月每个月需要的工人数,已知雇佣一个工人的价格,工人的月薪,解雇一个工人的价格,又知道M个月每个月至少需要多少个工人。问:怎样雇佣工人,才能使得满足M个月工人需求的同时,付出最少的钱。思路:在M个月中求出最大的需求人数Max,那么无论下个月需要多少个工人,最多雇佣Max个工人也就够了。状态转移方程:dp[i][j] = min(dp[i-1][k] + cost)(num[i-1] <=k <= Max)意思是:第i个月雇佣j个人 = 当上个月雇佣k个人时的最小花费 +

2014-11-27 10:59:04 1569

原创 HDU2059_龟兔赛跑【DP】

题目大意:龟兔赛跑,总长度为N,兔子以恒定速度VR跑,乌龟骑电动车跑,当电动车有电的时候最多跑C幂,有电的时候以VT1速度跑,没电的时候以VT2的速度跑,已知路上有N个充电站,给你N个充电站离起点的距离。每次充电需要T秒,问最终乌龟有可能赢得比赛吗?思路:为了计算每个加油站距离下个充电站的距离,可将起点和终点看做是充电站。这样总共就有N+2个充电站,序号为0~N+1。从第一个充电站到第N+1个充电站,计算出从第0个充电站到第j个充电站在充满电的情况下跑到第i个充电站的最短时间dp[i]。最终答

2014-11-27 08:51:45 1864

原创 HDU1390_Binary Numbers【水题】【位运算】

题目大意:给你一个数N,输出N的二进制形式上为1的数位(从右至左)思路:每次(N&1)判断末尾是否为1,为1则存入数组ans[]中,不为1则不存,之后数位自增,N向右移一位,继续判断末尾……

2014-11-26 22:54:19 1978

原创 HDU1081_To The Max【矩阵压缩】

题目大意:给你一个N,接下来是N*N的矩阵。数有正有负,求最大的子矩阵和。思路:1003题是一维的求连续子序列最大和,dp[i] = max(dp[i-1]+a[i],a[i])这道题是求二维的子矩阵最大和。考虑将二维转化为一维的。二维数组的每一行都可以看做一个一维数组。map[i][j]数组上存的是第i行前j列上的和第k行上,dp[k][i] = max(dp[k][i-1]+map[k][i],map[k][i]),但是这样只能知道第k行前i个数的最大和是多少,而不知道是第k行上从第几列到第

2014-11-26 16:07:41 1258

原创 HDU1078_FatMouse and Cheese【记忆化搜索】

题目大意:有个N*N格子的正方形,每个单位格子里放有0~100块奶酪。有一只老鼠站在左上角,他每次只能水平或竖直移动k步,且它只吃它当前所站的格子的奶酪和比这个格子上的奶酪多的格子上的奶酪。问:这只老鼠最多能吃到多少奶酪。思路:从左上角(0,0)开始,找到一条最长的路径,使得这条路径上满足从(Xi,Yi)->(Xi+1,Yi+1)满足map[Xi+1][Yi+1]>map[Xi][Yi],且在水平方向上或竖直方向上所走步数2不超过k。这里用dire数组来存上下左右4个方向。j*dire[i][

2014-11-26 15:12:17 1167

原创 HDU1025_Constructing Roads In JGShining's Kingdom【LIS】【二分法】

题目大意:路两旁各有N个城市,一旁N个富城市,一旁N个穷城市,每个穷城市缺少一种资源(各不相同),每个富城市拥有一种资源(各不相同),穷城市p需要从富城市r得到这种资源,就得修路。为了不造成交通堵塞,修的路不能有交叉,问最多能修几条路,也就是有几个城市得到资源。思路:就是给你两边各N个点,在这两边连线,每个点只能连一次,问最多有多少线不交叉。把一边的点按升序排列,那么题目就转换为求另一边的最大上升子序列了,而这道题数据规模为500000,O(N^2)算法肯定超时,只能用栈+二分法的O(Nlog

2014-11-26 09:18:27 1208

原创 HDU1339_A Simple Task【水题】

题目大意:给你一个数N,输出满足N = o*2^p(o为奇数,p为非负数)的o和p值思路:除以2算出2的幂p,剩下的就是奇数o

2014-11-25 23:23:28 1155

原创 HDU1160_FatMouse's Speed【LIS变形】

题目大意:胖老鼠以为越胖的老鼠跑的越快。现在给你一些老鼠的重量和速度,直到输入到文件结束,问:你能否找到一系列数据,来证明越胖的老鼠跑调越慢最后输出满足条件的数据个数,并按顺序输出每组数据原本所在的行数。思路:先用结构体存起来每只老鼠的体重、速度和所在行号。然后对结构体排序。先按体重递增排序,再按速度递减排序。之后按最长递减序列的求法求出符合的数据最大个数。用x[]数组存嘴上递减子序列的长度,用y[]记录排序后的最长递减子序列倒数第二个的下标。这样能够通过往前递推的方法依次找到最长递减子序列的

2014-11-25 22:58:35 1015

原创 POJ3176_Cow Bowling【数塔DP】

题目大意:给你一个三角形的数塔,问从上走到最下边,得到最大的和是多少思路:从下往上推,当前值大的和上边的值相加

2014-11-24 15:38:30 937

原创 POJ1631_Bridging signals【LIS】【二分法+栈】

题目大意:两边都有N个点,给你N个点的连线关系,现在删除一些线,使剩下的线不想交,求不相交的线最多有多少条。思路:都知道是最长上升子序列,那么怎么来的呢比如说现在有6对点,从上到下,左右两边的点是依次递增排序的。如果想让总的不相交的线数最多,那么从左边第一个点开始,每个点就要尽可能和右边序号最小的点连接,这样以后的点才能和更多的点连接。但是如果之后两个及两个以上的点所能连接的点都比第一个点连接的右边点序号小,且不相交,则舍弃第一个,选择之后的点,否则选择前一个。如题目中的图所示:左1和右4相

2014-11-24 11:46:41 1369

原创 POJ1979_Red and Black【DFS】

题目大意:给你一个房间,房间由一格格砖组成,有黑砖和红砖,只能站在黑砖上,现在你站在其中一块黑砖上,且只能向相邻的黑砖上走,问:最多有多少块黑砖可以走思路:数据规模不大,直接DFS上下左右四个方向

2014-11-24 11:08:13 1078

原创 HDU1016_Prime Ring Problem【DFS】

题目大意:由1~N的自然数组成一个环,这个环满足相邻的自然数和为素数,输出所有的情况思路:本来以为DFS会超时,结果N是小于等于20的,所以直接DFS搜索。DFS中三个变量,当前数字为now,下一个相邻的数为next,找到N个数中第几个数为x,如果相邻数相加不是素数,则不必搜下去。否则记录第x个数的结果为next。如果满足n个数,且最后第N个数与1的和也为素数就输出结果。否则就标记下当前元素,表示已经使用过,继续找第x+1个数字。最后清除标记。

2014-11-24 10:41:04 1040

原创 HDU1335_Basically Speaking【水题】

题目大意:给你一个位数不超过7的进制为a的数,转换成进制为b的数,如果转换之后的位数超过7位,则输出ERROR思路:先将进制为a的数用字符串存起来,转换为整形数组存储,先将进制a的数转换为10进制的整数NumA,再转换成b的进制的数,判断下位数然后输出结果。

2014-11-21 21:21:06 1525

原创 HDU1334_Perfect Cubes【水题】

题目大意:输出满足等式a^3 = b^3 + c^3 + d^3所有情况的a、b、c、d,其中a<=200,a、b、c、d按非递减序列排列。思路:直接遍历

2014-11-21 21:14:49 940

原创 HDU1330_Deck【水题】

题目大意:在桌子边上叠纸牌,使纸牌超出桌边的长度最长,并且不能掉下去。即重心最多在桌子边缘上,问给你N张纸牌,最长能超出桌子边缘多长。思路:这道题和POJ1607是一样的,需要用到物理学力矩的原理,作为一个物理不好的弱渣来说真是无解啊。参考博客:http://gd2011.teacher.com.cn/UserLog/UserLogComment.aspx?UserlogID=15319和http://www.cnblogs.com/rainydays/archive/2013/01/16/286

2014-11-21 21:02:38 1593

原创 HDU1326_Box of Bricks【水题】

题目大意:给你N堆砖块的高度,为了使N堆砖块的高度已知,需要把高的堆上的砖块移到低的堆上,问最少需要移多少块砖。思路:计算出总共的砖块数,在求出N堆砖的平均高度(即需要达到的最终高度),把高的堆上的砖移到不足平均高度的堆上。应该计算出所有不足高度的堆上总共差多少砖达到高度,即为结果。

2014-11-21 19:51:45 1699

原创 HDU1323_Perfection【水题】

题目大意:如果一个数的约数和大于它,就是ABUNDANT,如果等于它,就是PERFECT,若果小于它本身,就是DEFICIENT。思路:按题目要求和规定判断、输出。

2014-11-20 07:35:15 1363

原创 HDU1302_Snail【模拟题】【水题】

题目大意:蜗牛从井底向上爬高,井深H米,早上爬U米,晚上下滑D米,且它从第二天开始每天疲劳,每天比第一天少F%,问最后第几天能爬出井或者不能爬出井而失败。思路:简单模拟,按照题目要求做就可以。

2014-11-20 07:29:33 2125

原创 HDU1024_Max Sum Plus Plus【滚动数组】

题目大意:给你两个数M和N,之后是N个数,从这N个数找到M个子段,求M个子段的最大和思路:一开始不懂怎么找状态转移方程。参考别人博客才明白。.设dp[i][j] 为将前 j 个数字分成 i 段的最大和。num[j]为当前数字那么转移方程为 dp[i][j] = max(dp[i][j-1]+num[j],dp[i-1][k]+num[j]) (i-1<=k<=j-1)也可以视为 dp[i][j] = max(dp[i][j-1]+num[j],max(dp[i-1][i-1],dp[i-1][i]

2014-11-18 13:06:53 1064

原创 HDU2054_A == B ?【模拟题】【大数】【水题】

题目大意:给你两个数A和B,判断A和B是否相等,若相等输出"YES",否则输出"NO"。思路:题目没有给出A、B的数据规模,这里就是个大数题。把A、B用字符数组存起来,标记A、B的正负号,若为正,则标记为1,若为负,则标记为0,将字符数组内的'-'赋值为'0',然后将整数前的零和小数部分后边的零清除,然后用数组将整数部分和小数部分分别存起来。之后分别比较A、B的整数部分和小数部分是否相等。注意A、B可能为整数或是小数,尤其注意A、B可能会在整数部分前边有N个零或者小数部分后边有N个零,比如0

2014-11-10 14:06:14 1302

原创 HDU1421_搬寝室【最优决策】

题目大意:有N件物品,给你每件物品的重量,现在要搬2*k件物品到另一栋楼上,每次搬两件物品,每次耗费的疲劳度为两件物品重量差的平方。问:搬完2*k件物品,耗费的疲劳度最少为多少?思路:重量相差越小,则重量差的平方越小。所以先对重量进行排序,所选的一对物品,肯定是相邻的两件物品。设d[i][j]为前第i件物品选择第j对物品的时候,所消耗的最小疲劳度。前i件物品,若选择第i件物品,肯定是和第i-1件物品配对。这时候dp[i][j] = dp[i-2][j-1] + (w[i]-w[i-1])*(w

2014-11-06 21:09:56 963

原创 HDU1257_最少拦截系统【LIS】

最少拦截系统题目大意:导弹拦截系统每次拦截导弹的高度都不高于上一次拦截的高度给你一个导弹发射高度的序列,问最少用多少了拦截系统能够完成拦截?思路:往上很多人都说是最长上升(不降序)子序列。但是很不好理解。那么为什么是最长上升子序列呢。这是因为假设最长上升子序列长度为N,那么作为最长上升子序列的每个元素右边的非最长上升子序列的元素必然是下降的。且必然是最优情况。把每个最长上升子序列的元素作为一个拦截系统的起点,那么它右边比它本身小的下降序列就是这个拦截系统所能拦截的导弹,到下一个最长上升子序列

2014-11-06 11:43:34 882

原创 HDU2845_Beans【不连续的最大子段和】【元素压缩】

题目大意:给你一个矩阵,不能选择每行中相邻的数字,也不能选当前行的上一行和下一行,问使所选数和最大的值是多少?思路:用元素压缩的思想。先把2维矩阵降为1维数组。对每行求出不相邻的数字最大和是多少,把几个数字和缩成一个数。再对所有行求出不相邻的行数字最大和是多少。对于每行求出不相邻的数字最大和的状态转移方程为dp[i+1] = max{吃i达到的最大值,不吃i达到的最大值+第i+1个数}

2014-11-04 20:27:11 1261

原创 HDU2870_Largest Submatrix【最大完全子矩阵】

题目大意:有个字母矩阵,包含字母"a、b、c、w、x、y、z",其中,w能变为"a、b",x能变为"b、c",y能变为"a、c",z能变为"a、b、c"。问能构成的最大字母完全一样的子矩阵面积为多大?思路:和HDU1505、HDU1506一样的思路,其中a[i][j]表示转换为字母a后以第i行为底,第j列上方连续空闲位置的高度。b[i][j]表示字母b……,c[i][j]表示字母c……遍历计算出该点向左右两边延伸的左右边界,从而计算出面积,最终比较计算出最大面积。

2014-11-04 17:13:15 1967 1

Flask Web开发

本书共分三部分,全面介绍如何基于 Python 微框架 Flask 进行 Web 开发。 第一部分: Flask 简介,介绍使用 Flask 框架及扩展开发 Web 程序的必备基础知识 ; 第二部分:给出一个实例,真正带领大家一步步开发完整的博客和社交应用 Flasky, 从而将前述知识融会贯,付诸实践。 第三部分:介绍了发布应用之前必须考虑的事项,如单元测试策略、性能分析技术、Flask 程序的部署方 式等。

2018-05-29

2014年北大ACM暑期培训资料、讲义

北京大学的ACM国际大学生程序设计竞赛(ACM/ICPC)水平在国内处于领先地位,自2005年至2013年每年均参加总决赛,名次分别为11(铜牌)、13、14、13、20、14、13,13,13,13。北京大学多次承担ACM/ICPC亚洲区预选赛命题,广获好评。近几年负责命题的赛区有:2008年北京赛区,2009年宁波赛区,2010年杭州赛区,2010年福州赛区,2011年北京赛区,2011年福州赛区,2012年金华赛区,2012年杭州赛区。2013年杭州赛区。均由此课程主讲教师郭炜负责命题。北京大学的Online Judge --- POJ 更是国内最有影响力的ACM/ICPC竞赛训练平台之一,在国际上也有较高知名度和较多用户。

2014-08-12

空空如也

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

TA关注的人

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