Uva1669交换房子——思维

原文:https://blog.csdn.net/aozil_yang/article/details/61926727 题意: 给你一棵包括n 个结点的树,每个结点上住着一个人,每个人都要换房子,但不能有两个人 住在同一个房子,求的所有人的最大路程长度? 思路: 成都2011年区域赛的题目: 感觉正解好巧妙: 最优解肯定是让每一个边尽量走更多次数。 那么我们只需要算一下每个边 走的最大次数是多少即可。 比如说a 这个结点的子树里(包括a) 一共有u 个结点, 那么剩下的有 n-u 个结点。令
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

Uva1668绿色行动——思维

题意: 给定一棵有 n 个节点的树,每条边有边权 w(u,v),用最少的路径覆盖所有的边,使得每条边被覆盖的次数等于其边权。 思路: 最坏情况是每条边都单独覆盖w次。逐个合并。 #include <cstdio> #include <queue> #include <vector> #include <cstring> #include <algorithm> #define fi first #define se second #define pii pair<int,int> using
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

Uva1670王国的道路图

题意: 给定一棵树,然后让你加入尽量少的边,使得整张图不存在割边。 思路: 上来一看就把叶子节点挨个直接连起来了。这样是不对的,因为可能会陷入某一个子树。 如图红色线连的就是错的,这样会陷入子树中,而当其父节点与割边相连是,剪断割边就不连通了 。所以要子树要与外界连通,方法时,找一个度大于1的点作为根,dfs寻找,每当找足3个叶子时,把左右两边的连在一起,中间剩下等待下一轮3个。最后可能会剩下0,1,2 个叶子。 0个叶子不用处理。1个叶子就把他和根连在一起。2个叶子就把他俩连在一起。 //
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

Uva12214TrafficJam

知识点:求点M(x,y)逆时针旋转后求坐标值(x1,y1)。 设点M在原坐标系中的坐标为(x,y),对应向量的模为r,幅角为.将坐标轴绕坐标原点,按照逆时针方向旋转角形成新坐标系,点M在新坐标系中的坐标为,则 所以,按照逆时针方向旋转后的坐标是: ####题意: 有一条包含n段的单向折线,你想开着一辆会飞的汽车才折线起点到折线终点,且耗油最少。沿着折线方向正常行驶时单位耗油量为1,飞行时单位耗油量为f(2<=f<=5)。 ####思路: 先考虑一个简单的,如下图:绿色的为道路,o是起点,b是终
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

Uva11671_Sign of Matrix——差分约束

问题 有一个n*n的全0矩阵,每次可以把其中的某一行(列)的所有元素加1或减1.目标矩阵是一个包含0,正负号的矩阵,求最少操作次数使得满足目标矩阵。 思路: 推荐一篇讲差分约束的博客:https://blog.csdn.net/whereisherofrom/article/details/78922648 我们用xi表示对行进行的操作,yi表示对列进行的操作。 当矩阵符号是 ‘+’ 时,应满足xi + yi >= 1,即(-yi)- xi <= -1; 当是‘—’ 时,xi + yi <=
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1086 Tree Traversals Again (25 分) 前序中序创建二叉树

\quad从题目给出的入栈和出栈操作,可知入栈顺序是树的前序遍历,本题前序遍历是{1,2,3,4,5,6};出栈顺序是树的中序遍历,本题的中序遍历是{3,2,4,1,6,5}。题目要求我们求树的后序遍历,因此这道题的关键就是根据前序遍历和中序遍历来创建一棵二叉树。流程如下: 1根据前序遍历来确定每次根节点的位置,因为前序遍历先访问的是根节点,所以前序遍历第一个位置就是根节点。 2根据根节点和中序遍历将树划分为左右两棵树。 3根据第一步和第二步递归的处理左右两棵树。 \quad如下图所示,便是这
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1090 Highest Price in Supply Chain (25 分) 数组模拟

我用from数字记录每一个节点的父亲节点,这样来求层数。但这样的做法需要优化,不然会超时。优化的三个方便如下: 优化1:已经求出第几层的可以直接用 优化2:求出某个节点层数,回溯回去继续求出它所有父亲节点层数 优化3:发现某个节点已求得情况下也不需要再求了 #include <bits/stdc++.h> using namespace std; const int maxn = 1e+5+10; int from[maxn]; int level[maxn] = {0}; int mai
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1091 Acute Stroke (30 分)

\quad很简单三维搜索,可以用BFS或者DFS。但是DFS好像会爆栈,有两个测试用例过不了。BFS程序如下: #include <bits/stdc++.h> using namespace std; int I[1286][128][60]; int m, n, l, t; int vis[1286][128][60]; int dir[6][3] = {{1, 0, 0}, {-1, 0, 0}, {0, 1, 0}, {0, -1, 0}, {0, 0, 1}, {0, 0, -1}
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1093 Count PAT's (25 分)

\quad这是一个数学问题,容易想到对于字符串中每个A而言,若其前面有m个P,后面有n个T,可以得到对于当前的A,能够组成m*n种情况的PAT。我们可以先统计出T的总个数,依次遍历字符串,遇到P则统计P的个数++,遇到T则T个数--,遇到A则令结果加上当前P数量和T数量的乘积。最后将结果模给定的数输出即可。这里若数太大在中间计算过程中就爆long long的话可以每一步都模那个大数,不过PAT数据向来比较亲民,这个题不用考虑这种情况。程序如下: #include <bits/stdc++.h>
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1094 The Largest Generation (25 分)

