自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

泪无痕

先刷水题练练思维流畅 然后再刷难题

  • 博客(108)
  • 收藏
  • 关注

原创 UVA 10008 whats cryptanalysis 水题

这道题如果用纯c代码和冒泡排序就可以解决了   冒泡排序是稳定排序  对于只有26个对象的数组排序也是非常的快  时间也许比快排 堆排 归并要小  毕竟排序数小如果用到c++代码和排序算法来写就要复杂一些  排序算法也要考虑使用是稳定排序的算法   但是这完全是没必要的   因为我在学习c++所以蛋疼的用了c++只对这道题来说  第一种方法最简单  代码也简洁   但是从长远来看  熟悉c

2016-01-14 21:35:09 669

原创 POJ 1004 Financial Management cout格式输出控制练习

C++与C风格的输出格式区别  C++首先需要包含头文件 iomanip。 其次,再输出格式上可能要先把默认的输出格式改过来  例如,输出浮点型是科学计数法  改为精确到小数点后几位输出   需要用到  setf()这个函数和一些参数。#include#include#includeint main(){ using namespace std; float

2016-01-12 23:49:21 629

原创 POJ 1003 Hangover 水题一道 练习C++编程

#include#includeusing namespace std;const float minn = 1e-6;int main(){ float a; while(1) { cin>>a; if(fabs(a) < minn)break; float n = 1.0,sum = 0; while( sum-a < 0) { sum += 1.0/(n+1); n++; } cout<<i

2016-01-10 22:24:46 776

原创 C++编程学习之旅 由浅及深

此文作为C++编程学习目录   以后更新为什么要用学习C++编程初始化新方法new  deleteVECTORARRAY

2016-01-10 22:22:38 432

原创 UVA 301 POJ 1040- Transportation DFS 回溯

这道题在UVA过了 但是在POJ上超时了  POJ1040  想一下P

2014-04-17 15:21:54 681

原创 UVA 208 - Firetruck DFS 并查集剪枝

21个节点   DFS搜索路径每个点只可以访问一次 而且每条边只能访问一次  递归时改变状态  回溯时状态改回来可能是图比较稀疏的原因   矩阵式的DFS  不加任何优化会超时  在我看来只有剪枝才可以过     边表的DFS不知道能不能过看了下别人的思路  并查集找到能到fire的点  然后再进行回溯这样就能过了   至于大神们说的 tarjan  和  弗洛伊德算法 有

2014-04-16 15:18:21 819

原创 UVA 10012 - How Big Is It 暴力 回溯 全排列

暴力解法8个圆   全排列  一个个判断回溯  也是全排列的思想  但是在进行排列的时候取一个最小的  如果还没有排完就已经比最小的还大  那么后面的所有以此为基础的答案都可以舍去不用判断上面的大体思路是正确的  但是忽略了一个问题  那就是排列中两个相邻的圆一定相切吗?  答案是否定的 所以我们还需要考虑两个圆不相切的情况     那这样怎么才能确定当前圆应该放在

2014-04-10 19:15:36 732

原创 UVA 140 - Bandwidth 暴力 全排列 回溯

8个点  全排列 一个个的判断

2014-04-10 16:13:29 563

原创 UVA 539 - The Settlers of Catan 暴力 全排列

这道题目的意思就是在图上找到一条最长的路径每条路径   不可能枚举25个数的全排列  肯定超时 所以要在枚举的时候判断当前点和枚举的下一个点是否有边存在  且边没有被访问过上面的思路好像有个bug    因为点是可以重复的  而且不知道这些点会出现几次   pass掉这种想法    枚举点不行但是可以枚举边啊  边最多25条  哇 25!好大但是

2014-04-10 15:20:54 619

原创 UVA 639 - Don't Get Rooked 暴力回溯

枚举每个可以放的位置  是放还是不放   然后判断合法的方法能放多少个   比较保存最大的一个   0.029s回溯   DFS判断每个位置  每个位置有3两种方法   放或者不放  不合法的情况就退回上一层  否者继续递归下去  直到判断每一个是放还是不放

2014-04-04 13:33:26 528

原创 UVA 10344 - 23 out of 5 全排列,3进制表示状态,回溯

3个运算符  总共四个位置   一共3的4次方减1种方案  用3进制表示   5个数字全排列120种     80*120  暴力解决不用回溯春暴力解决   用了C++的next-permutation  1.769s自己写的C全排列   2.822s继续想回溯算法

2014-04-03 17:20:51 688

原创 UVA 11205 - The broken pedometer 暴力 二进制表示状态

用最少的LED灯区分 给出来的数字   LED灯最多15个   而数字最多100个以最大来讨论   每个LED灯的状态有两种  开或关    所以自然而然的就用0 1 来表示LED灯的状态最多15个灯  2的15次方    最多100组需要判断的   暴力不会超时   导师需要注意的是  在每次循环判断完后  vis数组需要清零   但是不能全部清零那样会超时   2的30

2014-03-20 19:13:48 599

原创 UVA 131 - The Psychic Poker Player 暴力不解释

