- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 前缀树 实现tire树 字典树的学习
复制代码段学习哦 代码很明了/*实现tire树 :①定义tire树结点 ②树初始化 ③插入单词函数 ④判断单词是否存在 ⑤判断单词前缀是否存在 */#include<iostream>using namespace std;//tire树_结点定义struct tirenode{ bool is_end =false; //判断是否是一个完整单词 tirenode *next[26];};//tire树_初始化 .
2022-03-05 17:10:40 185
原创 洛谷P1182数列分段
/*题目描述对于给定的一个长度为N的正整数数列 A_{1\sim N}A 1∼N ,现要将其分成 MM(M\leq NM≤N)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列 4\ 2\ 4\ 5\ 14 2 4 5 1 要分成 33 段。将其如下分段:[4\ 2][4\ 5][1][4 2][4 5][1]第一段和为 66,第 22 段和为 99,第 33 段和为 11,和最大值为 99。将其如下分段:[4][2\ 4][5\ 1][4][.
2022-02-24 18:32:38 181
原创 洛谷P3367并查集
//并查集一定要压缩路径! #include<iostream>using namespace std;int x[10005];int get_father(int t){ if(t==x[t]) return t; return x[t]=get_father(x[t]); //路径压缩!!!重点!!! }int main(){ int N,M,t0,t1,t2; cin>>N>>M; for(int i=0;i<N;i++) x[.
2022-02-12 21:55:55 363
原创 试题 历届真题 剪格子【第四届】【省赛】【A组】
如图所示,3 x 3 的格子中填写了一些整数。 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60。 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。 如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。 如果无法分割,则输出 0 程序输入输出格式要求: 程序先读入两个整数 m n 用空格分割 (m,n<10) 表示表格的宽度和高度 接下来是n行,每行m个正整数,用空格分
2022-02-12 18:02:39 344
原创 试题 历届真题 螺旋折线【第九届】【省赛】【B组】
如图所示的螺旋折线经过平面上所有整点恰好一次。对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。 例如dis(0, 1)=3, dis(-2, -1)=9 给出整点坐标(X, Y),你能计算出dis(X, Y)吗?输入格式 X和Y 对于40%的数据,-1000 <= X, Y <= 1000 对于70%的数据,-100000 <= X, Y <= 100000 对于100%的数据, -10...
2022-02-12 01:16:33 282
原创 试题 历届真题 解谜游戏【第十届】【决赛】【B组】
#include<iostream>#include<algorithm>#include<cstring>#include<bits/stdc++.h>using namespace std;string a,b,c;int aa[4][30];int p[105];int func() { for (int i = 0; i < 12; i++) { aa[i % 4][a[i] - 'A']++;...
2022-02-11 20:48:19 2773
原创 试题 算法提高 快乐司机
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 "嘟嘟嘟嘟嘟嘟 喇叭响 我是汽车小司机 我是小司机 我为祖国运输忙 运输忙" 这是儿歌“快乐的小司机”。话说现在当司机光有红心不行,还要多拉快跑。多拉不是超载,是要让所载货物价值最大,特别是在当前油价日新月异的时候。司机所拉货物为散货,如大米、面粉、沙石、泥土...... 现在知道了汽车核载重量为w,可供选择的物品的数量n。每个物品的重量为gi,价值为pi。求汽车可装载的最大价值。(n<10000,
2022-02-11 17:19:01 154
原创 STL解 试题 算法训练 Huffuman树
试题 算法训练 Huffuman树提交此题评测记录资源限制时间限制:1.0s 内存限制:512.0MB问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 给出一列数{pi}={p0,p1, …,pn-1},用这列数构造Huffman树的过程如下: 1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa+pb。 2. 重复步骤1...
2022-02-11 10:51:02 79
原创 数的划分法一dfs 法二dp
问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。输入格式 n,k输出格式 一个整数,即不同的分法样例输入7 3样例输出4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}数据规模和约定 6<n<=200,2<=k<=6法一:分析:递归问题,step表示当前剩余的数需要分成的份
2022-02-10 22:43:40 412
原创 试题 算法提高 最长滑雪道
问题描述 小袁非常喜欢滑雪, 因为滑雪很刺激。为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。 小袁想知道在某个区域中最长的一个滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。如下: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。 你的任务就是找到最长的一条滑坡,并且将滑坡的长度输出。 滑坡的长度
2022-02-10 12:01:59 150
原创 蓝桥杯 试题 算法提高 合唱队形(c++)
问题描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti>Ti+1>…>TK(1<=i<=K)。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。输入格式 输入的第一行是一个整数N(2<=N<=10
2022-02-09 11:03:31 756
原创 queue容器基本操作
#include <iostream>#include<stack>using namespace std;void test01(){ //初始化 stack<int> s1; stack<int> s2(s1); //stack操作 s1.push(10); s1.push(20); s1.push(30); s1.push(100); cout<<"栈顶元素:"<<s1.top()<<.
2022-01-26 19:06:47 382
原创 stack容器基本操作
#include <iostream>#include<stack>using namespace std;void test01(){ //初始化 stack<int> s1; stack<int> s2(s1); //stack操作 s1.push(10); s1.push(20); s1.push(30); s1.push(100); cout<<"栈顶元素:"<<s1.top()<<.
2022-01-26 19:05:48 738
原创 Deque容器基本操纵(可复制后学习)
#include <iostream>#include <deque>using namespace std;void PrintDeque(deque<int>&d){ for(deque<int>::iterator it = d.begin();it!=d.end();it++)//使用迭代器遍历整个容 { //器重点!!!! cout<<*it<<" "; }cout<.
2022-01-26 19:03:01 692
原创 Vector 容器基本操作(可以复制后学习)
#include <iostream>#include <vector>using namespace std;void printVector(vector <int> &v){ for(vector<int>::iterator it=v.begin();it!=v.end();it++)//迭代器的使用方法 //遍历的所有数据 是重点!!!!!!! { cout<<*it<.
2022-01-26 18:58:18 811
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人