\quad树的BFS,注意记录每一层的终止位置(我用-1标识),统计每一层的数量即可。程序如下: #include <bits/stdc++.h> using namespace std; const int maxn = 100; vector<int> v[maxn]; int main(int argc, char const *argv[]) { int N, M; cin >> N >> M; for (int i = 0; i < M; ++i) { int par
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1096 Consecutive Factors (20 分)

\quad感觉这个20分题挺难的,利用构造连乘来找n最大的能够连成的因子个数。 #include <bits/stdc++.h> using namespace std; int main(int argc, char const *argv[]) { int n; cin >> n; int maxn = sqrt(n)+1; int first = 0, len = 0, temp; for (int i = 2; i <= maxn; ++i) { temp = 1;
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1099 Build A Binary Search Tree (30 分)

\quad本题意在告诉你每个节点的左右孩子信息,需要你把树建出来,接着利用BST中序遍历值是有序的这一特性重新给每个节点赋值。最后再来个BFS对树进行层次遍历输出即可。 #include <bits/stdc++.h> using namespace std; int n; struct TreeNode { int val; int left, right; }treeNode[101]; int val[101]; int num = 0; void inorder(int roo
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 Mars Numbers(20分)

\quad水题,但是注意0表示tret,需注意。 #include <bits/stdc++.h> using namespace std; string one[12] = {"jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"}; string two[12] = {"tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo",
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1107 Social Clusters (30 分)

\quad首先找出兴趣相同的人,建立关系,vector v[maxn];其中v[i]中的值是与i有相同兴趣的人。最后dfs,标记每个人所属类别,统计每类人数,排序输出即可。 #include <bits/stdc++.h> using namespace std; const int maxn = 1010; struct People { int habbit[maxn]; }people[maxn]; vector<int> v[maxn]; int vis[maxn] = {0};
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

图论(十四)——图的着色

考试要求 求图的边色数和点色数(结构分析法) 色多项式(以前考现在了解) 应用题:画图,问题转换 一、图的边着色 \quad边色数:给图边上色,使得相邻边颜色不同所需要的颜色最少种数。记为 χ′(G)χ&#x27;(G)χ′(G) \quad对图的正常边着色,实际上是对G的边集合的一种划分,使得每个划分块是G的一个边独立集(无环时是匹配);图的边色数对应的是图的最小独立集划分数。因此,图的边着色,本质上是对应实际问题中的“划分”问题或“分类”问题。 \quad偶图的边色数: χ′(G)=Δχ&
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

PAT甲级 1106 Lowest Price in Supply Chain (25 分)

\quad树的层次遍历,需记录每一层零售商数量。若某一层出现零售商,即该曾出现叶子节点,则统计该层叶子节点个数,计算出结果输出即可。 #include <bits/stdc++.h> using namespace std; const int maxn = 1e+5+10; vector<int> v[maxn]; int main(int argc, char const *argv[]) { int n; double p, r; scanf("%d%lf%lf", &n, &
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

图论(十五)——有向图的概念和算法

考试要求: 有向图的相关概念和结论 强连通分支和单项连通分支的求法 一、有向图概念和性质 概念:边有方向的图称为有向图 出度:以点v为始点的边的条数称为点v的出度,一个自环算一度 入度:以点v为终点的边的条数称为点v的入度,一个自环算一度 一个简单图有 2m(G)2^{m(G)}2m(G)个定向图。 ∑d+(v)=∑d−(v)=m(G)\sum d^+(v)=\sum d^-(v)=m(G)∑d+(v)=∑d−(v)=m(G) 邻接矩阵和关联矩阵的定义 二、有向图的连通性 设 D=(V,E)D
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

1153 Decode Registration Card of PAT (25 分)

\quad熟练运用map和sort就很容易。需注意第四个测试点用map会超时,全部用unordered_map就好。 #include <bits/stdc++.h> using namespace std; const int maxn = 1e4+10; unordered_map<char, vector<pair<string, int> > > level; unordered_map<string, int> site; unordered_map<string, int> n
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

图论——图代数问题

一、图的邻接矩阵 定义:设G为n阶图, V=v1,v2,…,vnV={v_1, v_2, …, v_n}V=v1,v2,…,vn,邻接矩阵 A(G)=(aij)A(G)=(a_{ij})A(G)=(aij),其中 aij={l,vi和vj间边数0,vi和vj不邻接 a_{ij}=\left\{ \begin{aligned} &amp;l ,v_i和v_j间边数 \\ &amp;0 , v_i和v_j不邻接 \end{aligned} \right. aij={l,vi和vj间边数0,vi和v
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0

图论——极图和托兰定理

一、 lll部图的概念与特征 lll部图定义: 完全 lll部图定义: 如果在一个 lll部图G中,任意部 ViV_iVi中的每个顶点同G中其它各部中的每个顶点均邻接,称G为完全 lll部图。记作: G=Kn1,n2,⋯&ThinSpace;,nl(ni=∣Vi∣,1≤i≤l)G=K_{n_1, n_2,\cdots, n_l}(n_i = |V_i|, 1 \le i \le l)G=Kn1,n2,⋯,nl(ni=∣Vi∣,1≤i≤l) 完全 lll等部图: 各部顶点数相同的完全 lll部图
分类: 其他 发布时间: 07-04 22:01 阅读次数: 0