- 博客(52)
- 资源 (8)
- 收藏
- 关注
原创 拓扑排序--九度.1449.[优先级队列实现小顶堆]
题目:http://ac.jobdu.com/problem.php?pid=1449思路: 题目要求输出排名实际就是输出拓扑序列,使用vector和queue并不难实现; 主要是其要求在有多个序列满足时,仅输出号码排列最小的那个;想到的解决办法是用 priority_queue实现小顶堆 保存入度为0的结点,这样每次出队列的都是其中号码最小的,当有多个拓扑序列时,自然满足。#include<
2017-02-28 20:47:41 415
原创 拓扑排序--九度1448
题目:http://ac.jobdu.com/problem.php?pid=1448注解:自己用数组实现的,没有用vector,有点笨吧!#include<cstdio>using namespace std;int inCount[110];//记录入度struct relation { //边 int x, y; //左右端点 bool exsit;}rt[110];int
2017-02-28 14:34:40 210
原创 最短路径--九度1008.[Dijkstra]
题目:http://ac.jobdu.com/problem.php?pid=1008本题要求是要在最短路径长度相同的情况下,选择花费小的方案,但其实是没有这样的测试点的;九度还是有点弱哪!!【纠结】:为什么在选最小边时不用考虑花费因素呢?#include<cstdio>using namespace std;int edges[1010][1010]; //边长int cost[1010][1
2017-02-28 10:26:35 229
原创 最短路径--九度1447[Floyd & Dijkstra]
题目:http://ac.jobdu.com/problem.php?pid=1447#include<cstdio>using namespace std;int ans[110][110];int main() { int n, m, a, b, c; while (scanf("%d%d", &n, &m) != EOF) { if (0 == n && 0
2017-02-28 00:45:50 241
原创 二叉树--九度1078. [前序+中序 -> 后序]
【2017/2/26 | 一次性完成,好有成就感!坚持总有回报!】题目:http://ac.jobdu.com/problem.php?pid=1078题意:给出二叉树的前序和中序遍历结果,输出后序遍历结果#include<cstdio>#include<cstring>#include<algorithm>#define maxSize 30using namespace std
2017-02-26 15:56:07 169
原创 【ACM】PAT.A1107 Social Clusters【并查集】
【2017/2/26】 【还有三个测试点不过!!!】#include<cstdio>#include<algorithm>#include<cmath>#define maxSize 1010using namespace std;/*PAT.A1107.social cluster题意:N个人,每人有不同的爱好,统计有同类爱好的人,并输出人数人数[1,1000] 爱好类型[1,
2017-02-26 10:21:08 427
原创 最小生成树--九度1154[Kruskal]
题目[jungle Roads]: http://ac.jobdu.com/problem.php?pid=1154思路:没什么特别,就是简单的kruskal算法实现,重点在数据的处理转换。疑惑:实现的时候要读入单个字符,使用scanf(“%c”)总是出错,最后想到的解决办法是按字符串读入,再取其0位字符。 应该有正规的格式,暂时还没搜到!#include<cstdio>#include<algo
2017-02-25 20:20:14 482
原创 最小生成树--九度1144[Kruskal]
【2017/2/25】 题目:http://ac.jobdu.com/problem.php?pid=1144思路:题目本身就是Kruskal算法找最小生成树,没什么难度;重点在于数据的转化处理。需要把原始的坐标信息,转化为点的编号。#include<cstdio>#include<algorithm>#include<cmath>#define maxSize 10005using na
2017-02-25 18:08:19 207
原创 最小生成树--九度1017[Kruskal]
【2017/2/25】【还是畅通工程】很简单的题目,克鲁斯卡尔标准步骤!#include<cstdio>#include<algorithm>#define maxSize 10005using namespace std;struct Road { int a, b; int len;}road[maxSize];int tree[105];bool cmp(Road A
2017-02-25 16:49:44 211
原创 【ACM】九度.1444【并查集】
题目:http://ac.jobdu.com/problem.php?pid=1444题意:查找最大的集合,输出集合中的元素个数思路: 用一个额外数组group[ i ] 记录以结点 i 为根节点的集合所含元素数,合并集合时累加。 注意的一点是:单点是单元素集合,初始化为1,而非0!#include<cstdio>#define maxSize 10000001using namespace
2017-02-25 15:54:22 252
原创 【ACM】九度1012 & 1109 【并查集】
题目:http://ac.jobdu.com/problem.php?pid=1012思路:类似于kruskal算法对数据进行预处理,分成不同集合,集合个数减一就是答案感悟:寻找根节点时,进行了路径压缩,即在查找过程中,路径上所有点的父节点都重新赋值,直接指向根节点;这样有效降低搜索树的高度,提高了效率#include<cstdio>#define maxSize 1005using names
2017-02-25 11:57:10 274
原创 哈夫曼树--九度 1172 & 1107 [优先队列实现小顶堆]
题目:http://ac.jobdu.com/problem.php?pid=1172哈夫曼树的最小权值 = sum(叶节点权值 * 路径长度)思路: 1、把候选节点放入队列中; 2、每次取出两个最小点,合并后把父节点再投入堆中 3、重复步骤2,直到队列中只有一个结点,即为根节点实现方式: 中间结点【即非叶节点】的权值 累加求和 即可!【忘了如何证明的话画个草图很容易就看出来了】#includ
2017-02-25 09:38:58 964
原创 学习过程 [摘自某博文的评论中]
理解和讨论之前请先学会如何观察!计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……对学习编程者的忠告: 多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应
2017-02-25 08:44:48 195
原创 【ACM】PAT.A1091 Acute Stroke【搜索】
题目:https://www.patest.cn/contests/pat-a-practise/1091题目本身不难,类似于非连通图的BFS()标准遍历代码,从每一点向六个方向扩展即可。/**************************//@Author: 3stone//@ACM: PAT-A1091 //@Time: 18/2/2//@IDE: VS2017**
2017-02-24 23:18:31 344
原创 【ACM】PAT. A1075. PAT Judge【排序】
有一个测试点过不了,要过一遍算法笔记的代码才行哪!#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define maxSize 100000using namespace std;struct subminttion { int id; int success = 0; //完美解
2017-02-24 20:20:28 287
转载 C++ 中数据类型 相关
C/C++中各种类型int、long、double、char表示范围http://blog.csdn.net/xuexiacm/article/details/8122267浮点数存储原理 & 运算法则http://blog.csdn.net/vincent040/article/details/6211838浮点数判等(判0)https://www.cnblogs.com/k
2017-02-24 08:36:06 157
原创 【ACM】PAT.A1103 Integer Factorization【搜索】
题意: K个数 的 P次方之和 = N N <= 400, K <= N, 1 < P <= 7 多方案时选择基数和最大的,基数和也相同时按字典序选择最靠前的思路: 1、由于p确定,可以提前确定P次幂小于N 的数,用数组fac[] 保存起来 2、每次DFS()确定是否加 fac[i],形成两个分支 3、需要传的参数有: cur: 从N递减遍历求幂次和,保
2017-02-23 19:43:09 218
原创 搜索--九度1457.[BFS]【好题】
【待整理】#include<cstdio>#include<queue>using namespace std;bool mark[105][105][105] = { false };int success = 0;//不能先喝一部分,必须先平分开,//最后满足的状态是 大杯子/瓶子 装了一半可乐struct point { int s, max, min, t;};queu
2017-02-23 14:44:26 349
原创 搜索--九度1461.[DFS]
注意点:每次DFS()后一定要恢复 点的可访问性#include<cstdio>using namespace std;char row[10][10] = { 0 };int map[10][10] = { 0 };bool mark[10][10] = { false };int flag = 0;int go[][2] = { //坐标变换数组 1, 0, -1, 0
2017-02-23 09:58:59 239
原创 搜索--九度1456.[BFS]
题目:http://ac.jobdu.com/status.php?user_id=real_3stone坐标变换数组是一种很好的形式,以后多尝试#include<cstdio>#include<queue>using namespace std;int cas[51][51][51] = { 0 }; //坐标点int mark[51][51][51] = { 0 }; //是否已访问i
2017-02-22 21:32:29 200
转载 计算几何-二分求幂
如何快速求解 a 的 b次幂? 【王道机试指南 P85 –待整理】题目: 九度1441#include<cstdio>#include<cstring>using namespace std;//题目要求最后三位,故中间值也只用保留三位即可,//可避免了中间值太大导致无法保存int main() { int a, b; while (scanf("%d %d", &a, &
2017-02-22 15:38:10 270
原创 【算法整理】最大公约数&最小公倍数【欧几里得】
最大公约数 求解步骤:1、若a,b全为0则它们的最大公约数不存在;2、若a,b其中之一为零,则它们的最大公约数为非零的那个;3、若a,b都不为零,则使 a = b; b = a % b; 重复该过程,直到b为零最小公倍数 = (a * b)/最大公约数 #include<cstdio>#include<cstring>using namespace std;int gcd_1(int a
2017-02-22 00:25:14 266
转载 计算int型数据的位数
如果要计算一个int类型数据的位数,方法:1、传统的用一个计数变量count,然后循环体中一直number/10,count计数,最后的count就是位数2、直接用log函数,位数count=(int)log10(num)+13、用sprintf和strlen函数,sprintf(str,”%d”,num),count=strlen(str),这种直接求长度效率肯定要低很多,但是直接用了库函数不需要
2017-02-21 23:28:42 7090
原创 求模运算--小整理
一、a % b 的计算步骤计算出a的绝对值被 b的绝对值除所得的余数,再使该余数的符号与a保持一致。即:表达式的结果与b的符号没有直接关系二、修正余数,使为正使得余数范围落在0至b-1对a%b取得的余数 加上除数后再对该和求模,即新余数为: r'=(r+b)%b原理: 以下均满足余数定义,为了避免当旧余数 r 为零时,(r+b)为除数b,再模b,这样不仅对可能出现的负余数做了适当的修正,同时对出
2017-02-21 22:21:36 964
原创 栈的应用--九度1019.简单计算器【神】
转载自:http://www.xuebuyuan.com/1980063.html#include "stdio.h"#include "string.h"#define MAX 1001//格式化读入double stack[MAX]; //保存运算符int tail;int main() { int a; while (scanf("%d ", &a) && a != 0
2017-02-21 20:51:09 280
原创 栈的应用--九度1153.括号匹配问题
题意:http://ac.jobdu.com/problem.php?pid=1153#include<cstdio>#include<cstring>#include<stack>#define maxSize 110using namespace std;int main() { char str[maxSize]; char re[maxSize]; while
2017-02-21 11:41:09 667
原创 递归--九度1120.全排列
#include<cstdio>#include<iostream>#include<string>#include<algorithm>#define maxSize 10using namespace std;/*全排列问题:使用hash数组,下标表示数字,内容为true/false表示是否已探测过递归算法:假设0到(index-1)已经满足,讨论与index位的情况递归基:
2017-02-19 23:17:53 295
原创 递归--九度1460.Oil Deposit【待优化】
题目: http://ac.jobdu.com/problem.php?pid=1460 【代码需重写,太糙了】 类似于n皇后问题:使用hash数组,下标表示数字,内容为true/false表示是否已探测过 递归算法:DFS搜索 递归基:遍历一遍即可#include<cstdio>#include<iostream>#include<cstring>#include<string>#
2017-02-19 16:32:34 265
原创 递归--【全排列问题】九度1459.Prime ring problem
题目:http://ac.jobdu.com/problem.php?pid=1459#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<algorithm>#define maxSize 10010using namespace std;/*全排列问
2017-02-19 11:27:14 361
原创 递归--九度1458.汉诺塔3
题意: 改变游戏的玩法,不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面。现在有N个圆盘,她至少多少次移动才能把这些圆盘从最左边移到最右边?递归式:F(n) = 3F(n-1)+2 递归基:F(1) = 2#include<cstdio>using namespace std;long long F(int n) {//递归返回值较大
2017-02-19 09:08:57 519
原创 【ACM】PAT. A1038 Recover the Smallest Number 【贪心算法】
题意:给出若干有前导零的数字串,将它们拼接,是生成的数最小 样例: 5 32 321 3214 0229 87 22932132143287贪心策略:直接按字典排序会有问题,稍作调整 正确解法: 字符串a,b 若 a + b < b + a,则a排在b前#include<cstdio>#include<iostream>#include<cstring>#include<string
2017-02-18 23:24:48 280
原创 【ACM】PAT. A1067 Sort with Swap(0,*)
题意: https://www.patest.cn/contests/pat-a-practise/1067#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define maxSize 100010using namespace std;int permu[maxSize];int findWr
2017-02-18 21:46:24 253
原创 【ACM】PAT. A1037. Magic Coupon【贪心选择】
题意:https://www.patest.cn/contests/pat-a-practise/1037 瑕疵:有一个测试点过不了,显示段错误,疯了#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define maxSize 10000using namespace std;int a[maxS
2017-02-18 18:36:05 261
原创 【ACM】PAT. A1033 To Fill or Not to Fill【贪心算法】
题意:https://www.patest.cn/contests/pat-a-practise/1033//策略1:在满油能到达的站中选择 油价比本站低的 最近站点 //策略2:若满油能到达的站中无 油价比本站低的站点, // 则在可到达的点中选择 油价最低 的 //策略3:满油仍无可到达站点 或 到达终点 时退出#include<cstdio>#include<iostrea
2017-02-18 16:23:15 270
原创 贪心选择--九度1434[今年暑假不AC]
| 问题描述: 活动安排问题,尽可能多安排活动| 问题思路: 按活动结束时间降序排列,然后贪心选择| 贪心证明: 参考博客AC C++代码:#include&amp;lt;cstdio&amp;gt;#include&amp;lt;iostream&amp;gt; #include&amp;lt;string&amp;gt;#include&
2017-02-18 09:00:04 246
原创 分解质因数-PAT.A1059
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<string>#include<cmath>#define maxSize 100010using namespace std;int prime[maxSize] = { 0 };int judgePrime(int ex) {/
2017-02-17 19:32:33 262
原创 散列-PAT.A1078 Hashing
注意:本题考察点–二次探查法的上限为所给的用于求余的素数#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<string>#define maxSize 11111 //设置为10000就会出错using namespace std;int judgePrime(int ex) {//
2017-02-17 13:38:29 370
原创 【ACM】PAT.A1016 Phone Bills 【文本处理】【排序】
题目连接:https://www.patest.cn/contests/pat-a-practise/1016#include&lt;cstdio&gt;#include&lt;iostream&gt;#include&lt;cstring&gt;#include&lt;string&gt;#include&lt;cmath&gt;#inc
2017-02-17 11:28:31 478
转载 struct 与 typedef struct 的区别
转载自:http://www.cnblogs.com/qyaizs/articles/2039101.htmlstruct 和 typedef struct分三块来讲述: 一、首先: //注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student
2017-02-14 19:35:21 160
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人