算法
算法刷题
netlogs
初心易得,始终难守
展开
-
KMP
kmp第一次发blog嘿嘿嘿肯定得弄点不一样的 学kmp…发现看不懂别人的code 这就很尴尬 那怎么办呢 我自己写一个不就好了哈哈哈哈哈哈void getnt(){ int i = 1, j = 0; nt[0] = 0; while(i < m) { if(arr2[i]==arr2[j]) { ...原创 2018-04-13 10:30:12 · 184 阅读 · 0 评论 -
poj-3279 Fliptile
题目地址https://vjudge.net/problem/POJ-3279 思路来源https://blog.csdn.net/to_be_better/article/details/49901079题目大意给你一个n*m的矩阵,由0和1组成,你可以翻转其中任意一块,当你翻转时 它周围的与他有一条边相连的也会被翻转, 问: 怎么翻转才能使全部方块为0 输出翻转次数最小的方法...转载 2018-05-12 11:33:19 · 425 阅读 · 0 评论 -
关于我从来都学不会的dfs
八皇后题目链接在这https://www.luogu.org/problemnew/show/P1219思路//看的别人的就是深搜,然后每次递归的是行//列也行 判断是不是符合条件符合递归 就酱好简单可我还是不会#include<iostream>#include<cstdio>#include<algorithm>原创 2018-07-30 16:28:30 · 366 阅读 · 4 评论 -
分治算法 / 归并排序
归并排序归并排序是采用的分治法的一个非常典型的应用,将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。既然是排序,通俗来讲就是把数字序列变为有序状态,但是传统的排序方式,像冒泡排序啊,插入排序啊什么的,耗时太高,即使是快速排序,最坏的情况时间复杂度也到了O(n^2),而归并排序,则比快排最好的情况O(n*log...原创 2018-08-02 21:46:12 · 343 阅读 · 0 评论 -
高精度乘法
本来不怎么会写,老师布置了一道求阶乘的作业,就实现了一波直接上代码:#include<iostream>#include<string>#include<cstring>int arr[100000];int qrr[100000];void fac(int n){ if(n < 0) { std:...原创 2018-09-09 18:51:41 · 169 阅读 · 0 评论 -
POJ-2387 Til the Cows Come Home
最短路问题题目大意: 有好多相通的路,路都有一定的长度,求1 到 n 的最短距离,单源最短路https://vjudge.net/problem/POJ-2387 链接dijkstra :思路就是贪心 从节点1 找 ,如果 节点i 到1 的距离 > 节点1到节点u + 节点u和节点i的距离 ,更新路径权值,这个算法只能计算单元最短路,而且不能计算负权值, path数组储...原创 2018-09-12 20:56:01 · 132 阅读 · 0 评论 -
poj1062吐槽,代码没过,含一道题主自认错了的数据orz
昂贵的聘礼,题目链接昂贵的聘礼年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。“探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他...原创 2019-01-16 18:40:06 · 198 阅读 · 0 评论 -
最短路问题Bellman-Ford Dijkstra Floyd
最短路问题,Bellman-Ford单源最短路大概思路:起点s 到顶点i的最短距离为min(d[s, i], d[s, j] + d[j, i])s到i的距离即为,当前s到i的最短距离 和 s到j的距离+j到i的距离中的较小值struct edge //从顶点from指向to权值为cost的边{ int from, to, cost;}edge es[MAX]; //边...原创 2019-02-28 15:04:26 · 253 阅读 · 0 评论 -
优先队列
优先队列求最小值优先队列 priority_queue 实现可以取最小值#include &lt;iostream&gt;#include &lt;queue&gt;#include &lt;vector&gt;int main(){ std::priority_queue&lt;int,std::vector&lt;int&gt;, std::转载 2018-10-11 10:38:07 · 181 阅读 · 0 评论 -
poj-1753 枚举
Flip 枚举题目链接大概题意:给你一个4x4的棋盘,每个棋子都有黑白两面,问最少翻多少个棋子能让棋盘上全部是黑或者全部是白思路: 深搜枚举从第一个点开始开始,我每个棋子都选择翻转或者不翻转,把所有结果都尝试一遍代码:#include &amp;lt;iostream&amp;gt;#include &amp;lt;cmath&amp;gt;char mp[4][4]; //4x4的数组int skip =...原创 2019-01-12 16:51:08 · 298 阅读 · 0 评论 -
poj-3276 Face The Right Way白书
Face The Right Way题目大意:给你一个字符串,包含B,F,两种字母,然后每次可以连续翻转K个,问每次翻转几个,就是问一个值,可以翻转最少次数,使字符串全部变为F思路:刚开始,一看这么简单,遍历1-n的K,枚举不就行了,呵呵呵,md肯定TLE,每枚举一次,时间复杂度大概是O(2^n) n最大5000 2000ms大概是10的9次方,也就是2的32次方左右,肯定超时,如果是对于同...原创 2019-03-27 21:56:13 · 213 阅读 · 0 评论 -
poj-3295 Tautology
Tautology构造法。。虽然我也不知道什么叫构造法https://vjudge.net/problem/POJ-3295 题目链接题目大意:给定一个关系式,判断是否为重言式(永真式)给定数据由一个字符串组成,其中包括,K A N C E p q r s t其中K代表与运算 A代表或运算 N代表取反 C代表implies//Cab = (!a || b) E代表同或,...原创 2019-01-14 20:55:53 · 428 阅读 · 0 评论 -
poj 2236 Wireless Network
Wireless Network 并查集题目大意:有几个点,他们之间不超过一定距离的话,可以联通,然后有好多点,都是坏的,有两种行为一个是选择修复某一个点,另一个是测试两个点之间是否可以联通,如果可以联通的话,就输出SUCCESS 否则的话就输出FAIL其中,任意一个点都可以作为中转站解体思路:每修复一个点,就看下它与其他已经修复的点直接是否能联通,能得话就联通,然后构建一个树,判断...原创 2019-02-28 20:28:55 · 113 阅读 · 0 评论 -
二分查找
二分查找1.有序数组查找某个值,时间复杂度O(logn)2.假定一个解判断是否可行,例:poj-1064有N条绳子,长度分别是Li,如果从他们当中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长,答案保留到小数点后2位。input:N = 4K = 11L = {8.02, 7.43, 4.57,5.39}二分:条件:F(x) 可以得到K条,长度为x的绳子 ...原创 2019-03-14 20:13:35 · 206 阅读 · 0 评论