新算法
# new--algorithm--code
OPA_heiyaa
嗨嗨嗨
展开
-
模板--判断两条线段是否相交--计算几何
模板--判断两条线段是否相交--计算几何;两个结构体表示的是该条直线的A,B两个端点;const int maxa=1e2+10;const double pi=0.00000001;struct nodea{ int x,y;}a[maxa];struct nodeb{ int x,y;}b[maxa];bool check(nodea a,nodeb b,nodea c,nodeb d){ if(!(min(a.x,b.x)<=max(c.x,d.x) &原创 2020-05-18 10:29:28 · 1613 阅读 · 2 评论 -
模板--HihoCoder--1133--非有序数组的二分查找
题目链接:https://vjudge.net/problem/HihoCoder-1133/origin输入第1行:2个整数N,k。N表示数组长度,第2行:N个整数,表示a[1..N],保证不会出现重复的数,1≤a[i]≤2,000,000,000。输出第1行:一个整数t,表示t在数组中是第k小的数,若K不在数组中,输出-1。Sample Input10 41732 4176 2602 6176 1303 6207 3125 1 1011 6600Sample Output原创 2020-05-18 08:12:04 · 174 阅读 · 0 评论 -
模板--STL之nth_element()--取容器中的第n大值
头文件:#include<algorithm>作用:nth_element作用为求第n大的元素,并把它放在第n位置上,下标是从0開始计数的,也就是说求第0小的元素就是最小的数;如:a[start,end]元素区间。排序后a[n]就是数列中第n+1大的数(下标从0開始计数);注意:1.a[start,n),a[n,end]内的大小顺序还不一定;2.仅仅能确定a[n]是数列中第n+1大的数。当然a[start,n)中的数肯定不大于a[n,end]中的数;3.nth_element原创 2020-05-16 16:31:49 · 165 阅读 · 0 评论 -
模板--快速找数组中两数字--和为定值
解法一一个直接的解法就是穷举:从数组中任意取出两个数字,计算两者之和是否为给定的数字。显然其时间复杂度为N(N-1)/2即O(N^2)。这个算法很简单,写起来也很容易,但是效率不高。一般在程序设计里面,要尽可能降低算法的时间和空间复杂度,所以需要继续寻找效率更高的解法。解法二求两个数字之和,假设给定的和为Sum。一个变通的思路,就是对数组中的每个数字arr[i]都判别Sum-arr[i]是否在数组中,这样,就变通成为一个查找的算法。在一个无序数组中...原创 2020-05-16 10:37:01 · 332 阅读 · 0 评论 -
模板--Miller-Rabin素数测试算法
一.引用原因:在数据范围在LL类型之中,N_maxLL=1e18,即使在O(sqrt(n))的时间复杂度之内也不能够满足要求,这时候我们可以对其进行Miller-Rabin 素数测试,可以大概率测出其是否为素数,大部分情况下是正确的;二.理论基础:(1)费马小定理:当为质数,有,不过反过来不一定成立,也就是说,如果,互质,且,不能推出是质数;(2)二次探测:如...原创 2020-05-05 10:38:03 · 299 阅读 · 0 评论 -
LibreOJ--143--miller-rabin质数测试
判定输入的数是不是质数。Input若干行,一行一个数xx。行数不超过105105。Output对于输入的每一行,如果xx是质数输出一行YY,否则输出一行NN。样例输入1269666623333样例输出NYNNY思路:模板:https://blog.csdn.net/queque_heiya/article/details/105928...原创 2020-05-05 10:52:03 · 289 阅读 · 0 评论 -
HihoCoder--1287--Miller-Rabin质数测试
题目不再多叙述:Miller-Rabin质数测试;思路:https://blog.csdn.net/queque_heiya/article/details/105928679https://blog.csdn.net/queque_heiya/article/details/105929064代码如下:#include<iostream>#include<c...原创 2020-05-05 10:47:07 · 181 阅读 · 0 评论 -
程序设计技巧--快读--read();
读取速度:cin<scanf<<read;void read(int &x){ x=0;bool f=0; char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=1;ch=getchar();} while(isdigit(ch)) {x=x*10+ch-'0';ch=getcha...原创 2020-05-01 16:52:49 · 787 阅读 · 0 评论 -
HDU--1878--欧拉回路--并查集
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。Output...原创 2020-04-27 09:23:04 · 177 阅读 · 0 评论 -
并查集--判断图的连通性--模板
并查集--判断图的连通性;1.图连通,其连通分量一定不大于1;2.并查集模板;int n,m;int father[N];int Find(int x){ if(father[x]==-1) return x; return father[x]=Find(father[x]);}void Union(int x,int y){ x=Fi...原创 2020-04-27 09:20:06 · 235 阅读 · 0 评论 -
HDU--1237--表达式求值--栈的运用--掌握模板
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。思路:代码参考:https://blog.csdn.ne...原创 2020-04-26 16:14:04 · 166 阅读 · 0 评论 -
二维迷宫--双模板--bfs
直接附上代码,具体题目需要直接改编才能达到目的:注意使用条件:模板假定起点一定可以移动到终点,其他情况需要根据题目改编扩展;#include<queue>#include<iostream>using namespace std;#include<algorithm> const int INF=1e9;const int MAX=1000+...原创 2020-01-26 12:46:07 · 297 阅读 · 0 评论 -
HDU--1240--Asteroids--三维迷宫模板题
题目描述:https://vjudge.net/problem/HDU-1240/origin;思路:bfs()模板题目;#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring> #include<q...原创 2020-04-26 13:05:45 · 203 阅读 · 1 评论 -
小数转换为二进制--代码
问题:输入小数,即输入的小数小于1,转化为二进制代码输出;实例1:输入:0.8125输出:0.1101实例2:输入:0.625输出:0.101实例3:输入:0.8输出:0.1100110011001100110011001100110011001100110011001101图片来源:https://blog.csdn.net/defineYouMyHea...原创 2020-04-23 16:13:45 · 2426 阅读 · 1 评论 -
字符串的排序问题--长度+字典序
问题:对字符串排序,先保证长度,然后在长度相同的情况下保证字典序最小;#include<cstdio>#include<cstring>#include<iostream>using namespace std;char a[][5]={"12","13","123","1234","21","34"};int n=6;void len_sor...原创 2020-04-03 10:45:56 · 987 阅读 · 0 评论 -
计蒜客--T1142--魔方矩阵的生成--思维
幻方是一个很神奇的N×N矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。我们可以通过以下方法构建一个幻方。(阶数为奇数) 第一个数字写在第一行的中间 下一个数字,都写在上一个数字的右上方: 如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列 如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行 如果该数字在右上角,或者该数字的右上...原创 2020-03-13 14:36:49 · 723 阅读 · 0 评论 -
HDU--1054--二分图--树状dp
Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solution fast enough and then he is very sad. Now he has the following problem. He must defend a medieva...原创 2020-02-24 15:20:00 · 148 阅读 · 0 评论 -
UVA--1339--字母映射
题目描述:给定两个长度一样且不超过100的字符串,判断是否能把其中一个字符串的各个字母重排,之后对26个字母做一个一一映射,使得两个字符串相同例如,JWPUDJSTVP重排后可以得到WJDUPSJPVT,之后把每个字母映射到它的前面一个字母,得到VICTORIOUS,输入两个字符串,输出YES或者NO思路:因为字母可以重排,每个字母的位置并不重要,重要的是每个字母出现的次数①统计两个字符串每...原创 2020-02-23 09:47:40 · 384 阅读 · 0 评论