Code Up
热爱Data的直男熙哥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CCFCSP 201912-4 区块链 80分(超时)
思路事实证明不要想太多,我一开始的时候考虑如果时间非顺序输入要如何解决,给自己凭空增加了2小时的无效工作量,事实证明他的数据时间是顺序输入的在1号node更新后,告诉2号考虑一下更新,如果2号更新了,务必要把2号也加入到传播队列里。这里使用队列来进行传播操作,队列中存放着该节点当前时间的状态以及何时需要更新其邻居。本题的顺序应该是,先更新邻居(传播链),再查询,再插入块。由于太过暴力超时了啊哈哈,时间紧迫,所以就没再做改进。代码(80分)#include <iostream>原创 2020-12-01 21:29:52 · 281 阅读 · 0 评论 -
CCFCSP 201912-3 化学方程式(70分)
思路大模拟题,没啥可说的,左右两侧分别计算元素数量,然后用vector(单纯喜欢用而已,很多大佬似乎用map)判断左右是否配平。遇到左括号,虽然可能存在嵌套情况,但只要找到配套的右括号即可。随后便可以通过括号后面的数字来决定括号里的元素需要乘几倍数。遇到大写字母,看一下后面有没有小写字母了,然后看后面是否有数据,没有数据就默认乘1遇到右括号,继续进行即可遇到加号或者方程一开始,需要找到其后面的数字,有数字则需要相乘,没有数字则代表乘1即可代码虽然给的测试用例全部通过,但只拿到了70分,求助原创 2020-11-29 21:48:09 · 316 阅读 · 0 评论 -
二叉树遍历 二叉树推导
Problem C: 二叉树遍历题目Description二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。Input两个字符串,其长度n均小于等于26。第一行为前序遍历,第二行为中序遍历。二叉树中原创 2020-10-26 16:46:15 · 375 阅读 · 0 评论 -
Problem B: DFS or BFS? 广度优先搜索应用
Problem B: DFS or BFS?题目Description说好了,题目不黑人。给你一个8*8的矩阵,你的初始位置是左下角方格(用’U’表示),你的目标位置是右上角的方格(用’A’表示),其余的62个方格,如果是’.’,表示这个方格为空,如果是’S’,表示这个方格有一块大石头。好了现在你开始从左下角出发,每次可以往上,下,左,右,左上,右上,左下,右下移动一个方格,或者你可以原地不动,一共九个动作方式,在你做完一个动作后,所有的大石头会往下掉一个方格(如果一个大石头的位置是(x,y),那下原创 2020-10-26 09:31:43 · 385 阅读 · 4 评论 -
走迷宫
例题:【递归入门】走迷宫Description有一个nm格的迷宫(表示有n行、m列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这nm个数据和起始点、结束点(起始点和结束点都是用两个数据来描述的,分别表示这个点的行号和列号)。现在要你编程找出所有可行的道路,要求所走的路中没有重复的点,走时只能是上下左右四个方向。如果一条路都不可行,则输出相应信息(用-l表示无路)。 请统一用 左上右下的顺序拓展,也就是 (0,-1),(-1,0),(0,1),(1,0)Input第一原创 2020-10-25 10:09:22 · 389 阅读 · 0 评论 -
算法笔记 栈的应用 简单计算器 中缀和后缀表达式
思路将输入的中缀表达式转后缀表达式遇到数字,则算出数值,直接放入队列(注意数据非仅有一位,需要计算出整个数的值)遇到运算符先判断优先级是否小于栈中top的运算符如果是,将栈中的运算符pop到队列中,直到栈中没有运算符优先级更大为止如果不是,则直接将运算符放入栈中最后如果栈中剩余运算符,则直接放入队列中计算后缀表达式,遍历队列如果为数值,则放入栈中如果为运算符从栈中pop出两个数(注意是先第二个后第一个,后进先出嘛)随后运算最后把计算完成的数放入栈中代码原创 2020-10-07 20:38:13 · 247 阅读 · 0 评论 -
算法笔记 练习 完数
题目Description求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。Input测试数据有多组,输入n,n数据范围不大。Output对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。Sample Input Copy6Sample Output Copy6思路没啥可讲的,就是找到1-n/2的因子然后sum(最大原创 2020-09-22 08:53:17 · 218 阅读 · 0 评论 -
算法笔记 素数 Goldbach’s Conjecture
题目DescriptionGoldbach’s Conjecture: For any even number n greater than or equal to 4, there exists at least one pair of prime numbers p1 and p2 such that n = p1 + p2.This conjecture has not been proved nor refused yet. No one is sure whether this conjec原创 2020-09-20 16:20:17 · 184 阅读 · 0 评论 -
算法笔记 CodeUp Problem A: 素数
题目Description输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。Input输入有多组数据。每组一行,输入n。Output输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。思路由于n<=10000,所以可以考虑先打素数表再输出注意:如果没有素数(也就是说n<=11)则输出-1代码#inclu原创 2020-09-20 15:54:40 · 266 阅读 · 0 评论 -
算法笔记 分数矩阵
题目我们定义如下矩阵:1/1 1/2 1/31/2 1/1 1/21/3 1/2 1/1矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。请求出这个矩阵的总和。Input输入包含多组测试数据。每行给定整数N(N<50000),表示矩阵为N*N。当N=0时,输入结束。Output输出答案,结果保留2位小数。思路1.Time Limit Exceed 50计算每次矩阵的数,并且打表通过n-1的矩阵值推导求出n的矩阵值最后得到结果代码:#include &l原创 2020-09-20 11:15:35 · 616 阅读 · 0 评论 -
算法笔记 最小公倍数
思路每输入一个数时,和现有的最小公倍数一起求目前的最小公倍数输入的第一个数最小公倍数即为其本身最小公倍数=(a/最大公约数)*b注意不要使用a*b/最大公约数,避免溢出代码#include <stdio.h>#include <iostream>using namespace std;int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);原创 2020-09-20 10:36:02 · 410 阅读 · 0 评论 -
随机选择算法 求第K大的数
快排应用思路第K大的数,所以要使用从大到小来排的partition在findK中,先partition出一个结果,再比较K和该位置的相对大小(pos-left+1)来继续左分治/右分治在findK函数中K>M的情况,left需要变化,需要针对left当前递归所在位置来调整K的值,也就是让K-M=K-pos-1+left此时:相对于0的值:leftrightpos+1相对于现left的值K所以相对于新left=pos+1的值为left+K-pos-1代码#include原创 2020-09-13 20:12:53 · 466 阅读 · 0 评论 -
算法笔记 two pointers涉及算法----归并排序/快速排序
此两种排序的注意事项:都需要一个函数来使用two pointers从数组的两侧开始向内遍历都需要一个函数来表现排序顺序,比如先左后右,merge/partition到底要放在何处,需要写者的算法逻辑清晰merge是先排序,后归并quicksort是先分治,再排序quicksort不同于二分,二分需要遍历到left=right进行查找,而quicksort在left==right时及时跳出,将一开始存储的left处的数据进行回存,从而保证左侧数据均小于且右侧数据均大于现arr[left]归并排原创 2020-09-13 18:52:24 · 182 阅读 · 0 评论 -
PAT A1033:To Fill or Not to Fill 贪心算法
思路在输入数据后,无法保证是按照从杭州到终点的路途顺序输入的加油站,所以需要先对station进行sort。保证起始站有station,否则无法出发,输出"The maximum travel distance = 0.00"到达一个station时,向后遍历,有如下几种情况:找到一个比当前station1油价便宜的station2,直接从现station1加合适量的油到station2,注意⚠️,其中可能会产生剩油情况,将会在下一个tips说明。需加油量:station[next].Di-.原创 2020-09-11 17:14:15 · 291 阅读 · 0 评论 -
算法笔记 贪心算法 出租车费
题目要求思路先来分析三种情况n价格n<=4104<n<810+2*(n-4)n>=818+2.4*(n-8)其中,在n>=8的情况下,假如8<n<=12方法1:价格=18+2.4*(n-8) //更为合适方法2:价格=18+1012<n<=16方法1:价格=18+4*2.4+2.4*(n-12) 方法2:价格=18+10+2(n-12) //更为合适以此类推,对于n>=原创 2020-09-10 21:15:12 · 705 阅读 · 0 评论 -
算法笔记 贪心算法 看电视
题目描述题目分析:本题使用贪心算法,在得到时刻表之后先比较节目结束时间,再比较开始时间。如果先比较开始时间未达到贪心目的,因为开始时间早并不代表结束时间早,但结束时间早开始时间大概率会早。贪心算法代码#include <stdio.h>#include <algorithm>#include <iostream>using namespace std;struct TV{ int startime=0; int endtime=0;原创 2020-09-10 16:21:32 · 604 阅读 · 0 评论 -
算法笔记 八皇后问题
递归#include <stdio.h>#include <string.h>#include <cmath>#include <iostream>using namespace std;int tot;bool hashmap[10]={false};int pos[10]={0};int Queens[95][9];void generateQ(int index){ if(index==9){ to原创 2020-09-10 11:27:15 · 223 阅读 · 0 评论 -
Code Up 神奇的口袋
递归方法Accepted100 版本:使用数组存储数据,用hash代表是否已经使用#include <stdio.h>#include <string.h>int count=0;int hash[100]={0};int arr[30]={0};int n=0;void choose(int m,int total){ if(total==40){ count++; return; } for(int x=m;原创 2020-09-10 09:29:52 · 240 阅读 · 0 评论
分享