05 2016 档案
HDU 3652 B-number(数位dp)
摘要:题意:B数的定义是有字符串“13”且能被整数13整除的数,求[1,n]内的B数个数。 题解:这是数位DP,我也就是刚入门,前两天看到了非递归写法,好麻烦。所以我建议写dfs的方法,容易理解,代码还简短。 在这说一下整除13的事,比如1523这个数,你把它用手自己模拟一遍,发现是15先%13==2,之
阅读全文
HDU 2089 不要62(数位dp入门)
摘要:题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个。 题解:这是数位DP的入门题了,首先要理解数DP的原理,DP[i][j]:代表第i位的第j值,举个栗子:如4715 数位数是从右向左的,则第一位是5,第二位是1,第三位是7,第四位是4。所以如果要求0到4715,ans=dp[4][x
阅读全文
POJ 1410 Intersection(计算几何)
摘要:题目大意:题目意思很简单,就是说有一个矩阵是实心的,给出一条线段,问线段和矩阵是否相交解题思路:用到了线段与线段是否交叉,然后再判断线段是否在矩阵里面,这里要注意的是,他给出的矩阵的坐标明显不是左上和右下的坐标,需要自己去判断下左上点与右下点的坐标。
阅读全文
计算几何入门模板
摘要:我也算是刚入门计算几何吧,想写一篇入门的模板,让那些和我一样刚入门的人都能看懂就好。 首先要有一些理论知识,这可以百度,我就不多说了,通过百度,你要知道: ①叉积可以判断3个点共线,还可以判断2个点构成直线,第3个点在直线的左边还是右边。 ②判断两条线段相交要有2个条件:(1)快速排斥试验 设以线段
阅读全文
POJ 1066 Treasure Hunt(计算几何)
摘要:题意:给出一个100*100的正方形区域,通过若干连接区域边界的线段将正方形区域分割为多个不规则多边形小区域,然后给出宝藏位置,要求从区域外部开辟到宝藏所在位置的一条路径,使得开辟路径所需要打通的墙壁数最少("打通一堵墙"即在墙壁所在线段中间位置开一空间以连通外界),输出应打通墙壁的个数(包括边界上
阅读全文
POJ 1556 The Doors(线段交+最短路)
摘要:#include #include #include #include #include #include #include #include #include #include using namespace std; const double eps = 1e-8; int sgn(double x) { if(fabs(x) = min(l2.s.x,l...
阅读全文
POJ 1269 Intersecting Lines(计算几何)
摘要:题意:给定4个点的坐标,前2个点是一条线,后2个点是另一条线,求这两条线的关系,如果相交,就输出交点。 题解:先判断是否共线,我用的是叉积的性质,用了2遍就可以判断4个点是否共线了,在用斜率判断是否平行,最后就是相交了,求交点就好了。 求交点的过程和高中知识差不多,用y=kx+c来求,只不过要注意斜
阅读全文
POJ 2318 TOYS(计算几何)
摘要:题目大意:有一个矩形盒子,盒子里会有一些木块线段,并且这些线段是按照顺序给出的,有n条线段,把盒子分层了n+1个区域,然后有m个玩具,这m个玩具的坐标是已知的,问最后每个区域有多少个玩具 解题思路:因为线段是有序给出,所以不用排序,判断某个点在哪个区域,采用二分法,将某个点和线段的叉积来判断这个点是
阅读全文
HDU 1272 小希的迷宫(并查集)
摘要:题解: 首先,init,find,union操作都是模版,多敲几遍,在记记,就没问题了。 然后,本题就是多了一个flag数组,记录数据是否出现过,最后记录最小,和最大,遍历一般他们的父亲,只有一个就是yes,否则no。 但又2个要注意:①当输入只有0 0的时候是输出yes,(题目里也没说啊,其实这我
阅读全文
HDU 1213 How Many Tables(并查集,简单)
摘要:题解:1 2,2 3,4 5,是朋友,所以可以坐一起,求最小的桌子数,那就是2个,因为1 2 3坐一桌,4 5坐一桌。简单的并查集应用,但注意题意是从1到n的,所以要减1。 代码:
阅读全文
POJ 1611 The Suspects(并查集,简单)
摘要:为什么ACM的题意都这么难懂,就不能说的直白点吗?还能不能好好的一起刷题了? 题意:你需要建一个n的并查集,有m个集合,最后要输出包含0的那个集合的元素的个数。 这是简单并查集应用,所以直接看代码吧!
阅读全文
HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)
摘要:这虽然是中文题,然而没看懂,不懂的地方,就是在曼哈顿距离这块,网上搜索了一下,写了个程序,是测试曼哈顿距离的。 曼哈顿距离:两点(x1,y1)(x2,y2)的曼哈顿距离为|x1-x2|+|y1-y2| 测试代码: 这是根据测试样例的背景写的,i,i1是所给坐标,最后输出*的地方,就是他对应的曼哈顿距
阅读全文
POJ 2411 Mondriaan'sDream(状压DP)
摘要:题目大意:一个矩阵,只能放1*2的木块,问将这个矩阵完全覆盖的不同放法有多少种。 解析:如果是横着的就定义11,如果竖着的定义为竖着的01,这样按行dp只需要考虑两件事儿,当前行&上一行,是不是全为1,不是说明竖着有空(不可能出现竖着的00),另一个要检查当前行里有没有横放的,但为奇数的1。 原代码
阅读全文
ZOJ 4257 MostPowerful(状压DP,简单)
摘要:题目大意:不超过10种气体,两两之间相互碰撞可以产生一定的能量,如a碰b,那么b气体就消失,自身不能碰自身,问最后所能得到的最大能量。 原代码链接:http://blog.csdn.net/accry/article/details/6607703 题解:感觉这个题是我做状态压缩的几个题中最简单的了
阅读全文
HDU 3001 Traveling(状压DP)
摘要:题目大意:10个点的TSP问题,但是要求每个点最多走两边,不是只可以走一次,所以要用三进制的状态压缩解决这个问题。可以预处理每个状态的第k位是什么。 原代码链接:http://blog.csdn.net/accry/article/details/6607703 3进制,代表走过这个点的次数
阅读全文
POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
摘要:题是看了这位的博客之后理解的,只不过我是又加了点简单的注释。 链接:http://blog.csdn.net/chinaczy/article/details/5890768 我还加了一些注释代码,对于新手的我,看起来可能更方便些吧,顺便说下快捷键 先选中要操作的行,ctrl+shift+c 是注释
阅读全文
POJ 3254 Corn Fields(状态压缩DP)
摘要:题目大意:给出一个M*N的矩阵,元素为0表示这个地方不能种玉米,为1表示这个地方能种玉米,现在规定所种的玉米不能相邻,即每行或者没列不能有相邻的玉米,问一共有多少种种植方法。 举个例子: (题意是复制的,链接:http://www.cnblogs.com/buptLizer/archive/2012
阅读全文
XueXX and Chessboard(dp)
摘要:题解: 本题是DP,状态转移方程是dp[i][j]=dp[i-1][j]+dp[i][j-1],只不过要加上许多判断,最后即可求出答案,要注意输入从1开始输入,并且dp[0][1]=1,这样才能使dp[1][1]赋值为1。 最后提交上去的时候一定不要忘了取模!!! 并且,dp的题也要注意边界情况,比
阅读全文
POJ 2352 Stars(树状数组)
摘要:题解:仔细想下,这题的y没有用,有用的只是x,x出现一次就加一次(这里是x+1,因为x可能等于0),之后再把0到x的全部值加一遍,得出的tem用ans数组记录下来,最后输出即可。 AC代码:
阅读全文
POJ 2236 Wireless Network(并查集)
摘要:解题思路:这是并查集的应用,如果是O就合并,else就查询,需要注意的是join有个条件,就是在d的距离之内才可以!!! AC代码:
阅读全文
HDU 1257 最少拦截系统(贪心)
摘要:解题思路:用一个vector存下数据,从头开始非递增遍历,并把符合条件的删除,一次操作,ans++,当vector为空时退出循环。(PS:学到了vector的erase操作,竟然还有返回值,涨姿势了) AC代码: #include<iostream> #include<cstdio> #includ
阅读全文
浙公网安备 33010602011771号