
算法小记
KaiDu Shinichi
Do what you say,say what you do.
展开
-
【PAT题解】L1 出租
原题链接:https://pintia.cn/problemsets/994805046380707840/problems/994805107638517760一道逻辑思考题数组s[ ]储存输入的号码,v[ ] 储存号码数字出现的次数(下标表示号码),arr[ ] 依次储存号码中出现的数字(无重复),index[ ] 储存s[ i ] 在arr[ ] 的位置#includ...原创 2019-03-31 12:08:42 · 167 阅读 · 0 评论 -
【PAT题解】L1-025 正整数A+B (15 分)
原题链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805110318678016一开始没有认真审题分析,加上对C的函数使用不熟悉,导致解不出来。参考柳大大的代码并且分析学习一下...难点:A可能是空格、0、负数、乱码;B除了不能为空字符串其他一样。输入时用getline接受所有字符串,根据第一个空格为A...原创 2019-03-26 23:00:03 · 1005 阅读 · 0 评论 -
【PAT团体天梯赛】 L1-059 敲笨钟 (20 分)
L1-059 敲笨钟 (20 分)原题链接:https://pintia.cn/problem-sets/994805046380707840/problems/1111914599412858880赛场上脑子抽了,看成输出格式要全部行数输入完再输出,导致逻辑混乱 [○・`Д´・ ○]重新按自己的逻辑做了...原创 2019-03-31 22:05:45 · 813 阅读 · 0 评论 -
【PAT团体天梯赛】 L1-058 6翻了(15分)
L1-0586翻了(15分)原文链接:https://pintia.cn/problem-sets/994805046380707840/problems/1111914599408664577一开始就想到了字符数组,但是做到最后发现自己对string类函数的处理不清楚,所以换了一种方法:将输入数据放入字...原创 2019-03-31 19:56:54 · 794 阅读 · 0 评论 -
【0-1背包】入门理解
分析01背包:01背包(ZeroOnePack): 有N件物品和一个容量为V的背包。(每种物品均只有一件)第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。特点:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i...原创 2018-08-02 11:05:27 · 215 阅读 · 0 评论 -
【线段树】Just a Hook
来自大牛的分析:https://www.xuebuyuan.com/2967012.html推荐:https://www.cnblogs.com/TenosDoIt/p/3453089.html#chttps://www.cnblogs.com/TheRoadToTheGold/p/6254255.html区间更新,总区间求和 分析:看到题目首先想到了线段树,(因为题...原创 2018-08-01 19:49:00 · 218 阅读 · 0 评论 -
【线段树】Color the ball ---经典题,还可用树状数组。。。
#include <stdio.h>using namespace std;#define maxn 100010int n,a,b;struct node{ int l,r,s;}ac[maxn*3+5];//建树 void build(int k,int l,int r){ ac[k].l=l; ac[k].r=r; ac[k].s=0;//根节点(编...原创 2018-08-01 10:36:23 · 248 阅读 · 0 评论 -
【链表】入门一步一步......了解
#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ int a;//数据域 struct node *y;//指针域 };typedef struct node x;// typedef 只是给数据类型取个别名//创建节点函数 x *list_cre...原创 2018-07-30 16:16:44 · 232 阅读 · 0 评论 -
【dfs】N皇后---论超时的“坑爹”性
看着百度的代码超时n遍。。。。最后发现必须打一个表才AC! DFS版AC代码#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;int aw[20];//aw[i]=j表示 第i行第j列下有棋int ac[11];//结果存到表中,不存...原创 2018-07-30 12:03:28 · 739 阅读 · 1 评论 -
【DFS】Tempter of the Bone----入门dfs,“一条路走到黑”和回溯思想
/*DFS思想:利用深度优先搜索,将每一个点的状态抽象出来,一个三元组(x,y,t);x,y代表坐标,t表示从起点到这一坐标的时间,那么这就是一个状态,深度搜索的任务就是对状态的扩展,观察并判断是否到达目标状态;见如下代码,注释地方都有,同时支持多组测试数据;*/#include <cstdio>#include <cstring>using namesp...原创 2018-07-29 10:23:12 · 161 阅读 · 0 评论 -
【线段树】敌兵布阵-------实例入门理解
更新节点,区间求和#include<cstdio>#include <stdio.h>using namespace std;int sum;int ac[50010];struct node{ int l,r,w;//区间左,右,区间和}t[140000];/*建树思路:a、对于二分到的每一个结点,给它的左右端点确定范围。 ...原创 2018-07-28 20:56:52 · 2656 阅读 · 1 评论 -
【二分匹配】Air Raid
题意:城镇里的街道从一个交叉口连接到另一个交叉口,街道都是单向的,并且从一个交叉口沿着街道出发不会回到相同的交叉口。伞兵降临在城镇的一个交叉口并可以沿着街道走向另一个没有被其他伞兵走过的交叉口问城镇中的所有交叉口都被伞兵走过的情况下至少需要多少名伞兵。要求:输入一个数字T,表示T组数据,然后每组数据前两行分别为一个数字n,m,n代表n个顶点,m表示m条边,求出在连通情况下的最少路径覆盖...原创 2018-07-27 10:51:44 · 236 阅读 · 0 评论 -
【二分匹配】Machine Schedule---二分匹配,题目难懂
B - Machine ScheduleAs we all know, machine scheduling is a very classical problem in computer science and has been studied for a very long history. Scheduling problems differ widely in the nature o...原创 2018-07-26 20:59:40 · 325 阅读 · 0 评论 -
【二分匹配】入门理解----Girls and Boys
二分匹配模板理解基本思想:没有机会,就创造机会嘛二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。简单的说,一个图被分成了两部分,相同的部分没有边,那这个图就是二分图,二分图...原创 2018-07-26 19:40:05 · 379 阅读 · 0 评论 -
【生成函数】浅析入门
根据博客补充理解,小白一只https://blog.youkuaiyun.com/howardemily/article/details/75041523思想1.“把组合问题的加法法则和幂级数的乘幂对应起来”2.“母函数的思想很简单 —就是把离散数列和幂级数一一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造. “#include<...原创 2018-07-26 10:55:33 · 164 阅读 · 0 评论 -
【最小生成树】Building a Space Station --Kruskal算法+优先队列+并查集
#include<iostream>#include<queue>#include<cstdio>#include<cstring>#include<cmath>using namespace std;#define maxn 1005//边的两点和其距离struct node{ int u,v; doub...原创 2018-07-25 19:18:34 · 323 阅读 · 0 评论 -
【最小生成树】畅通工程--Kruskal算法
//最小生成树,kruskal算法//基础入门#include<algorithm>#include <cstdio>#include <cstring>using namespace std;#define maxn 105struct Edge{//结构体表示边,其中包括两个点和权重 int x,y,w; const bool ...原创 2018-07-25 10:43:33 · 211 阅读 · 0 评论 -
【并查集】小希的迷宫--判断成环
//并查集判断是否成环//记录有几个老大(几个集合),不成环是1#include<stdio.h>#include<iostream>#include<string.h>#define maxn 100005using namespace std;int ac[maxn];int vis[maxn];//出现的点做标记int k;int...原创 2018-07-24 14:37:08 · 308 阅读 · 0 评论 -
【拓扑排序】逃生---反向拓扑+优先队列
Problem Description糟糕的事情发生啦,现在大家都忙着逃命。但是逃命的通道很窄,大家只能排成一行。现在有n个人,从1标号到n。同时有一些奇怪的约束条件,每个都形如:a必须在b之前。同时,社会是不平等的,这些人有的穷有的富。1号最富,2号第二富,以此类推。有钱人就贿赂负责人,所以他们有一些好处。负责人现在可以安排大家排队的顺序,由于收了好处,所以他要让1号尽量靠前,如果此时...翻译 2018-07-24 10:56:11 · 221 阅读 · 0 评论 -
【拓扑排序】产生冠军---思路:仅仅有一个人没输就是冠军
#include<stdio.h>#include<string>#include<set>#include<algorithm>using namespace std;int n;//所有人放入st容器中,分为两类:一类赢了(N局),一类输过//只用die[]数组记录输了的人//仅仅有一个人赢,在集合中就是冠军//用set容器存入不...原创 2018-07-23 14:10:00 · 175 阅读 · 0 评论 -
【2019校内选拔赛】题解报告,5.20更新中...
A.签到题Time Limit: 1sMemory Limit: 32768KProblem Description作为签到题当然是很水的啦。你只要输出n!可以被多少个2整除就可以了。Input多组数据,每组数据输入一个n(1 <= n <= 10^18)Output每组数据输出一行,输出n!可以被多少个2整除。作为签到题,这应该是我遇到最坑的了...原创 2019-05-20 10:17:22 · 379 阅读 · 0 评论 -
【并查集】 HDU1232 畅通工程
Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路...原创 2018-07-21 14:07:47 · 143 阅读 · 0 评论 -
【JAVA】浅析---辗转相除法
//辗转相除法求最大公因数和最小公倍数import java.util.*;publicclass Demo1{ publicstaticvoid main(String[]args) { Scanner sc = new Scanner(System.in); int a =sc.nextInt(); int b =sc.nextInt(); Sy...原创 2018-07-15 21:27:50 · 948 阅读 · 0 评论 -
【算法小记】优先队列(堆)
“优先队列” (Priority Queue)是特殊的“队列”,从队列中取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。采用完全二叉树表示优先队列堆的特性:结构性:用数组表示的完全二叉树;有序性:根结点到任一结点的关键字序列保持非递增(称“最大堆(MaxHeap)”,也称“大顶堆” )或者非递减(称“最小堆(MinHeap)”,也称“...原创 2019-04-15 11:18:41 · 1065 阅读 · 0 评论 -
【算法小记】DP之图像压缩
问题描述:图片在计算机存储的是图片中的像素序列{p1,p2,p3......pn},也就是像素的灰度值(pi)。灰度值的范围是0~255。因此需要8位二进制表示一个像素。能否用更少的位数表示灰度值呢?即是图像压缩的问题。问题分析:可要求像素序列进行分段,使得最后所需要的位数最少(储存空间)。引入两个固定位数的值来表示:1. 3位数表示当前段的每位像素的位数(000----表示像...原创 2019-03-27 17:17:21 · 2173 阅读 · 0 评论 -
【算法小记】DP 之 0-1背包问题
0-1背包(ZeroOnePack): 有N件物品和一个容量为C的背包。(每种物品均只有一件)第i件物品的重量是W[i],价值是V[i]。求解将哪些物品装入背包可使价值总和最大。特点:每种物品仅有一件,可以选择放或不放。物品重量总和小于或等于背包容量。*一开始,可以使用暴力方法,遍历所有可能性,再选出符合条件的可能,然后比较找出价值最大的。运用DP思想解决子问题设m[ i ]...原创 2019-03-31 18:43:45 · 434 阅读 · 0 评论 -
【从C语言到c++】菜鸟笨飞:持续学习更新中...
1.字符串区别 C语言C中没有字符串,而是使用字符数组保存字符串。C中的字符串是一个以null(‘\0’)字符结尾的字符数组;//字符串的初始化,定义时可以使用‘=’;以后不能用‘=’赋值char a[11] = "Cyuyan";//字符串的赋值,通过"string"文件定义的字符串处理函数strcpy(a,"python")//获取字符串的长度,...原创 2019-03-19 18:35:29 · 323 阅读 · 1 评论