- 博客(49)
- 收藏
- 关注
原创 并查集
#include<iostream>using namespace std;int f[1000]={0};int n,m ,k,sum=0;void init(){ for(int i=1;i<=n;i++) { f[i]=i; } return;}int getf(int v){ if(f[v]==v) return v; else {...
2020-04-16 10:40:27 136
原创 大数高精度(四则运算)
加法#include <cstdio>#include<iostream>#include <cstring>using namespace std;int main(){ char a[202]={0}, b[202]={0}; scanf("%s%s", a, b); int alen = strlen(a); int blen = st...
2019-08-24 08:59:20 308
原创 求最长上升子序列(二分)
upper_bound 和 lower_bound 的讲解#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespac...
2019-08-21 19:32:15 198
原创 八皇后(深搜)
//其中 a数组表示的是行;b数组表示的是列;c表示的是左下到右上的对角线;d表示的是左上到右下的对角线;//因为对于一个对角线来说 其中的点的i和j是有确定的关系的 所以不必挨个遍历去寻找对角线上有没有其他的皇后 直接把判断的复杂度降低到了O(1)!!#include<iostream>#include<cstdlib>#include<cstdio&g...
2019-08-21 19:26:07 239
原创 单词方阵(从八个不同方向进行深搜)
题目描述给一n \times nn×n的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着88个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用*代替,以突出显示单词。例如:输入: 8 输出: qyizhong ...
2019-08-21 19:23:05 565
原创 lower_bound 和 upper_bound的用法
lower_bound 和 upper_bound 的用法(利用二分查找的方法在一个排好序的数组中进行查找的)在从小到大的排序数组中lower_bound(begin,end,val) 在begin和end中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置upper_bound(begin,end,val) 在begin和end...
2019-08-21 11:09:48 307
原创 背包模板(01 + 多重 + 混合)
01背包需要注意的是 j 的循环为从大到小#include<iostream>using namespace std;const int N=10010;int f[N];int v[N],w[N];int main(){ int n,V; cin>>n>>V; for(int i=0;i<n;i++) {...
2019-08-19 19:57:09 167
原创 背包 习题HDU
01背包HDU 2602#include<iostream>#include<cstring>using namespace std;const int N=1010;int f[N];int val[N],vol[N];int main(){ int T; cin>>T; while(T--) { int n,V; ...
2019-08-19 19:41:44 224
原创 HDU 1028 &&HDU 1521(母函数)
母函数讲解:https://blog.csdn.net/ftx456789/article/details/79084138母函数核心代码:for(int i=0;i<n;i++){ for(int j=0;j<=n;j++) for(int k=0;k<=n;k+=i) c2[j+k]+=c1[j] ...
2019-08-14 16:28:50 146
原创 HDU 1166 && HDU 1541(树状数组)
树状数组简单讲解:其中A为普通数组,C为树状数组(C在物理空间上和A一样都是连续存储的)。树状数组的第4个元素C4的父结点为C8 (4的二进制表示为"100",所以k=2,那么4 + 2^2 = 8),C6和C7同理。C2和C3的父结点为C4,同样也是可以用上面的关系得出的,那么从定义出发,奇数下标一定是叶子结点。我们定义Ci的值为它的所有子结点的值 和 Ai 的总和,之前提到当i为奇数时C...
2019-08-14 10:23:47 122
原创 HDU 1026 Ignatius and the Princess I(广搜+优先队列+保存路径)
注意:深搜超时思路:使用广搜和优先队列。首先初始化数组,将不能到达的地方(即X)置为-1;将怪兽所在的地方转换成数字,将“ .”置为0;在广搜的时候如果已经访问过将其置为-1,不能再次访问。广搜找到合适路径,并保存路径#include"stdio.h"#include"string.h"#include"queue"using namespace std; struct node{...
2019-08-10 18:25:08 136
原创 HDU 1019 Least Common Multiple(求多个数的最小公倍数)
思路:按照求两个数的最小公倍数思想,边输入边计算。利用公式 两个数的最小公倍数=两个数的乘积 / 两个数的最大公因数(在本题中先除再乘,防止数据溢出);求最大公因数采用辗转相除法。#include<iostream>using namespace std;//求最大公约数 int gcd(int a,int b){ if(b==0)return a; else { ...
2019-08-10 14:45:41 197
原创 HDU1014 Uniform Generator(两个数互质)
我的方法:#include<iostream>#include<stdio.h>#include<algorithm>using namespace std;int main(){ int step,mod; int s[100001]; int i; while(cin>>step>>mod) { bool f...
2019-08-09 17:20:51 176
原创 HDU 1016 Prime Ring Problem(DFS+打印素数表)
#include<iostream>using namespace std;int isprime[50]={0};int a[20],book[20];int n;void get_prime(){ int i,j; for(i=2;i<8;i++) // if(!isprime[i]) for(j=i*i;j<45;j+=i) ...
2019-08-09 11:30:27 122
原创 HDU1005 Number Sequence
#include<iostream>using namespace std;int main(){ int f[51]={49,1,1}; int a,b,n,i; while( cin>>a>>b>>n,a+b+n){ for(int i=3;i<=50;i++) f[i]=...
2019-08-09 11:04:54 111
原创 HDU 1013 Digital Roots(字符串转数字)
#include<iostream>#include<cstring>#include<stdio.h>using namespace std;int main(){ char a[100]={'0'}; while(1) { int sum=0; scanf("%s",a); i...
2019-08-09 10:44:28 165
原创 HDU 1002(大数相加)
#include<iostream>#include<cstring>#include<stdio.h> using namespace std;int main(){ int n; int flag=1; cin>>n; while(n--) { char a[8000],b[800...
2019-08-09 10:35:21 171
原创 HDU 1008 Elevator
#include<iostream>using namespace std;int main(){ int a[101]; int n; while(cin>>n,n) { int time=0; if(n==0)return 0; a[0]=0; for(int i=1;...
2019-08-09 10:22:05 123
原创 HDU1010 Tempter of the Bone(深搜+剪枝)
#includeusing namespace std;char a[8][8];int book[8][8];int b[2][2];int t;int n,m;int p,q,p1,q1;void dfs(int x,int y,int step){int tx,ty;int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};cout<...
2019-08-09 10:14:47 159
原创 水管工游戏(深搜)
#include<iostream>using namespace std;int a[51][51],book[51][51];int n,m,top;int flag=0;struct node{ int x; int y;};node s[100];void dfs(int x,int y,int front){ //y==m+1是因为水管要通过才可以 ...
2019-08-05 19:47:14 260
原创 Floyd算法
上图中有 4 个城市 8 条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。当任意两点之间不允许经过第三个点时,这些城市之间最短路程就是初始路程,如下。在只允许经过 1 号顶点的情况下,任意两点之间的最短路程更新为:在只允许经过 1 和 2 号顶点的情况下,任意两点之间的最短路程更新为:同理,...
2019-08-05 19:31:59 168
原创 堆排序
#include<iostream>using namespace std;int n;int h[101];//建立最小堆 void siftdown(int i){ int t; //存储较小的结点的编号 int flag=0; //标记是否需要调整顺序 //判断是否存在左孩子以及是否需要调整 while(i*2<=n && fl...
2019-08-05 19:07:54 196
原创 Bellman-Floyd队列优化
#include<iostream>using namespace std;int main(){ int u[8],v[8],w[8]; int first[6],next[8]; int dis[6],book[6]; int que[101]={0}; int head=1,tail=1; int n,m; cin>>n>>m; f...
2019-08-05 18:48:47 228
原创 Bellman-Floyd
Bellman-Ford算法 #include<iostream>using namespace std;int main(){ int u[50],v[50],w[50]; int dis[50],book[50]; int n,m; //n为顶点数,m为边数 cin>>n>>m; for(int i=1;i<=m;i++) {...
2019-08-05 18:28:26 281
原创 Dijkstra算法--单源最短路径
//Dijkstra算法--单源最短路径 #include<iostream>using namespace std;int main(){ int n , m; int a,b,c,u; int e[51][51],book[51]; int dis[50]; cin>>n>>m; for(int i=1;i<=n;i++) { ...
2019-08-05 18:13:32 213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人