c++
文章平均质量分 64
ices_
本科生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
set中常用的方法
set中常用的方法begin() ,返回set容器的第一个元素end() ,返回set容器的最后一个元素clear() ,删除set容器中的所有的元素empty() ,判断set容器是否为空max_size() ,返回set容器可能包含的元素最大个数size() ,返回当前set容器中原创 2017-07-11 16:52:54 · 641 阅读 · 0 评论 -
Fence Repair POJ - 3253 最小优先队列,哈弗曼树
首先拿用例来说明一下题意给个一根长度为21的模板,目标是把它分为三块,长度分别是8,5,8切割的时候先把他切割成长度为8和13的,消耗21,然后再把长度为13的模板切割成长度为5和8的,消耗13然后总消耗就是21+13=34求最小总消耗我用的是哈弗曼树来实现,需要注意的是输入n==1,也就是分成一块的时候,这时候直接弹出队列并输出木板长度,否则根据哈夫曼计算总消原创 2017-07-15 19:18:07 · 430 阅读 · 0 评论 -
最短单源路径之dijkstra算法
#include#include#include#define MAX 999using namespace std;int dis[MAX];int n,m;int d[MAX][MAX];int Min,flag;bool vis[MAX];int dijkstra(){ for(int i=1; i<=n; ++i) { if(d[m][原创 2017-07-30 22:21:09 · 471 阅读 · 0 评论 -
多源最短路径之Floyd算法
#include#include#include#define MAX 999using namespace std;int n,m;int e[MAX][MAX];void Init(){ for(int i=1; i<=n; ++i) for(int j=1; j<=n; ++j) { if(i==j)原创 2017-07-30 23:18:30 · 491 阅读 · 0 评论 -
Babelfish POJ - 2503
题意很简单,先给出一组相互映射的字符串组,左边的str1和右边的str2对应接下来输入一行回车接下来每输入字符串,判断之前是否输入过str2,如果没有则输出eh,否则输出str1直接给出代码#include#include#include#include#define prime 1999using namespace std;char answer[15];原创 2017-07-22 13:51:12 · 399 阅读 · 0 评论 -
A Knight's Journey POJ - 2488 dfs水题
骑士的遍历问题直接上代码#include#include#include#define MAXN 100using namespace std;int vis[MAXN][MAXN];int r,c;int sum;int answerX[1010];int answerY[1010];int dir[8][2]= {{-1,-2},{1,-2},{-2,-1}原创 2017-08-07 16:50:41 · 372 阅读 · 0 评论 -
Wormholes POJ - 3259 floyd算法求负环
题意是给出N个点,Dou个边,每个边需要花费V时间,然后给出Sig个单项边,每个边花费时间-V问能不能从某个点开始走,转一圈回到这个点其实就是求负环用的是Floyd算法#include#include#define MAX 10000000#define len 510using namespace std;int n;int dou,sig;int edg[原创 2017-07-31 20:47:12 · 780 阅读 · 0 评论 -
多泳道(队列)问题 标准输出问题
问题描述:发神给我出的一个题给出一个数n输入n个 1-n 的数,不能重复,求使上述输出的数转换为正序排列的数的最小泳道数条件:可以利用多个泳道(也就是队列),每个泳道可以装若干个数//思路 每个数前面的数只能是比次数小的,不能是比次数大的,如果当前不存在一个泳道的最后一个数小于要加如的数,则size++,//如果存在多个符合条件的,则插入到当前泳道中队尾最大的原创 2017-07-17 01:27:16 · 904 阅读 · 0 评论 -
畅通工程 HDU - 1232
题意是给第一行两个数,n是城市数,m是给出的已经形成通路的道路数,求还需要多少个通道才能使每两个城市之间都形成通路。上篇博客文章讲了并查集,知道了并查集就很容易做出来,可以这样想,由给出的数据先算出目前已经有了多少个互相形成同路的集合 拿题目中给出的数据举个例子 4 2 1 3 4 3 其中 1 3 4 已经形成通路,2单独形成一个通路,因此如果想要城市之间两两形成同路,则只需要再构原创 2017-07-25 00:09:30 · 458 阅读 · 0 评论 -
Colored Sticks POJ - 2513 并查集,字典树,欧拉回路
这道题涉及的知识点比较多前面的博客是为这道题打基础步入正题,题意是说给出一堆木棒,每根木棒的左边和右边颜色不一样,求能否将所有的木棒按规则连成一条直线,规则是相连的木棒端点处颜色必须一致。如果可以输出Possible例如题目中给出的例子(后面的序号是我自己加的)blue red 1red violet原创 2017-07-26 14:02:49 · 455 阅读 · 0 评论 -
昂贵的聘礼 POJ - 1062 dfs
这道题网上大部分都是用单元最短路径做的,我一开始想到的方法是dfs,因为这种思路就是跟着题目中的逻辑来实现的然后其中有一个坑,坑住我了,就是判断级别的时候,直接在一开始进行判断,我一开始wr了好多了,就是因为在当前节点的某个分支处才判断,其实在一开始就要判断,因为如果等级差超过了给定的m,也不能用直接获取当前节点不打折的价钱的方法进行购买下面是代码#include#include原创 2017-08-05 15:05:57 · 419 阅读 · 0 评论 -
Frogger POJ - 2253
Floyd算法问题#include#include#include#define MAXN 220#define INF 123456789#include#includeusing namespace std;int n;double dis[MAXN][MAXN];struct Point{ double x,y;} point[MAXN];double原创 2017-08-06 11:20:55 · 390 阅读 · 0 评论 -
Squares POJ - 2002 hash函数
题意是给给定一个数值n输入n组数,求由n组数能组成多少个正方形、此题如果直接用4层循环查找的话 时间复杂度是10的12次方我们选择先找两个点,然后计算出另外两个点,再查找是否给出了这两个点来计算answer可以把给出的每个点做一个哈希映射,此题选择的是x*x+y*y;#include#include#include #define prime 1999using原创 2017-07-14 23:49:48 · 340 阅读 · 0 评论 -
Eqs POJ - 1840 hash表
题意是给出一个五元三次方程组的五个系数求共有多少组解题目限制时间是5000Ms如果直接用暴力求解的话5层循环,每层100次,100的5次方,肯定不行转换一下方程组-(a*x1*x*x1+b*x2*x2*x2)=c*x3*x3*x3+d*x4*x4*x4+e*x5*x5*x5这样就降到了100的三次方,100万然后我们用hash映射,将前面的结果算出来映射到has原创 2017-07-14 10:57:24 · 431 阅读 · 0 评论 -
vector常用方法
(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=vec.begin();it!=vec.end();it++) cout(6)插入元原创 2017-07-11 17:45:04 · 528 阅读 · 0 评论 -
Spell checker poj 1035 (串的练习)
大致题意:输入一部字典,输入若干单词1、 若某个单词能在字典中找到,则输出corret2、 若某个单词能通过 变换 或 删除 或 添加一个字符后,在字典中找得到,则输出这些单词,输出顺序根据 输入的那部字典的字典序3、 若某个单词无论操作与否都无法在字典中找得到,则输出空#include #include #includeusi原创 2017-07-11 18:51:00 · 385 阅读 · 0 评论 -
c++其他类型转换成string类型
举个例子,如果你要把int类型的抓换成字符串类型的,可以调用下面这个函数当然,类似的你也可以写出其他类型转换成string类型的函数,然后调用即可记得在实用的时候加上头文件#include例子如下string Int_to_String(int n){ostringstream stream;stream<<n; //n为int类型return原创 2017-06-10 21:12:44 · 1660 阅读 · 0 评论 -
struct timeval结构体 以及 gettimeofday()函数
关于 struct timevalstruct timeval{ __time_t tv_sec;/*Seconds.*/ __suseconds_t tv_usec;/*Miceoseconds.*/};其中tv_sec是Epoch到创建结构体timeval的秒数,tv_usec为微秒数,也就是秒数后面的零头,下面做一个实验#include#inclu原创 2017-07-01 20:28:10 · 1264 阅读 · 0 评论 -
Blue Jeans POJ 3080 (串)
题意很简单,找最长且字典序最大的公共子串,并且长度不能小于3方法是暴力,找出第一个字符串的所有子串,依次与后面的字符串匹配。#include #include #include #includeusing namespace std;char a[15][65];char temp[65];char answer[65];int len;int k;int Fi原创 2017-07-11 21:05:03 · 359 阅读 · 0 评论 -
All in All POJ - 1936 (串)
这道题非常水,题意是判断前面的串是否是后面串的子串(前面串的每个字符在后面串都出现,并且出现顺序是前面串每个字符的出现顺序即可)#include #include #include #includeusing namespace std;char s1[100010],s2[100010];int main(){ while(~scanf("%s %s",原创 2017-07-11 21:16:17 · 324 阅读 · 0 评论 -
Who's in the Middle poj 2388
很简单,排个序就行了#include #include #include #includeusing namespace std;int a[10050];bool cmp(int a,int b){ return a<b;}int main(){ int n; cin>>n; for(int i=0; i<n; ++i)原创 2017-07-12 08:26:09 · 503 阅读 · 0 评论 -
冒泡排序
冒泡排序是一种简单的排序方法,一般不适用于规模比较大的排序,而且效率比较低,不过作为入门级别的排序方法,我们还是有必要学习一下学习冒泡排序之前,我们先来讲解一个简单的排序方法,先上代码#include #include #include #include#include#includeusing namespace std;double random(原创 2017-07-12 08:25:57 · 548 阅读 · 0 评论 -
Ultra-QuickSort POJ 2299 归并排序算法
题意是给出一个数组,用冒泡排序的方法将数组排序,求需要多少趟才能排完此题如果直接按照冒泡排序的方法排序并计算次数会超时,因为时间复杂度是O(n2)其实分析一下,我们只要求出给出的数组中有多少个逆序对即可,下面的一种解法采用了归并排序的方法来求逆序对数。#include#includeusing namespace std;int a[500010];long long原创 2017-07-12 15:03:57 · 382 阅读 · 0 评论 -
Snowflake Snow Snowflakes POJ - 3349 hash表问题
题意是给出一组雪花的6个角的值,判断通过比较是否能发现两片相同的雪花。主要利用了hash表的映射,计算每个雪花的key值,如果不存在以此key值为键的hash表,则新建一个,若存在则查找hash表,如果有则标记Find为ture否则通过hash重映射方法,继续向以此key值为键的hash表添加数据。判断的时候需要分顺时针和逆时针两种比较方法。#include#原创 2017-07-12 17:37:41 · 502 阅读 · 0 评论 -
Gold Balanced Lineup POJ - 3274 Hash表应用
先说题意把,从网上找到了一个能很好解释题意的图片下面我以此题举个例子此题的输入如下7 3 7672142也就是说有7头牛将下面输入的7个数字每个数字都可以先转化内位数不超过3位的二进制数(注意顺序是从右向左)先来转一下 1 2 3 序号7 1 1原创 2017-07-13 22:21:37 · 415 阅读 · 0 评论 -
Stockbroker Grapevine POJ - 1125
floyd多源最短路径#include#include#include#define inf 20 using namespace std; int dis[110][110];int i,j,k,n;void floyd(){ for(k=1; k<=n; ++k) for(i=1; i<=n; ++i) for(j=1; j<原创 2017-08-06 11:56:43 · 381 阅读 · 0 评论
分享