随笔分类 - 算法
AcWing 1902. 马拉松
摘要:题目链接 每次路程改变只对前后两点间距离有影响,因此每次都判断当前三个点之间的距离之和与去掉中间点的距离哪个更优即可,最后取最大值作为结果输出。 #include<iostream> #include<cmath> using namespace std; const int N = 100010;
KMP算法的研究
摘要:前脚学后脚忘,是时候给自己通俗易懂的总结一下了 KMP是什么 在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个字符串S内查找一个词W的出现位置。一个词在不匹配时本身就包含足够的信息来确定下一个匹配可能的开始位置,此算法利用这一特性以避免重新检查先前配对的
AcWing刷题记录 - 2022
摘要:AcWing 1813. 方块游戏 思路 枚举,题目说明不管哪一面向上都可以,所以就两面加起来取各个字母的最大值,最后N对字母的最大值相加就是答案 代码 #include<bits/stdc++.h> using namespace std; int main() { int n; vector<i
算法学习刷题记录-210717
摘要:3768. 字符串删减 - AcWing题库 思路 双指针的练习 C++代码 #include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { int n; string s;
ACM-NEFUOJ-最小树-Prim算法
摘要:最小树1 Description 某省长调查交通情况,发现本省交通事故发生不断,于是决定在本省内全部修建地铁。 该省长得到的统计表中列出了任意两市之间的距离,为了确保任何两个市都可以直接 或者间接实现地铁交通,并要求铺设的地铁总长度最小,请计算最小的地铁总长度。 Input 测试输入包含若干测试用例
ACM-NEFU-2020大一寒假培训三(暴力)
摘要:A.二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。 Input 输入包括n组测试数据。每组数据包括一行
ACM-NEFU新生训练2-排序和CMP
摘要:A.谁考了第k名-排序 Description 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。 Input 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。 其后有n行数据,每行包括一个学号(整数)和一个成绩
ACM-DP-数塔问题
摘要:Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表示测试实例的个数,
ACM-NEFUOJ-P239回文数
摘要:#include<bits/stdc++.h> using namespace std; int n,p[1000],len,p1[1000]; int f() { int i; for(i=0;i<=len;i++) if(p[i]!=p[len-i]) return 0; return 1; }
ACM-NEFUOJ-P210畅通工程并查集
摘要:题目:我已经明示到这个程度了你还不用并查集? #include<bits/stdc++.h> using namespace std; const int MAXN=1010; int F[MAXN]; int GetFather(int x) { return F[x]==x?x:F[x]=Get
ACM-NEFUOJ-P209湖南修路
摘要:思路 prim的最小生成树,套上肝就完事了 代码 #include<iostream> #include<cstdio> #include<string.h> #define MAX 999999; using namespace std; int map[105][105],dist[105];
ACM-NEFUOJ-汉诺塔问题
摘要:P200汉诺塔 #include<bits/stdc++.h> using namespace std; int main() { int n,i; long long s[40]; s[1]=2; for(i=2;i<=35;i++) s[i]=3*s[i-1]+2; while(cin>>n)
CTF-RE-学习记录-汇编
摘要:八进制运算 加法表 1+1=2 1+2=3 2+2=4 1+3=4 2+3=5 3+3=6 1+4=5 2+4=6 3+4=7 4+4=10 1+5=6 2+5=7 3+5=8 4+5=11 5+5=12 1+6=7 2+6=10 3+6=11 4+6=12 5+6=13 6+6=14 1+7=10
ACM-NEFU15届校赛-大二组
摘要:A.小林找工作 #include<bits/stdc++.h> using namespace std; const int MAXN=1e5+10; int p[MAXN]; int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { scan
ACM-NEFU15届校赛-大一组
摘要:A. 三角形面积 #include <bits/stdc++.h> using namespace std; int main() { double a,b,c; double ans,p,tmp; cin>>a>>b>>c; p=(a+b+c)*0.5; tmp=p*(p-a)*(p-b)*(p-
ACM-刷题记录-14届NEFU校赛
摘要:P2031凯撒密码 #include<bits/stdc++.h> using namespace std; int main(){ string s; int d; while(cin>>s) { cin>>d; int len=s.length(); for(int i=0;i<len;i++)
ACM-学习记录-尺取法
摘要:题目 给定一个数组和一个数s,在这个数组中找一个区间,使得这个区间之和等于s。 例如:给定的数组int x[14] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};和一个s = 15。那么,可以找到的区间就应该有0到4, 3到5, 6到7.(注意这
ACM-位运算符-判断奇偶
摘要:同样一个问题,位运算可以提高程序的运行效率。 下面讲一下关于奇偶性的判断。 常规方法 public static boolean isOdd(int i){ return i % 2 != 0; } 位运算方法 public static boolean isOdd(int i){ retu
位运算-1
摘要:问题 DPL_3_A: Largest Square #include<iostream> #include<algorithm> #include<cstdio> using namespace std; #define MAX 1400 int dp[MAX][MAX], G[MAX][MAX]
ACM-学习记录-DP-1
摘要:DPL_1_A: Coin Changing Problem 每次均有两种选择,即选择当前的,即为在当前状态+1,否则维持原来的T[j+d[i]] #include<iostream> #include<cstdlib> #include<cstring> using namespace std;