
算法
文章平均质量分 74
SSSheldon
理工男,文青心,熏陶久了什么也不是的逗逼青年。
展开
-
动态规划初步
能用(1)、最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称为该问题的最优子结构,即满足最优化原理。(2)、无后效性:即某阶段状态一旦确定,就不受这个状态的以后的决策影响,也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。(3)、有重叠子问题:即子问题之间是不独立的,一个子问题在一阶段的决策中肯能多次被用到。(该性质并不是动态规划所必需的条件,但是如果没有该原创 2014-11-05 21:24:38 · 575 阅读 · 0 评论 -
航线设置
题目描述就直接上图了原创 2015-04-13 18:03:57 · 14592 阅读 · 1 评论 -
跑跑卡丁车解题报告
Submit Status Practice HDU 1494Description跑跑卡丁车是时下一款流行的网络休闲游戏,你可以在这虚拟的世界里体验驾驶的乐趣。这款游戏的特别之处是你可以通过漂移来获得一种 加速卡,用这种加速卡可以在有限的时间里提高你的速度。为了使问题简单化,我们假设一个赛道分为L段,并且给你通过每段赛道的普通耗时Ai和用加速卡的耗时Bi。加速原创 2015-04-20 22:11:26 · 830 阅读 · 0 评论 -
丑数~
题目描述 :只有2 3 5 这三个因子的数,求第1500个 设1 为第一个丑数。思路一直接搜,肯定爆,直接pass;思路二!没错,又是动归!后边的每个丑数肯定都是 前边较小的丑数与2,3或者5乘积得到的。所以用一个数组存下所有的数字,存的时候注意一下大小顺序。简单dp。#include #include #define maxn 1510us原创 2015-04-16 11:06:17 · 509 阅读 · 0 评论 -
区间dp 求杀怪最少损伤
游戏人生时间限制:1000 ms | 内存限制:65535 KB难度:2描述一入宿舍深似海,自此AC是路人,善哉善哉。。。有这样一个游戏:有一排妖怪,每个妖怪都有一个主要攻击值和辅助攻击值,你每次只能攻击一个妖怪,当你攻击一个妖怪时,这只妖怪 很显然的就挂了(要不都没得玩儿了),当然当前妖怪对你造成的伤害为 当前妖怪的主要攻击值+旁边两只妖怪的原创 2015-04-20 23:23:03 · 857 阅读 · 0 评论 -
区间dp++ 基础题,石子归并
这题是区间dp的入门题,跟上题游戏人生http://blog.youkuaiyun.com/sheldon761642718/article/details/45157595的思路差不多,所以在这里就一起写了先看看题目,石子合并(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述 有N堆石子排成一排,每堆石子有一定的数原创 2015-04-21 21:46:03 · 13837 阅读 · 0 评论 -
优先队列
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~百度百科上这样描述的: 优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素 优先队列的类定义 优先队列是0个或多个元素的集合,每个元素原创 2015-04-29 21:08:18 · 582 阅读 · 0 评论 -
按位与、或等运算方法
下面总结一下各种c++中出现的各种位运算的方法!1 按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。原创 2015-05-27 21:52:34 · 6491 阅读 · 1 评论 -
二分
要知道,只有一个算法的时间复杂度是log(n)没错,那就是二分查找!关于二分查找法二分查找法主要是解决在“一堆数中找出指定的数”这类问题。而想要应用二分查找法,这“一堆数”必须有一下特征:存储在数组中有序排列所以如果是用链表存储的,就无法在其上应用二分查找法了。至于是顺序递增排列还是递减排列,数组中是否存在相同的元素都不要紧。不过一般情况,我们还是希原创 2015-06-07 20:42:27 · 455 阅读 · 0 评论 -
对map的理解记录
先粘贴一下百度1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找1原创 2014-10-21 17:41:53 · 13129 阅读 · 0 评论 -
区别 最短路跟最小生成树
首先是定义上最小生成树能够保证整个拓扑图的所有路径之和最小,但不能保证任意两点之间是最短路径。最短路径是从一点出发,到达目的地的路径最小。实现方法1. 最小生成树最小生成树有两种算法来得到:Prims算法和Kruskal算法。Kruskal算法:根据边的加权值以递增的方式,一次找出加权值最低的边来构建最小生成树,而且规定:每次添加的边不能造成生成树有回路,知道找原创 2015-05-25 11:22:23 · 1922 阅读 · 0 评论 -
C++之容器---vector
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。其基本操作如下:(1)头文件#include.(2)创建vector对象,vector vec; vector v1(原创 2015-09-08 20:50:57 · 385 阅读 · 0 评论 -
从农夫砍大白菜到解决约瑟夫环的问题!
先简单说一下 农夫砍白菜的问题.在一个院子里农夫中了一圈n颗大白菜,到了收货的季节.,作为一名有理想的农夫决定没数三个数就砍掉一颗,然后接着开始数三个数继续..问 砍掉头m颗白菜的顺序是什么?这个我的思想就是暴力模拟啊,具体思路,先把每个位置上的白菜都初始化为自己的位置值,然后开始计数,到了3之后就将这里标记一下,同时砍掉的白菜总数加一,计数清零.解决一些小数据问题是没有什么问原创 2015-12-16 21:01:36 · 13739 阅读 · 0 评论 -
简单涉猎各种博弈
一. 巴什博奕(Bash Game): A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30。这应该是最古老的关于巴什博奕的游戏了吧。其实如果知道原理,这游戏一点运气成分都没有,只和先手后手有关,比如第一次报数,A报k个数,那么B报5-k个数,那么B报数之后问题就变为,A和B一块报数,看谁先报到25了,进而变为20,15,10,5,当到5的时候,不管A怎么报数,最后一原创 2015-12-21 10:15:10 · 643 阅读 · 0 评论 -
游船费问题
问题描述 某旅游城市在长江边开辟了若干个旅游景点。一个游船俱乐部在这些景点都设置了游艇出租站。游客可在这些游船出租站租用游船,并在下游的任何一个游船出租站归还游船,从一个游船出租站到下游的游船出租站间的租金明码标价。你的任务是为游客计算从起点到终点站间的最小租船费用。输入 输入文件有若干组数据,每组测试数据的第一行上有一个整数n(11,2,。。。,n。接下原创 2015-04-13 10:38:56 · 2723 阅读 · 1 评论 -
导弹拦截
题目描述某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。输入第一行输入测试数据组数N(1接下来一行输入这组测试数据共有多少个导弹m(1接下来行输入导弹依次原创 2015-04-14 19:54:41 · 827 阅读 · 2 评论 -
树状数组
树状数组是一个优美小巧的数据结构,在很多时候可以代替线段树。一句话概括就是,凡是树状数组可以解决的问题,线段树都可以解决,反过来线段树可以解决的问题,树状数组不一定能解决。原创 2014-10-23 22:17:02 · 13196 阅读 · 0 评论 -
多边形内角和与多边形的面积公式
正多边形内角计算公式与半径无关要已知正多边形边数为N 内角和=180(N-2)半径为R 圆的内接三角形面积公式:(3倍根号3)除以4再乘以R方外切三角形面积公式:3倍根号3 R方外切正方形:4R方 内接正方形:2R方 五边形以上的就分割成等边三角形再算内角和公式——(n-2)*180`我们都知道已知A(x1,y1)、B(x2,y2原创 2014-11-22 10:38:00 · 3386 阅读 · 0 评论 -
判断两条直线(线段)的交点问题
You can Solve a Geometry Problem tooTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7770 Accepted Submission(s): 3793Problem Desc原创 2014-11-19 11:49:30 · 5292 阅读 · 0 评论 -
筛选法求素数
#includeusing namespace std;筛法求素数const int MAXV = 10000; //素数表范围筛法求素数bool flag[MAXV+1]; //标志一个数是否为素数筛法求素数int prime[MAXV+1]; //素数表,下标从0开始筛法求素数int size; //素数个数筛法求素数void genPrime(int max)筛法求素数{筛法求原创 2014-11-15 22:15:22 · 13782 阅读 · 0 评论 -
匈牙利算法
这个学了好久的算法了原创 2014-11-08 22:17:39 · 13493 阅读 · 0 评论 -
树状数组之区间求最值
在http://blog.youkuaiyun.com/sheldon761642718/article/details/40406011这篇博客中初步介绍了树状数组的基本用法原创 2014-10-28 17:17:32 · 2621 阅读 · 2 评论 -
博大精深库函数之 _itoa
先介绍一个把整型数字转换成字符串 _itoa( 整型数字, 字符串名 , 等进制基数(保证了整型数字要按照这个进制转换成字符串表示)) !!原创 2014-10-24 10:29:00 · 832 阅读 · 0 评论 -
C list 函数介绍
Ref: C++ STL list函数详解assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删除一个元素 front() 返回第一个元素 get_allocator()转载 2014-10-08 21:35:44 · 1784 阅读 · 0 评论 -
算法篇之完整的大数!!!(我能想到的高精度就这么多了)
#include #includechar c[2000];//全局变量,存储大数运算的结果char arr[1000];//高精度除以高精度的余数long z=0;//高精度除以低精度的余数int Judge(char ch[]){//判断字符串ch是否全为0,若全为1,返回,否则返回0 int i,k; k=strlen(ch); for(i=0;i<k;i++原创 2014-09-06 15:49:42 · 9635 阅读 · 1 评论 -
算法篇之并查集
并查集顾名思义合并查找集合原创 2014-08-28 09:28:50 · 793 阅读 · 0 评论 -
算法之母函数篇
让你这么多小清新!摔!原创 2014-08-27 08:10:14 · 905 阅读 · 1 评论 -
位运算函数lowbit
#include #include using namespace std;int Lowbit(int x){ return x&(-x);}int main(){ int a[100]; int i; for(i = 0 ; i < 100; i++) { scanf("%d",&a[i]); printf(原创 2014-10-23 22:31:14 · 14466 阅读 · 2 评论 -
杭电1711之kmp算法
Number SequenceTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11435 Accepted Submission(s): 5212Problem DescriptionGiven two se原创 2014-09-01 16:57:53 · 807 阅读 · 0 评论 -
STL运用集合!(vector,map,list and so on)!!
向量(vector) 连续存储的元素Vectorc;c.back() 传回最后一个数据,不检查这个数据是否存在。c.clear() 移除容器中所有数据。c.empty() 判断容器是否为空。c.front() 传回地一个数据。c.pop_back() 删除最后一个数据。c.push_back(elem) 在原创 2015-04-19 22:34:09 · 13703 阅读 · 0 评论