随笔分类 - algorithm
摘要:public class Main{ static int N=999999; public static void main(String[] args) { InputReader in=new InputReader(System.in); int[] time=new int[N]; int
阅读全文
摘要:1.根据前序创建二叉树 2.线索化 3.中序遍历 import java.util.Scanner; enum PointterTag{ Link,Thread; } class BiThrNode{ char data; BiThrNode lchild,rchild; PointterTag L
阅读全文
摘要:问题:求一个二叉树,x节点到y节点的距离 算法:找到xy最近的父节点,res=cent[x]+cent[y]-2*cent[lcm(x,y)] class Node{ int l; int r; int cent; int father; } static int lcm(int u,int v)
阅读全文
摘要:void topsort() { int i,j,len,cnt; Stack<Integer> s=new Stack<Integer>(); int[] indegree=new int[100]; int[] res=new int[100]; for(i=0;i<n;i++) for(j=0
阅读全文
摘要:1.FLOYD import java.util.Scanner; class G{ int n; int[][] g=new int[100][100]; void FLOYD(G g) { int i,j,k; for(k=0;k<g.n;k++) { for(i=0;i<g.n;i++) {
阅读全文
摘要:问题:给定一个字符串bacbababadababacambabacaddababacasdsd求出第一次出现子串ababaca的坐标(从0开始) ans=10; 算法:1.求一个next[i]数组,这个数组表示前缀和后缀相等的最大值。 2.扫描字符串,如果ij相等后加加,不相等j退回到next[j]
阅读全文
摘要:问题:字典序用于求出一个数列的全排列,比如123,132,213,231,312,321,大小刚刚是按着字典序大小。 算法: 1.从后先前找出一个前小后大的a[i-1]<a[i] 2.从后到i早到第一个大于a[i-1]的记为a[j],交换a[j]和a[i-1] 3.从i到最后的数逆置 注:写法是模仿
阅读全文
摘要:应用场景:一般是求二元一次方程的解ax+by=c像这样的,然后她的标准板子是ax-ny=b然后用扩展欧几里得去解一组xy的解(具体的数学道理我不懂,就直接上代码); 题目中一般是 a已知n已知b已知,求一组xy int extend_gcd(LL a,LL n,LL &x,LL &y){ if(n=
阅读全文
摘要:康托展开面对的两个问题: 1.在1234所有的全排列中求某一排列是第几个。 2.求第n个排列时怎么样的。 1.康托展开 其实想法很简单比如2 3 4 1,rank=0; i=0时是a[i]=2,后面小的数有1,如果1在第一位肯定是在这个序列前面,然后后面的3个数进行全排类3!,rank+=1*3!
阅读全文
摘要:关键路径 了解:关键路径中边表示活动,点表示事件。关键路径主要在求得两个问题1.完成这项工程至少需要多少时间 2.那些活动时关键的 1.求出所有事件的最早发送时间(ve[N]),最迟发生时间(vl[N]) 2.根据ve[]和vl[]求出活动的v[]和l[] 3.当某点v[i]=l[i]时就是关键活动
阅读全文
摘要:p[i][j]定义从i到j下一步要到的点,及子问题变成p[ p[i][j] ][j],迭代停止的地方p[i][j]=j; p[i][j]初始话=j;如果ij没有通路i!=j&&p[i][j]=j; void showpath(int p[][N],int i,int j){ if(i!=j&&p[i
阅读全文
摘要:数据结构 struct arr{ int len; int a[N];//下标小的是低位,下标大的是高位 arr(){ int i; for(i=0;i<len;i++)a[i]=0; } }; 对于输入的字符串我们要进行处理,变成一个标准的arr数据结构 arr transform(string
阅读全文
摘要:1.单点跟新单点查询 就是数组模式 2.单点更新区间查询 https://vjudge.net/problem/HDU-1166 维护一个数组c[],c[i]表示前i进制位的和,所以更新的时候要将i以上的2进制倍数都更新; #include<stdio.h> #include<string.h> #
阅读全文
摘要:打水问题描述如下:N个人要打水,有M个水龙头,第i个人打水所需时间为Ti,请安排一个合理的方案使得所有人的等待时间之和尽量小。 案例: n=7 m=3 time[7]={3,6,1,4,2,5,7} 一种最佳打水方案是,将N个人按照Ti从小到大的顺序依次分配到M个龙头打水。例如样例中,Ti从小到大排
阅读全文
摘要:介绍next_permutation()是stl算法库中的方法,主要实现的是用字典序的方法求全排,具体算法后面补写。 下面是几个它的应用场景: 1.凑算式 A-G为1-9中各不相同的数,求有多少组合满足上式。 #include<stdio.h> #include<algorithm> #includ
阅读全文
摘要:1.构造总节点2*n-1 2.从中选择最少的两个 3.从后向前编码 void select(HTnode *HT,int n,int *s1,int *s2){ int i,min; min=INF; for(i=1;i<n;i++)if(HT[i].weight<min&&HT[i].parent
阅读全文
摘要:1.冒泡排序 大部分人的第一个排序,想想以前我上c的时候,觉得一个冒泡排序难的和鬼一样,现在。。。 思想:每一趟将最大的固定在最后面; void bubble_sort(int a[],int n){ int i,j; for(i=0;i<n-1;i++){//只有一个的时候不用比较所以<n-1 f
阅读全文
摘要:https://www.dotcpp.com/oj/problem1655.html 写一道水题 这个题主要是练习循环定义的 1.变量的含义 a[N]表示当前小朋友状态,0存在 ,1不存在 num当前的数 i当前的小朋友序号 count当前出列的个数(退出循环的条件) 2.循环的含义 如果此状态位是
阅读全文
摘要:闲来无事码码这个题,练习一下逻辑语句的写法,加油加油,周六蓝桥杯加油! 大概简述一下我的思路: 1.暴力出所有选项的组合 2.看某种组合是否满足所有的条件 ans:BCACACDABA #include<iostream> #include<algorithm> #include<string.h>
阅读全文

浙公网安备 33010602011771号