数据结构
鸭锁骨啦啦啦
你说贪心是无法接近你的
~~~~
展开
-
L2-030 冰岛人
所谓“五代以内无公共祖先”是指两人的公共祖先(如果存在的话)必须比任何一方的曾祖父辈分高。 这个条件卡 3 6 先找公共祖先 再判断是否大于双方的曾祖辈分 #include<iostream> #include<cstring> #include<algorithm> #include<vector> #include<map>...原创 2020-03-26 20:03:08 · 145 阅读 · 0 评论 -
数据结构题目集
#include<stdio.h> #include<stdlib.h> typedef struct treeNode *tree; struct treeNode{ int v; tree right,left; }; tree Maketree(int n); tree NewNode(int V); tree Insert(int v,tree T); in...原创 2020-03-17 17:51:35 · 213 阅读 · 0 评论 -
算法训练 结点选择
看过这道题,我们大概可以知道,这是一道和树有关的问题,那么我们需要考虑的就是如何去遍历树?很明显,我们需要用到DFS。仔细读这道题,然后我们就可以得到这还需要用到动态规划,由此,我们做这道题,解题方案也就是树形动态规划了! 既然要用动态规划,构造状态转移方程是必不可少了! 对于叶子结点: dp[k][0] = 0; dp[k][1] = k点权值; 对于非叶子结点: dp[i][0] = ma...转载 2019-07-07 15:12:17 · 240 阅读 · 0 评论 -
P1433 吃奶酪
第一眼看到的时候 很懵 原来是dfs 啊 题目描述 房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块奶酪的坐标。 两点之间的距离公式=sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2)) 输出格式: 一个数,表示要跑的最少距离,保留2位小数...原创 2019-04-01 21:47:42 · 98 阅读 · 0 评论 -
最小生成树
题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入输出格式 输入格式: 第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000) 接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi 输出格式: 输出包含一个数,即最小生成树的各边的长度之和;如果该图不连通则输出orz 方法一...原创 2019-04-01 21:20:05 · 286 阅读 · 0 评论 -
7-39 魔法优惠券
在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星) 例如,给定一组优惠劵,面值分别为1、2、4、-1;对应一组商品,价值为火星...原创 2019-03-31 21:24:29 · 157 阅读 · 0 评论 -
7-12 镖局运镖
假设有n个城市和m条道路,对应无向图中的点和边。每条路的过路费对应边的权值。镖局现在需要选择一些道路进行疏通,以便边距可以达到任意一个城镇,要求花费的银子越少越好。换句话说,镖局的要求就是用最少的边让图连通(任意两点之间可以互相到达),将多余的边去掉。 很显然,要想让有n个顶点的图连通,那么至少需要n-1条边。如果一个连通无向图不包含回路,那么就是一棵树,其实这里就是求一个图的最小生成树。这里我们...原创 2019-03-23 19:54:06 · 886 阅读 · 0 评论 -
7-48 银行排队问题之单窗口“夹塞”版
排队“夹塞”是引起大家强烈不满的行为,但是这种现象时常存在。在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙。当窗口空闲时,下一位顾客即去该窗口处理事务。此时如果已知第i位顾客与排在后面的第j位顾客是好朋友,并且愿意替朋友办理事务的话,那么第i位顾客的事务处理时间就是自己的事务加朋友的事务所耗时间的总和。在这种情况下,顾客的等待时间就可能被影响。假设所有人到达...原创 2019-03-19 09:35:57 · 328 阅读 · 0 评论 -
7-29 修理牧场
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li 个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li 的总和。 但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费1...原创 2019-03-13 20:28:56 · 240 阅读 · 0 评论 -
7-49 打印学生选课清单
假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。 输入格式: 输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课程数。此后顺序给出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号(简单起见,课程从1到K编号)和选课学生总数(之间用空格分隔),之后在第二行给出学生...原创 2019-03-15 20:17:50 · 767 阅读 · 1 评论 -
7-50 畅通工程之局部最小花费问题
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式: 输入的第一行给出村庄数目N (1≤N≤100)...原创 2019-03-15 19:18:20 · 88 阅读 · 0 评论 -
旅游规划
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。 输入格式: 输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;...原创 2019-03-11 15:41:36 · 149 阅读 · 0 评论 -
P1305 新二叉树
队列??? #include<iostream> #include<string> #include<cstring> using namespace std; int n; string s; int main() { cin>>n; cin>>s; for(int i=2;i<=n;i++) { string s...原创 2019-02-28 16:23:40 · 160 阅读 · 0 评论 -
P1030 求先序排列
#include<cstdio> #include<iostream> #include<cstring> using namespace std; void beford(string in,string after) { if(in.size()>0) { char ch=after[after.size()-1]; cout<&l...原创 2019-02-28 15:47:56 · 129 阅读 · 0 评论 -
P1087 FBI树
1.建树。按照题意是在递归过程中建立树,建树的方法实际上就是树的先序遍历(先根节点,再左右子树)。当本节点长度大于1时递归建立子树。 2.输出。而输出过程是对树的后序遍历(先左右子树,再根节点),这里有个技巧就是可以和建树过程集成在一起。只需将代码放在递归调用之后就可以了。 3.判断。最后是判断当前节点的FBI树类型,可以用B(初始值为1)保存全是‘0’的情况,如果遇到‘1’就将B置为0,用...原创 2019-02-28 15:31:33 · 321 阅读 · 0 评论 -
P1449 后缀表达式
#include<bits/stdc++.h> using namespace std; stack<int> n; char ch; int s,x,y; int main() { while(ch!='@') { ch=getchar(); switch(ch) { case '+': x=n.top();n.pop();y=n.top();n...原创 2019-02-28 15:11:05 · 224 阅读 · 0 评论 -
P1160 队列安排
#include<cstdio> #include<cstring> int a[100010][4],n,m; //a[i][2]表示学号为i的同学的右边同学学号 //a[i][3]表示学号为i的同学左边同学学号 int main() { scanf("%d",&n);int j=1; memset(a,0,sizeof(a)); a[1][1...原创 2019-02-27 16:55:11 · 275 阅读 · 0 评论