- 博客(44)
- 资源 (1)
- 收藏
- 关注
转载 多校联合第一场 数学
Problem I. 数学Time Limit: 1000ms Memory Limit: 65536kbDescription给出数列A1;A2; : : : ;AN,并设Bi =A1 A2 ANAimod (109 + 7)现要求把所有的Bi 算出来。Input输入包含多组测试数据。对于每组数据,第1 行,1 个整数N(1 N 10
2014-08-25 19:20:02
576
原创 最小不重复数(百度笔试题)
n为正整数,求比这个数大且最小的不重复数,重复数为相邻两位数字相同,如1101为重复数,1231为不重复数。#include #include void find(char s[]){ int length = strlen(s); for(int i=0;i<length;i++) { if(s[i]==s[i+1] && s[i]=='9') { if(i==0)
2013-10-02 16:05:53
1063
转载 二叉树遍历非递归实现
【版权声明:转载请保留出处:blog.youkuaiyun.com/algorithm_only。邮箱:liuy0711@foxmail.com】遍历是二叉树各种操作的基础,上一节给出的遍历算法是递归实现的,本节给出二叉树遍历的非递归实现,非递归实现需要使用前面讲到的数据结构——栈、队列来作为辅助空间。先序遍历[cpp] view plaincopy
2013-09-18 15:57:51
648
原创 POJ 1873 The Fortified Forest (枚举+凸包)
看了很久了的题了,集训的时候就看过,每棵树有自己的价值和长度,现在要砍掉一些书做成栅栏,来围起剩余的树,并要使砍掉的树价值总和最小。当时觉得有价值,树也有砍与不砍2种状态,就觉得这是DP,然后在死胡同里绕啊绕~~后来才发现,树2要从数据量上推算法啊!//Memory: 216K //Time: 172MS #include #include #includ
2012-09-12 20:19:54
592
原创 POJ 2187 Beauty Contest (求平面最远点对)
很久以前的凸包模版题,又被翻了出来验证旋转卡壳法。。求凸包后枚举2点求距离也可以的。//Memory: 548K //Time: 110MS#include #include #include using namespace std;#define N 50001int top;int max(int a,int b){ return a>b?a:b;}struct
2012-08-27 23:45:52
450
原创 hdu 3174 logo (已知角度求点)
如此一道水题,比赛时居然卡了我3个小时。。天啊!!思维定式要人命啊!!//Time:15MS //Memory:244K#include #include #include const double PI=acos(-1.0);double x,y,th;void fd(int l){ x+=l*sin(2*PI*th/360); y+=l*cos(2*PI*th/36
2012-08-26 23:05:23
903
原创 POJ 1185 炮兵阵地 (状态压缩,DP,附测试数据)
话说POJ的这道题弱数据,网上的许多解题报告也有问题。。今天训练赛出了这道题,信心满满的拿原来的AC代码去交,WA+RE的体无完肤。。解题报告附上,慢慢研究!经典NOI题,矩阵里的状态压缩问题。因为m,而每列都有状态选或不选,所以想到用2进制,那么状态数是2^10。因为当前行的选择依赖于前两行,而前一行又依赖于前前两行,能想到状态转移方程应该牵扯到当前行、前一行、前前行,类似于递推式dp[i]
2012-08-24 21:05:51
1515
原创 POJ 2826 An Easy Problem?! (判点与线段的位置,求线段交点)
真的不是简单的问题啊!雨水从上方落下。接不到雨的情况:注意这两种是可以接到雨的都判断清楚了这题就好做了。//Memory: 192K //Time: 32MS#include #include #include #define EP 1E-6#define INF 1E100using namespace std;struct POINT{
2012-08-20 21:43:41
702
原创 Seven tombs (表达式树)
E- Seven tombsTime Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)Total Submission(s) : 31 Accepted Submission(s) : 9Problem Description塔.拉夏被埋葬在术士峡谷的七个古墓中
2012-08-20 19:26:28
1788
1
原创 POJ 1862 Stripies (贪心)
题目大意:科学家发现一种奇怪的玩意,他们有重量weight,如果他们碰在一起,总重变成2*sqrt(m1*m2)。要求出最终的重量的最小值。思路比较容易想到,试一下就可以发现:对重量较大的先碰,可以对其多次sqrt,使得最后的结果最小。所以就是贪心了。数据比较小,sort排序即可。//Memory: 180 KB //Time: 0 MS#include #include
2012-08-19 10:08:41
1957
原创 POJ 1039 Pipe (枚举,判线段相交)
题目大意:一根由平行线段组成的管道,给出管道的上端折点,下端折点比上端折点高度少1。有一束光从入口射入,求可以照到的最远位置。思路:枚举任意两点,从入口处开始判断光线是否通过折点出(即与折点竖直线段相交)。记录最远位置并判断,输出即可。开始脑抽,总觉的光要沿着入口上下点射入。。放了三天果断1A了。。//Memory: 252K //Time: 63MS#include #inc
2012-08-18 21:53:36
443
原创 ZOJ 1010 Area (判线段相交,简单多边形的面积)
首先要判断出不合法的多边形(impossible),即与非邻边有交点的多边形,或者n第二就是计算简单多边形面积,计算方法就是计算每点和左右点对X轴的三角形面积(输入点要按逆时针排列,否则计算结果为负值)。具体情况不清楚的话画个图模拟一下就显而易见了。模版的力量是伟大的。//Memory: 232 KB //Time: 30 MS#include #include #include
2012-08-18 10:06:56
1099
原创 POJ 1265 Area (简单多边形求面积+pick公式)
pick定理:面积=内部点数+边上点数/2 -1;开始做的时候脑袋发昏,敲了一个小时的模版,枚举点判断与多边形位置,果断TLE等脑子清醒了,多画了几个图,数了几次点,就A了。。//Memory: 180K //Time: 0MS#include #include struct POINT{ int x,y;};POINT p[110];int gcd(int a,in
2012-08-16 00:19:05
579
原创 POJ 2074 Line of Sight(判线段与直线相交)
题目大意:一栋漂亮的房子希望道路上的人可以看见,但是有一些障碍物在房子周围,无法透过障碍物看到房子。求可以在道路上看到房子的最大连续距离。有这么两点要注意:障碍可能在房子后,与房子平行,或者在道路的另一侧。这些障碍都不用算的。障碍可能在道路和房子外。(总之就是障碍可能在anywhere!)所求的是最大连续距离。//Memory: 216K //Time: 0MS#includ
2012-08-14 23:37:36
769
原创 HDU 3555 Bomb (数位DP)
做的第一道数位DP啊!开始在找规律,搜索,做了很久终于找到了规律,上网一查发现原来这样的叫数位DP。。找到的规律就是这个样子了。有了规律就很好做了。dp[i][0]=dp[i-1][0]*10-dp[i-1][1];是因为要减去49XXX的情况。//Time:15MS //Memory:488K#include#includelong long dp[20][3];int n
2012-08-14 20:24:51
2390
2
原创 POJ 1434 Fill the Cisterns!(计算几何,二分)
一些不同高度的水箱组成连通器,求装下V体积液体时液面的高度将水箱按底部高排序。然后二分液面高度就可以了//Memory: 1744 KB //Time: 1391 MS#include #include using namespace std;struct cistern{ __int64 b,h,s; __int64 v;};cistern c[50004];b
2012-08-13 23:55:29
813
原创 POJ 1228 Grandpa's Estate (求稳定凸包)
一个凸包丢了一些点,剩下的点能否表示原凸包?先看一下什么情况下可以表示原凸包:现有的凸包每边都有3个以上的点。这样丢掉的点必定也在凸包上,否则现有的点不再凸包上,与已知不符。做法就是根据所给点再算一次凸包,判断每边是否有三个以上的点。注意,n常用的凸包模版有时会包含边上的点(比如起始三点共线),有的时候不会。借此机会整理下自己的凸包哈!//Memory: 260K //Ti
2012-08-11 10:25:48
972
原创 POJ 1654 Area (叉积求三角形面积)
一不明生物从原点出发,各种绕啊绕,绕啊绕,绕啊绕。。。。。求所绕过的面积。从原点出发,每走一次,与原点就形成了一个三角形。。他走过的区域,就是这些三角形的和所以就是算三角形面积了。三点叉积除2就是三角形面积了//Memory: 1228K //Time: 32MS#include #include #include #include using namespace std
2012-08-10 23:20:09
2296
原创 POJ 1696 Space Ant (向量的叉积)
一只很特殊的蚂蚁,只能向坐转,并且不能经过已经走过的路。一张地图上有n个食物让蚂蚁去采集,求蚂蚁经过食物的顺序。一开始想偷懒,直接甩graham凸包模版上去,加了一条判断和搜索点的重排。。果断WA好吧果然还是不能偷懒啊!每确定一个点以它为起点找逆时针一个个碰到的点。。其实大概或许就是卷包裹求凸包了吧。。不太了解的说。。判断点用的就是叉积了//Memory: 260K //Time:
2012-08-10 20:38:59
1084
原创 POJ 2653 Pick-up sticks (判线段相交)
一个人往地上扔棍子,相交的话,先扔的就会被压在下面,问最后哪几条棍子(线段)没有被压住?就是判线段相交了。。从下往上搜,被压住的话就不必判断了,这样的时间复杂度小于O(nlogn)如果从上往下搜,就是O(nlogn)嗯。。时间复杂度不是很懂啦,谁帮我分析下这个题的复杂度,反正从上往下搜会TLE~//Memory: 3408K //Time: 547MS#include #inc
2012-08-10 12:23:55
527
原创 POJ 1556 The Doors (计算几何+dij最短路)
好题啊好题!一个10*10的房间里,有n堵墙。每堵墙有两扇门,求最短路经先枚举门的端点,在判断端点连线是否有与其他墙相交,构图,最后dij求最短路!思路一定要清晰。最后,这题的数组最好开大点。不要天真的以为它只有9堵墙。。它有18堵啊有木有!!//Memory: 528K //Time: 0MS#include #include #include #define inf
2012-08-10 00:18:06
775
原创 POJ 2029 Get Many Persimmon Trees (标记)
给一个长宽已知的矩形,要求围起最多的树。数据量只有100*100,标记树的位置,暴力枚举所有的矩形找最大值就可以了//Memory: 188 KB //Time: 0 MS#include #include bool map[101][101];int max(int a,int b){ return a>b?a:b;}int main(){ int n,w,h,s,t
2012-08-09 10:33:52
478
原创 POJ 2406 Power Strings (判字符串相同)
直接暴力就可以,注意暴力也要判断下,循环的长度要可以被总长整除再暴力啊。。//Memory: 1160K //Time: 266MS#include #include using namespace std;char str[1000005];int main(){ while(cin>>str) { if(str[0]=='.') break; int
2012-08-09 10:29:51
377
原创 POJ 3304 Segments(判线段与直线相交)
开始看错了题意,以为是要投影到其中一条线段上,WA N次。。ORZ~实际的意思是,投影到任意条直线上都可以,只要投影间有交点即可。那么过这条被投影的直线做垂线,垂线必过所有的线段。如何求出垂线呢?因为垂线与所有线段相交,在保证相交的前提下旋转,那么最终会定于两线段端点。那么枚举端点,在对所有线段做跨立验证即可//Memory: 204K //Time: 32MS#include
2012-08-09 00:04:56
508
原创 POJ 2398 Toy Storage (判断点与线段关系)
和2318一样的题。。输出改下就好了。思路就是判断点和线段的关系。。//Memory: 484K //Time: 16MS#include #include #include using namespace std;struct POINT //点{ double x,y; POINT():x(0),y(0){}; POINT(double _x, doubl
2012-08-08 20:35:55
409
原创 POJ 2318 TOYS (点与线段关系)
一个玩具箱被n个挡板分成n+1快,挡板不会互相交叉。将m个玩具扔进去,求分别被扔进了哪个区域。主要算法就是判断点与线段的关系,排序后从左往右依此判别即可。//Memory: 480K //Time: 485MS#include #include #include using namespace std;struct POINT //点{ double x,y; P
2012-08-08 20:05:33
362
原创 POJ 1113 Wall (凸包)
凸包基础题,求凸包周长。最后加上一个半径为L的圆即可。不理解的话算一下多边形内角和。//Memory: 236 KB //Time: 63 MS#include #include #include #include #define PI 3.14159265using namespace std;int top;struct POINT{ double x,y;};P
2012-08-08 18:05:08
324
原创 HDU 1010 Tempter of the Bone (DFS)
因为要求不是最快到达,而是在T时刻正好到达,所以不能用BFS搜。DFS注意剪枝,如果剩余时间和剩余步数奇偶性不同的话要减掉。//Memory: 232 KB //Time: 687 MS#include #include #include char map[10][10];bool vis[10][10];int dx,dy,n,m,time;int d[4][2]={1,0
2012-08-08 14:42:59
353
原创 HDU 1396 Counting Triangles (找规律)
其实就是找规律。。先找正的三角形,再找倒的三角形//Memory: 488 KB //Time: 15 MS#includeusing namespace std;int main(){ int n,sum; while(cin>>n) { sum=0; for(int i=1;i<=n;i++)
2012-08-08 14:38:36
1000
原创 HDU 1978 How many ways (DP)
动态规划,从终点往起点走。//Memory: 572 KB //Time: 156 MS#include #include #include using namespace std;int main(){ int cas; scanf("%d",&cas); int dis[102][102]; //记录可以走的种类 int map[102][102]; while(c
2012-08-08 14:34:30
494
原创 HDU 1234 开门人和关门人 (比较大小)
水题,比较时间大小就可以了。字符串比较或者数字比较都行//Memory: 264 KB //Time: 15 MS#include #include #include using namespace std;int main(){ int cas; scanf("%d",&cas); while(cas--) { int n,j; int start,end;
2012-08-08 14:26:36
634
原创 POJ 2109 Power of Cryptography (大数开方)
可能很多人被10^100的数据吓到了,不知道怎么上手其实这题很容易的,double的数据可以达到10^300 啊另外,a的1/7次方,就是对a求7次根。。//Memory: 168 KB //Time: 0 MS#include#includeint main(){ double n,p; while(scanf("%lf%lf",&n,&p)!=EOF) { d
2012-08-08 12:09:51
549
原创 POJ 1905 Expanding Rods (二分+计算几何)
题意:一根木棒恰被夹在两堵墙中间,受热这跟木棒会膨胀,求膨胀后木棒偏离原位置的最远距离。分析:木棒由于两段被卡住,膨胀后为圆弧的一段(圆的张力最大),就是求弦到弧的距离了。这题有三个未知量:圆半径,弧的角度,还有最后要求的答案。这三个未知量知道一个就可以求出另外两个,所以此题有三种解法,即对三个未知量分别二分。另外注意c++和G++对double的输出不同。交错了就wa。。。//Mem
2012-08-08 12:04:51
462
原创 POJ 2092 Grandpa is Famous (sort排序)
题目大意:爷爷是大神,现在大神要入吉尼斯,但是有人和大神竞争啊,大神想知道有谁和他竞争。输入N*M,N就是N次比赛,M是个人成绩,也是个人身份。N次比赛中出现次数最多的就是大神,要输出出现次数仅此于大神的所有人。解法:明白题意很好做,水题一道,一个sort就解决了//Memory: 200 KB //Time: 204 MS#include #include #include
2012-08-08 11:53:31
1779
原创 POJ 2965 The Pilots Brothers' refrigerator(枚举+位运算)
和POJ1753翻转棋有些类似,4*4棋盘,共2^16种翻转方法,暴力枚举即可。也有另一种方法,遇+则翻一次,统计棋盘上每个点翻转的次数,为奇数的点即所求点//Memory: 672 KB//Time: 875 MS#include #include using namespace std;int main(){ int i,j,k,sum=0,min=17,out; in
2012-08-08 11:44:00
488
原创 HDU 3123 GCC(模运算)
求阶乘取模的值。实际上这题的数据量不大,64位整形就可以了。代码没什么难度。2个公式:a%m+b%m=(a+b)%m;(a%m)*(b%m)=(a*b)%m;//Time : 203MS //Memory : 224K#include#includeusing namespace std;int main(){ __int64 sum,mod; int max,m,
2012-08-07 22:18:00
689
原创 HDU 4161 Iterated Difference (模拟+递推)
给出一串数,这串数的下一个状态的每一位都由上个状态的后一位的绝对值减这一位的绝对值得到,求经过多少次状态这串数均变成0;//Time : 203MS //Memory : 224K#include int sum=-1;int dif(int a[],int n){ int i,s=0; bool zero=true; sum++; for(i=0;i<n-1;i++) { i
2012-08-07 22:10:58
681
原创 CSU 1089 羊吃草
很不错的优先队列题。有N只羊,他们要吃草料,商店有M种草料,每种草料只能给一只羊吃。草料有价格price和质量score两种特性,每只羊对两种特性都有最低要求。要求在满足质量,每只羊都能吃到的前提下,求出最小总价;思路:先把草料和羊按质量从大到小排序,遍历羊,将大于羊要求的质量(即符合要求的草料入队),在队列中按价格从小到大排列,然后找到价格恰满足此羊的草料,出队,加入总价。//M
2012-08-07 21:57:18
1252
转载 HDU 2063 过山车
转载自:http://blog.youkuaiyun.com/cxb569262726/article/details/7800392二部图(也叫二分图)概念: 1.何为二部图 如果V(G)可以分到两个集合X,Y中,且X和Y内部没有G的边.那么图G就是一个二部图(等价于图G是可二顶点着色的)下图便是一个二部图. 2.二部图的性质 一个图是二部图当且仅当图G中
2012-08-07 21:41:44
511
原创 hdu 2352 Verdis Quo
大意:按照所给规律,将罗马数字转化为十进制数字//Memory: 220K//Time: 15MS #include #include int main(){ int cas; scanf("%d",&cas); while(cas--) { int sum=0; char a[50]; scanf("%s",&a); int l=strlen(a);
2012-08-07 21:30:30
643
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人