#include#include#includeusing namespace std;char t[][20] = {"straight-flush","four-of-a-kind","full-house","flush","straight" ,"three-of-a-kind","two-pairs","one-pair","highest-ca

2014-03-20 12:42:21 637

原创 UVA 11234 - Expressions 二叉树建树+BFS 层次遍历

RT给出了一个后缀表达式   要给出用队列表示时的答案     看simple output   知道输出时按照数的层数  从下到上从右到左一一输出的#include#include#include#include#include#include#includeusing namespace std;int maxn = 10005;typedef struc

2014-01-31 01:04:46 849

原创 POJ 1019 Number Sequence

这道题想到思路就简单  想不到就悲剧了    第一次想到的算法  果断超时   后面想到分成多组来算  每组不超过1亿位   还是超时   最后看了下别人的思想   如下:题意:  求数列的第N位是什么              不是数   是位      例如   12345678910  第十位是1   不是10这个序列是这样的112123123412345可以

2013-12-21 17:06:13 615

原创 二分查找 递归实现 和 循环实现

下面copy了百科对二分算法的描述二分查找编辑二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将

2013-11-12 10:05:33 1276

原创 HDU 3925 Substring

题意:a串最少加上多少包含b串解题思路:b从  x1   x10 x100   直到乘到比a的串长一位    x的这个就是b串后面补零就行  然后  用b-a    如果b小于a  则在b的前面补1再减a   得到的数和minn比较   保存小的一个       例如    b = 4  a = 5;  b 这里也许你会想到有前导零的情况    可以肯定输入数据是没有前导零的    

2013-11-11 20:06:49 533

原创 POJ 1264 UVA 109 简单的计算几何

简单的计算几何题目  注意别重复判断    POJ G++提交的时候不能用%lf   用%f输出#include#include#include#include#define eps 1e-8using namespace std;int T = 0;struct Point{ int x,y; Point (int x = 0,int y = 0

2013-11-09 16:30:32 581

原创 UVA 218 - Moth Eradication 计算几何 凸包

凸包水题求凸包   求边长#include#include#include#include#define eps 1e-8using namespace std;struct Point{ double x,y; Point (double x = 0,double y = 0):x(x),y(y){}};typedef Point Vector;

2013-11-07 16:27:24 586

原创 NOJ 1616Music Notes 二分

这个二分写得有点搓啊    有些数据都是没必要记录的#includeint left,right;struct NUM{ int l,r,v;}T[50005];int binary_Q(int q,int left,int right){ while(left < right) { int m = left + (right -

2013-11-03 22:18:25 563

原创 HDU 2546 简单的01背包

一个简单的01背包变种#include#include#includeusing namespace std;int main(){ #ifdef LOCAL freopen("in.txt","r",stdin); #endif // LOCAL int N; while(scanf("%d",&N)) { if

2013-11-03 22:13:56 544

原创 POJ 1410 Intersection

这道题有个地方比较坑人  也是大家看题没看仔细    题目说了  不一定是按左上和右下给定矩形的(在这WRONG了多次)多么痛的领悟   渣渣般的英语啊注意这点后就没什么难的了#include#include#includeusing namespace std;struct Point{ int x,y; Point (int x = 0,int y

2013-11-02 20:27:11 465

原创 poj2187 Beauty Contest 凸包+旋转卡壳

凸包+旋转卡壳 = AC;求凸包的时候注意去掉共线的点   刚开始做的时候纯暴力  TLE   后来想几分  剪枝优化 有无从下手最后还是老老实实的凸包+旋转卡壳了#include#include#include#includeusing namespace std;struct Point{ int x,y;};typedef struct Point

2013-10-31 21:43:11 620

原创 POJ1584 A Round Peg in a Ground Hole 一道水题wrong了好多次

先判断是不是凸包  然后判断点是否在多边形内  最后判断圆心和各边的距离#include#include#include#define eps 1e-10using namespace std;struct Point{ double x,y; Point (double x = 0,double y = 0):x(x),y(y){}};typedef

2013-10-31 17:57:17 446

原创 UVA 11178 - Morley's Theorem 简单的计算几何

简单的计算几何题目     求出一个d点    其余的点具有相同的解法   #include#include#include#define eps 1e-10using namespace std;struct Point{ double x,y; Point (double x = 0,double y = 0):x(x),y(y){}};t

2013-10-22 21:18:14 490

原创 庞果英雄会 数组排序

第一次做这个网站的题目   感觉题目还不错   虽然很多题不会 由于是第一次做我还以为只能用给出的头文件     于是自己写了个堆排上去。。。我感觉看题目的时候就是一个贪心的过程   每次交换的时候都把最大的排好  然后再排下一个   这样就能保证交换次数最少了    至于证明嘛   呵呵  实在是不会啊下面看代码#include #include #include #d

2013-09-26 16:41:40 458

原创 HDU 4611 Balls Rearrangement

这道题第一眼看上去就知道是数论的题  可惜做的题少了  不知道怎么下手   自己推了很久的公式也没退出来    后来看了别人的解题报告发现是最小公倍数的问题    再加上一个模拟就解决了    #include#include#include#include#define LL long longusing namespace std;LL gcd(LL a, LL b){

