- 博客(108)
- 收藏
- 关注
原创 UVA 10008 whats cryptanalysis 水题
这道题如果用纯c代码和冒泡排序就可以解决了 冒泡排序是稳定排序 对于只有26个对象的数组排序也是非常的快 时间也许比快排 堆排 归并要小 毕竟排序数小如果用到c++代码和排序算法来写就要复杂一些 排序算法也要考虑使用是稳定排序的算法 但是这完全是没必要的 因为我在学习c++所以蛋疼的用了c++只对这道题来说 第一种方法最简单 代码也简洁 但是从长远来看 熟悉c
2016-01-14 21:35:09
723
原创 POJ 1004 Financial Management cout格式输出控制练习
C++与C风格的输出格式区别 C++首先需要包含头文件 iomanip。 其次,再输出格式上可能要先把默认的输出格式改过来 例如,输出浮点型是科学计数法 改为精确到小数点后几位输出 需要用到 setf()这个函数和一些参数。#include#include#includeint main(){ using namespace std; float
2016-01-12 23:49:21
676
原创 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
834
原创 UVA 301 POJ 1040- Transportation DFS 回溯
这道题在UVA过了 但是在POJ上超时了 POJ1040 想一下P
2014-04-17 15:21:54
732
原创 UVA 208 - Firetruck DFS 并查集剪枝
21个节点 DFS搜索路径每个点只可以访问一次 而且每条边只能访问一次 递归时改变状态 回溯时状态改回来可能是图比较稀疏的原因 矩阵式的DFS 不加任何优化会超时 在我看来只有剪枝才可以过 边表的DFS不知道能不能过看了下别人的思路 并查集找到能到fire的点 然后再进行回溯这样就能过了 至于大神们说的 tarjan 和 弗洛伊德算法 有
2014-04-16 15:18:21
872
原创 UVA 10012 - How Big Is It 暴力 回溯 全排列
暴力解法8个圆 全排列 一个个判断回溯 也是全排列的思想 但是在进行排列的时候取一个最小的 如果还没有排完就已经比最小的还大 那么后面的所有以此为基础的答案都可以舍去不用判断上面的大体思路是正确的 但是忽略了一个问题 那就是排列中两个相邻的圆一定相切吗? 答案是否定的 所以我们还需要考虑两个圆不相切的情况 那这样怎么才能确定当前圆应该放在
2014-04-10 19:15:36
782
原创 UVA 539 - The Settlers of Catan 暴力 全排列
这道题目的意思就是在图上找到一条最长的路径每条路径 不可能枚举25个数的全排列 肯定超时 所以要在枚举的时候判断当前点和枚举的下一个点是否有边存在 且边没有被访问过上面的思路好像有个bug 因为点是可以重复的 而且不知道这些点会出现几次 pass掉这种想法 枚举点不行但是可以枚举边啊 边最多25条 哇 25!好大但是
2014-04-10 15:20:54
679
原创 UVA 639 - Don't Get Rooked 暴力回溯
枚举每个可以放的位置 是放还是不放 然后判断合法的方法能放多少个 比较保存最大的一个 0.029s回溯 DFS判断每个位置 每个位置有3两种方法 放或者不放 不合法的情况就退回上一层 否者继续递归下去 直到判断每一个是放还是不放
2014-04-04 13:33:26
582
原创 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
760
原创 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
644
原创 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
689
原创 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
888
原创 POJ 1019 Number Sequence
这道题想到思路就简单 想不到就悲剧了 第一次想到的算法 果断超时 后面想到分成多组来算 每组不超过1亿位 还是超时 最后看了下别人的思想 如下:题意: 求数列的第N位是什么 不是数 是位 例如 12345678910 第十位是1 不是10这个序列是这样的112123123412345可以
2013-12-21 17:06:13
665
原创 二分查找 递归实现 和 循环实现
下面copy了百科对二分算法的描述二分查找编辑二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将
2013-11-12 10:05:33
1329
原创 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
593
原创 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
647
原创 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
638
原创 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
613
原创 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
588
原创 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
508
原创 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
669
原创 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
500
原创 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
530
原创 庞果英雄会 数组排序
第一次做这个网站的题目 感觉题目还不错 虽然很多题不会 由于是第一次做我还以为只能用给出的头文件 于是自己写了个堆排上去。。。我感觉看题目的时候就是一个贪心的过程 每次交换的时候都把最大的排好 然后再排下一个 这样就能保证交换次数最少了 至于证明嘛 呵呵 实在是不会啊下面看代码#include #include #include #d
2013-09-26 16:41:40
498
原创 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
586
原创 POJ 1066 Treasure Hunt 计算几何 枚举线段与直线相交
题意 :从边上出发 找到最少的路径去取得宝藏 就是开最少了门 计算几何 枚举线段与直线相交枚举的线段是所有输入的点 包括墙的四个角的点 直线也一样 最后找出最小的相交次数 减一就是要开的最少门#include#include#include#include#define eps 1e-8#define Max 35using namespac
2013-09-12 09:37:35
547
原创 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
750
原创 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
766
原创 POJ 2398 Toy Storage
挺简单的一道计算几何 只需要知道叉积就可以做了 统计每块区间的toy数 然后toy数相同的统计为s.c 然后从小到大输出就OK了 我的查找方法数据量大的时候效率不高 最好换成二分查找 这样效率就会更高 最后注意 区间总共 n+1个 别漏了最后一个#include#include#include#include#defin
2013-09-07 18:57:55
559
原创 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
575
原创 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
782
原创 UVA 10652 - Board Wrapping 简单计算几何 凸包
这道题是一个简单的凸包问题关键的一点就是 把每个块的四个顶点都求出来 最后排序求凸包 求的时候涉及到角度旋转 因为计算机上的三角函数都是弧度制的 转换的时候注意一点 自己写的旋转的函数的角度参数是正的 还是负的 也要注意 否者很容易出错 下面看代码 用的是刘汝佳的模版 本人感觉用着不错 比自己写的好多了 计算几何模版需要高度可
2013-08-28 17:40:43
618
原创 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
610
原创 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
501
原创 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
541
原创 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
650
原创 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
821
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人