- 博客(179)
- 收藏
- 关注
转载 UVA 122(二叉树+字符串输入)
题意:给你一颗二叉树上面的若干节点上的值(均为正数),判断从根到所有的给定的点的路径上的节点,是不是都有值,且只被赋值一次。思路:这题不难,主要是一些细节上的处理,学习一下。。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll...
2018-08-31 19:31:00 151
转载 POJ1849 Two(树的直径)
题意:有一颗n个结点的带权的无向树, 在s结点放两个机器人, 这两个机器人会把树的每条边都走一遍, 但是最后机器人不要求回到出发点. 问你两个机器人走的路总长之和的最小值是多少?思路:考虑从一个结点遍历整个树再回到原点需要把每个边计算两遍,这里机器人不用回到出发点,所以两个机器人到达的点越远越好。让两个机器人在初始位置在直径上背道而驰,这样最优解就是...
2018-08-31 00:11:00 156
转载 【模板】树的直径(树的最长路)
具体学习参考https://blog.csdn.net/qq_32400847/article/details/51469917#include<queue>#include<vector>#include<cstdio>#include<cstring>#include<iostream...
2018-08-30 23:33:00 121
转载 HDU1520 Anniversary party(树形DP)
题意:某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的总活跃指数最大。思路:当i来时,dp[i][1]+=dp[j][0] (j为i的下属)当i不来时,dp[i][0]+=max(dp[j]...
2018-08-30 22:24:00 116
转载 POJ1236 (强连通+tarjan+缩点)
题意:有n台电脑,现在有些电脑可以传数据到另外的电脑上,即有k条边。问题1:现在问至少需要给多少台电脑传送数据才能到达全部电脑。问题2:问至少添加多少条边才能使得往任意一台电脑传送数据便可以到达所有电脑。思路:问题1可以转化为求入度为0的缩点个数,问题2可以转换为求max(入度为0的点个数,出度为0的点个数),因为tarjan后图变成一个DAG,要将...
2018-08-30 10:25:00 139
转载 【模板】tarjan(强连通+缩点)
具体学习参考https://blog.csdn.net/qq_34374664/article/details/77488976/** Tarjan 算法* 复杂度 O(N+M)*/#include<bits/stdc++.h>using namespace std;const int MAXN = 20010;//点数co...
2018-08-29 23:57:00 73
转载 Amanda Lounges (二分图染色+好题)
题意:给定n个点m条边的无向图(开始每个点都是白色)下面m行给出边和边权,边权表示这条边所连接的2个点中被染成黑色的点数。0表示染,1表示其中一个点染,2表示都染。问:最少染多少个点可以满足上述的边权。若不存在输出impossible思路:首先处理所有边权为0和2的情况,这样处理后图中就只剩下边权为1的子图,任意染一个点,然后bf...
2018-08-29 21:04:00 140
转载 【模板】判定二分图(染色)
判定一个图是否为二分图从其中一个定点开始,将跟它邻接的点染成与其不同的颜色,最后如果邻接的点有相同颜色,则说明不是二分图,每次用bfs遍历即可。#include <queue> #include <cstring> #include <iostream> using namespace std; ...
2018-08-29 09:25:00 138
转载 KMP模板
/* next[] 的含义:x[i-next[i]...i-1]=x[0...next[i]-1]next[i] 为满足 x[i-z...i-1]=x[0...z-1] 的最大 z 值(就是 x 的自身匹配)*/void kmp_pre(char x[],int m,int next[]){ int i,j; j=next[0]...
2018-08-28 20:01:00 69
转载 线段树学习
具体参考https://blog.csdn.net/zearot/article/details/48299459 转载于:https://www.cnblogs.com/dillydally/p/9567675.html
2018-08-28 08:45:00 62
转载 离散化
转自http://www.matrix67.com/blog/archives/108什么是离散化?如果说今年这时候OIBH问得最多的问题是二分图,那么去年这时候问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”等等。哪个是对的呢?哪个都对。关键在于,这需要一些例子和不少的讲...
2018-08-28 00:57:00 78
转载 HDU 6446 Tree and Permutation(找规律+树形DP)
题意:给一棵N个点的树,对应于一个长为N的全排列,对于排列的每个相邻数字a和b,他们的贡献是对应树上顶点a和b的路径长,求所有排列的贡献和。思路:对于任意的xy,其在全排列中相邻的组合数是(n-1)!*2,这样题目意思就明了了,求一棵树中任意两点距离和,边上有权重。贡献思维,看每条边对答案的贡献。一条边被n1*n2次走过,n1,n2分别为边两边的...
2018-08-27 23:48:00 124
转载 组合数学之排列组合
一、排列与组合//组合数C(n,k)ll C(ll n,ll k){ if(2*k>n) k=n-k; ll s=1; for(ll i=1,j=n; i<=k; i++,j--) s=s*j/i; return s;}//排列数A(n,r)ll A(ll n...
2018-08-27 21:52:00 143
转载 POJ 2719(模拟+进制转换)
思路:把数按个、十、百……拆开,如果大于3,就减1,再按9进制加回去。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector&g...
2018-08-27 18:14:00 142
转载 排列数和组合数
//组合数C(n,k)ll C(ll n,ll k){ if(2*k>n) k=n-k; ll s=1; for(ll i=1,j=n; i<=k; i++,j--) s=s*j/i; return s;}//排列数A(n,r)ll A(ll n,ll r){ ll sum=...
2018-08-27 16:25:00 144
转载 POJ 2249(组合数)
水题,这里注意计算的速度,方法不好可能会超时。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#include&...
2018-08-27 16:13:00 106
转载 链式前向星模板
#include <stdio.h>#include <string.h>// 最大顶点数const int V = 100000;// 最大边数const int E = 100000;// 边结构体的定义struct Edge { int to; // 表示这条边的另外一个顶点 ...
2018-08-26 23:21:00 142
转载 HDU 6440(费马小定理)
m^p≡mmodp,n^p≡nmodp,所以m^p+n^p≡(m+n)modp#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=...
2018-08-26 17:48:00 196
转载 ACM数论之费马小定理
费马小定理(Fermat's little theorem)是数论中的一个重要定理,在1636年提出,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p),例如:假如a是整数,p是质数,则a,p显然互质(即两者只有一个公约数1),那么我们可以得到费马小定理的一个特例,即当p为质数时候, a^(p-1)≡1(mod p)...
2018-08-26 17:29:00 203
转载 HDU 6441(费马大定理+奇偶数列法)
思路:由费马大定理知a^n+b^n=c^n当n>2时无整数解,所以n==0和n>2时输出-1 -1,n==1时输出1,a+1,n==2时,由奇偶数列法(https://blog.csdn.net/Dilly__dally/article/details/82081922)知a为奇数时,b=n*n+(n+1)*(n+1)-1,c=b+1;a...
2018-08-26 16:42:00 106
转载 奇偶数列法则
定理: 如a^2+b^2=c^2是直角三角形的三个整数边长,则必有如下a值的奇数列、偶数列关系成立;(一) 直角三角形a^2+b^2=c^2奇数列a法则:若a表为2n+1型奇数(n=1、2、3…),则a为奇数列平方整数解的关系是:a=2n+1{b=n^2+(n+1)^2-1c=n^2+(n+1...
2018-08-26 16:40:00 818
转载 PAT Advanced Level 1102二叉树反转
#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=1e-8;const double PI = acos(-1.0);#define...
2018-08-26 15:11:00 148
转载 HDU 6438 Buy and Resell (贪心+优先队列)
题意:给定n天,每天有个价格,可以买一个物品,可以把手中的物品卖掉,求最大利润和最少买卖次数。思路:最大利润按这个https://blog.csdn.net/Dilly__dally/article/details/82055866思路求,先看第二个样例9 5 9 10 5 ,按队列模拟利润是 9-5 + 10-9 ,可以看出9是一个中间物,不用买9...
2018-08-26 12:07:00 69
转载 CF 867E buy Low Sell High(贪心+优先队列)
题意:给定n天,每天有个价格,可以买一个物品,可以把手中的物品卖掉思路:首先假设每一天都买了东西,即把它push进优先队列,如果当天价格大于对头(最小的),ans就加上他们的差价,再把当天的价格push进去(这一步非常重要,以免后面有更高的价格可以买当天的东西,这一步也就等价于一个中间物体)#include<bits/stdc++....
2018-08-25 22:06:00 136
转载 HDU 5933(模拟)
题意:有n个数,对于这n个数,每次只能执行下面两种操作其中的一种:一:将相邻的两个数相加合并成一个数,二:将一个数分成相邻的两个数,这两个数的和仍然等于之前的数请问至少需要多少次操作才能将这n个数变成k个相等的数。思路:顺着模拟,处理f>kk时比较巧妙。#include<bits/stdc++.h>using n...
2018-08-25 10:50:00 80
转载 HDU 5938(字符串+贪心)
题意:给你一个字符串,把它分成四块,按顺序把符号+ - * /放上去,问能得到的最大数是多少。思路:因为有-,所以*和/后的结果要尽可能小,一位数*一位数最大只能是两位数,所以除数就可能为一位数或两位数,如果是三位数,那么会产生小数,从而浪费了前面的加和。还有就是前面相加的两个数可能是所有数+最后一位(相对而言)或第一位+后面的全部。四种情况比较一下...
2018-08-25 01:18:00 101
转载 HDU 5935(贪心+卡精度)
题意:一辆车在路上直线走,它的速度是不减的,现在有一些该车路过的坐标,测的时刻是整数时刻,最后一个测值位置点是终点。问车开到终点的最少用时?思路:因为速度是匀速或递增的,所以要想用时最少,最后一段路程用时就为1,速度就是这段路程,然后往前递推求速度。有两种情况:(1)如果后一段速度>=前一段路程,说明前一段路程可以用时1完成;(2)如果后一段...
2018-08-25 00:24:00 96
转载 二叉搜索树的操作集
6-12二叉搜索树的操作集(30分)本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, Elem...
2018-08-24 21:08:00 76
转载 先序输出叶子结点
6-11先序输出叶结点(15分)本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;stru...
2018-08-24 11:46:00 751
转载 二叉树求高度
#include<bits/stdc++.h>using namespace std;typedef char ElementType;typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; Bin...
2018-08-24 10:54:00 109
转载 2017-2018 CTU Open Contest B.Pond Cascade(二分+模拟)
比赛的时候没看这个题,其实很简单,两次二分即可求出答案。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=100005;const double eps=1e-8;const d...
2018-08-21 22:55:00 123
转载 AC自动机模板(hdu2222)
具体学习参考https://blog.csdn.net/creatorx/article/details/71100840模板来自kuangbin大神,HDU2222模板题//======================// HDU 2222// 求目标串中出现了几个模式串//====================#include<...
2018-08-20 14:14:00 68
转载 POJ1222(高斯消元)
开关灯问题。第一种方法就是去枚举第一行的状态(6*5)* (2^6),很快。第二种方法是高斯消元,第一种的思路类似POJ 3279,下面说说高斯消元的思路:记g[i][j]为原矩阵,x[ i ] [ j ]为i,j位置是否按,1是按,0是不按,也就是要求的答案,a[ i ] [ j ]为增广矩阵,设c[ i ] [ j ]为按下(i,j)后的...
2018-08-18 15:29:00 167
转载 高斯消元模板
学习参考https://blog.csdn.net/pengwill97/article/details/77200372浮点数:#define eps 1e − 9const int MAXN=220;double a[MAXN][MAXN],x[MAXN];//方程的左边的矩阵和等式右边的值, 求解之后 x存的就是结果int equ...
2018-08-18 14:29:00 41
转载 HDU 1671(字典树)
字母换成数字而已,字典树模板。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=10005;const double eps=1e-8;const double PI = aco...
2018-08-15 22:40:00 99
转载 字典树(Trie)模板
字典树具体学习参考https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html查找字符串是否出现/* trie tree的储存方式:将字母储存在边上,边的节点连接与它相连的字母 trie[rt][x]=tot:rt是上个节点编号,x是字母,tot是下个节点编号*/#include&...
2018-08-15 18:08:00 62
转载 HDU 1251(字典树Trie)
模板题。注意一下输入都用gets(),不然WA#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=1e-8;const double...
2018-08-15 18:04:00 62
转载 HDU 5881(贪心+找规律)
题意:有一壶水和两个杯子,每次只能从壶里往杯子里倒水杯子中的水量是可见的,壶中的水量是不可见的但是可以知道壶里的水倒完了没有开始壶中的水量在中,要求将水到入杯中并且最后壶中的水量不超过 1,两个杯子的水量差不超过 1思路:首先明确,由于我不知道壶里到底有多少水,那么显然我第一次 分别向两个杯子分别到 L/2 +1 和 L/...
2018-08-14 23:51:00 85
转载 HDU 5883(欧拉路+异或)
题意:n个点m条无向边的图,找一个欧拉通路/回路使得这个路径所有结点的异或值最大。思路:首先了解欧拉路欧拉路 。先判断是否有欧拉路径或欧拉回路(入度为奇数的点是2或0),然后画画图可以看出每个点当(度数+1)/2是奇数,则有贡献,否则贡献为0(自己异或自己等于0),最后如果奇点个数为2,还要枚举每个点去异或刚才得到的答案,找到最大值。#i...
2018-08-14 22:04:00 129
转载 HDU 5882(博弈)
题意:剪刀石头布每个人都需要有50%的胜率现在给出n个操作,问这n个操作能否使得每个人的胜率为50%方法:要想每一个手势攻防都一样,必须n-1个手势有一半攻击自己,有一半防守自己,显然n-1要是偶数,所以当n 是奇数是成立的,否则不成立!#include<bits/stdc++.h>using namespace std;#d...
2018-08-14 21:51:00 66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人