2013-09-12 16:04:15 541

原创 POJ 1066 Treasure Hunt 计算几何 枚举线段与直线相交

题意 :从边上出发   找到最少的路径去取得宝藏    就是开最少了门    计算几何  枚举线段与直线相交枚举的线段是所有输入的点 包括墙的四个角的点    直线也一样     最后找出最小的相交次数   减一就是要开的最少门#include#include#include#include#define eps 1e-8#define Max 35using namespac

2013-09-12 09:37:35 503

原创 POJ 3348 Cows 寻找凸包 凸包面积

非常简单的凸包      找凸包  凸包面积的计算直接上代码

2013-09-08 22:29:47 776

原创 POJ 2653 Pick-up sticks 计算几何 线段相交

计算几何的题目   庆幸不用判断共线  题目说了   第一种方法是读入一个处理一个   结果超时了第二种方法是读完了后再处理    AC    同样是暴力求解  但是也得讲究技术啊TLE代码:#include#include#include#include#define Max 100005#define eps 1e-10using namespace s

2013-09-08 18:53:28 713

原创 POJ 3304 Segments

题意:判断N条线段在某个方向的投影是否有存在公共点。枚举所有点组成的直线   判断是否存在一条直线都与已知线段相交     相交就输出  Yes!   否者输出No!下面是代码#include#include#include#include#define Max 105#define eps 1e-10// 题目规定了精度是 1e-8 我用1e-10using nam

2013-09-08 10:52:48 725

原创 POJ 2398 Toy Storage

挺简单的一道计算几何   只需要知道叉积就可以做了   统计每块区间的toy数   然后toy数相同的统计为s.c     然后从小到大输出就OK了  我的查找方法数据量大的时候效率不高   最好换成二分查找  这样效率就会更高     最后注意  区间总共  n+1个  别漏了最后一个#include#include#include#include#defin

2013-09-07 18:57:55 514

原创 POJ 2031 Building a Space Station 简单计算几何 + 最小生成树

如题  :简单计算几何 + 最小生成树求出连个cell的距离  小于零距离为零    否者就是两球心的距离减两球半径因为边较少所以用邻接矩阵存储    最后用一个prim计算最小生成树  答案就出来了注意  :POJ在G++中编译的  输出浮点型都要用f   不能用lf下面看代码:#include#include#include#define eps 1e-8#defi

2013-08-29 17:01:16 526

原创 POJ 2850 Stacking Cylinders 简单计算几何

计算几何的题目 :   一层一层的算    算到最上面的一层时  pre  == behind    就退出循环输出涉及到向量的旋转  和三角函数  下面看代码:#include#include#include#define eps 1e-8int cnt, pre, behind;//记录当前这一层的油桶struct Point{ double x,y;

2013-08-29 11:49:10 738

原创 UVA 10652 - Board Wrapping 简单计算几何 凸包

这道题是一个简单的凸包问题关键的一点就是   把每个块的四个顶点都求出来   最后排序求凸包      求的时候涉及到角度旋转   因为计算机上的三角函数都是弧度制的  转换的时候注意一点    自己写的旋转的函数的角度参数是正的  还是负的 也要注意      否者很容易出错     下面看代码  用的是刘汝佳的模版   本人感觉用着不错   比自己写的好多了   计算几何模版需要高度可

2013-08-28 17:40:43 570

原创 uva 127 - Accordian Patience

大神的blog   题意   思路都有   http://www.cnblogs.com/devymex/archive/2010/08/26/1808604.html本人的方法比较搓    模拟做的   而且效率不高    但是能AC不错了    做题的时候还是不够细心啊   大体的思路是有的   老是错在细节上下面看代码#include#include#includeusin

2013-08-27 19:10:19 562

原创 10152 - ShellSort

参考博客http://www.cppblog.com/wuxu/archive/2011/11/22/160719.aspx先想着用栈的方法做肯定能做     但是   能有这种方法简单吗       多思考一会没准就能找到更好的解法#include#includeint cnt1,cnt2;struct STR{ char name[100];}s

2013-08-22 21:12:05 445

原创 uva 442 - Matrix Chain Multiplication

矩阵乘法 :只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×n的矩阵a(m,n)左乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p)。

2013-08-21 11:39:39 495

原创 uva 10494 - If We Were a Child Again

这道题给的数据非常重要   只要注意到了不用大数的除法都可以做   因为除数是有限大的  用整形就能保存下来    然后就简单了 模拟四则运算   很容易就能做出来了    取模也是一样的下面看代码#include#include#define MAX 1000000#define LL long longchar str[MAX],result[MAX];void Mod

2013-08-20 20:03:18 601

原创 uva 253 - Cube painting

1,2,3,4,5,6六个面分别朝上  判断是否匹配    不匹配则顺时针旋转总共三次   每次都要判断是否匹配  总共24种状态   每种状态判断一遍    满足就输出TRUE   否则输出FALSE哎  代码写得好搓#include#includeint rot_up(char *p)//返回1说明完全匹配了{ char q[4]; q[0] = p[6];

2013-08-20 17:12:35 766

空空如也

空空如也

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

TA关注的人

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