08 2018 档案
摘要:题意:给你一颗二叉树上面的若干节点上的值(均为正数),判断从根到所有的给定的点的路径上的节点,是不是都有值,且只被赋值一次。思路:这题不难,主要是一些细节上的处理,学习一下。。#includeusing namespace std;#define inf 0x3f3f...
阅读全文
摘要:题意:一个老板和n个员工组成树状结构,每个员工都有自己的唯一上司,老板的编号为0,员工1~n,工人们打算签署一个志愿书给老板,但无法跨级,当一个中级员工(非是工人的员工)的直属下属中不小于T%的人签字时,他也会签字并且递给他的直属上司,问:要让老板收到请愿书至少需要多...
阅读全文
摘要:题意:有一颗n个结点的带权的无向树, 在s结点放两个机器人, 这两个机器人会把树的每条边都走一遍, 但是最后机器人不要求回到出发点. 问你两个机器人走的路总长之和的最小值是多少?思路:考虑从一个结点遍历整个树再回到原点需要把每个边计算两遍,这里机器人不用回到出发点,所...
阅读全文
摘要:具体学习参考https://blog.csdn.net/qq_32400847/article/details/51469917#include#include#include#include#include#includeusing namespace std;st...
阅读全文
摘要:题意:某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的总活跃指数最大。思路:当i来时,dp[i][1]+=dp[j][0...
阅读全文
摘要:题意:有n台电脑,现在有些电脑可以传数据到另外的电脑上,即有k条边。问题1:现在问至少需要给多少台电脑传送数据才能到达全部电脑。问题2:问至少添加多少条边才能使得往任意一台电脑传送数据便可以到达所有电脑。思路:问题1可以转化为求入度为0的缩点个数,问题2可以转换为求m...
阅读全文
摘要:具体学习参考https://blog.csdn.net/qq_34374664/article/details/77488976/** Tarjan 算法* 复杂度 O(N+M)*/#includeusing namespace std;const int MAXN ...
阅读全文
摘要:题意:给定n个点m条边的无向图(开始每个点都是白色)下面m行给出边和边权,边权表示这条边所连接的2个点中被染成黑色的点数。0表示染,1表示其中一个点染,2表示都染。问:最少染多少个点可以满足上述的边权。若不存在输出impossible思路:首先处理所有边权为0和2的情...
阅读全文
摘要:判定一个图是否为二分图 从其中一个定点开始,将跟它邻接的点染成与其不同的颜色,最后如果邻接的点有相同颜色,则说明不是二分图,每次用bfs遍历即可。 #include #include #include using namespace std; const...
阅读全文
摘要:/* 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,...
阅读全文
摘要:具体参考https://blog.csdn.net/zearot/article/details/48299459
阅读全文
摘要:转自http://www.matrix67.com/blog/archives/108什么是离散化? 如果说今年这时候OIBH问得最多的问题是二分图,那么去年这时候问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对...
阅读全文
摘要:题意:给一棵N个点的树,对应于一个长为N的全排列,对于排列的每个相邻数字a和b,他们的贡献是对应树上顶点a和b的路径长,求所有排列的贡献和。思路:对于任意的xy,其在全排列中相邻的组合数是(n-1)!*2,这样题目意思就明了了,求一棵树中任意两点距离和,边上有权重。贡...
阅读全文
摘要:一、排列与组合 //组合数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 #include using namespace std; int main()...
阅读全文
摘要:思路:把数按个、十、百……拆开,如果大于3,就减1,再按9进制加回去。#include#include#include#include#include#include#include#include#include#include#include#include#in...
阅读全文
摘要://组合数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)l...
阅读全文
摘要:水题,这里注意计算的速度,方法不好可能会超时。#include#include#include#include#include#include#include#include#include#include#include#include#include#includ...
阅读全文
摘要:#include #include // 最大顶点数const int V = 100000;// 最大边数const int E = 100000;// 边结构体的定义struct Edge { int to; // 表示这条边的另外一个顶点 ...
阅读全文
摘要:m^p≡mmodp,n^p≡nmodp,所以m^p+n^p≡(m+n)modp#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;con...
阅读全文
摘要:费马小定理(Fermat's little theorem)是数论中的一个重要定理,在1636年提出,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p),例如:假如a是整数,p是质数,则a,p显然互质(即两者只有一个公约数1),那...
阅读全文
摘要:思路:由费马大定理知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/8208192...
阅读全文
摘要:定理: 如a^2+b^2=c^2是直角三角形的三个整数边长,则必有如下a值的奇数列、偶数列关系成立; (一) 直角三角形a^2+b^2=c^2奇数列a法则: 若a表为2n+1型奇数(n=1、2、3 …), 则a为奇数列平方整数解的关系是: a=2...
阅读全文
摘要:#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=1e-8;const double PI = ac...
阅读全文
摘要:题意:给定n天,每天有个价格,可以买一个物品,可以把手中的物品卖掉,求最大利润和最少买卖次数。思路:最大利润按这个https://blog.csdn.net/Dilly__dally/article/details/82055866思路求,先看第二个样例9 5 9 1...
阅读全文
摘要:题意:给定n天,每天有个价格,可以买一个物品,可以把手中的物品卖掉思路:首先假设每一天都买了东西,即把它push进优先队列,如果当天价格大于对头(最小的),ans就加上他们的差价,再把当天的价格push进去(这一步非常重要,以免后面有更高的价格可以买当天的东西,这一步...
阅读全文
摘要:题意:有n个数,对于这n个数,每次只能执行下面两种操作其中的一种:一:将相邻的两个数相加合并成一个数,二:将一个数分成相邻的两个数,这两个数的和仍然等于之前的数请问至少需要多少次操作才能将这n个数变成k个相等的数。思路:顺着模拟,处理f>kk时比较巧妙。#includ...
阅读全文
摘要:题意:给你一个字符串,把它分成四块,按顺序把符号+ - * /放上去,问能得到的最大数是多少。思路:因为有-,所以*和/后的结果要尽可能小,一位数*一位数最大只能是两位数,所以除数就可能为一位数或两位数,如果是三位数,那么会产生小数,从而浪费了前面的加和。还有就是前面...
阅读全文
摘要:题意:一辆车在路上直线走,它的速度是不减的,现在有一些该车路过的坐标,测的时刻是整数时刻,最后一个测值位置点是终点。问车开到终点的最少用时? 思路:因为速度是匀速或递增的,所以要想用时最少,最后一段路程用时就为1,速度就是这段路程,然后往前递推求速度。有两种情况:(1...
阅读全文
摘要:6-12 二叉搜索树的操作集(30 分)本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType ...
阅读全文
摘要:6-11 先序输出叶结点(15 分)本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Positio...
阅读全文
摘要:#includeusing namespace std;typedef char ElementType;typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementT...
阅读全文
摘要:比赛的时候没看这个题,其实很简单,两次二分即可求出答案。#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=100005;const double e...
阅读全文
摘要:具体学习参考https://blog.csdn.net/creatorx/article/details/71100840模板来自kuangbin大神,HDU2222模板题//======================// HDU 2222// 求目标串中出现了几个...
阅读全文
摘要:开关灯问题。第一种方法就是去枚举第一行的状态(6*5)* (2^6),很快。第二种方法是高斯消元,第一种的思路类似POJ 3279,下面说说高斯消元的思路:记g[i][j]为原矩阵,x[ i ] [ j ]为i,j位置是否按,1是按,0是不按,也就是要求的答案,a[ ...
阅读全文
摘要:学习参考https://blog.csdn.net/pengwill97/article/details/77200372 浮点数: #define eps 1e − 9const int MAXN=220;double a[MAXN][MAXN],x[MAXN];/...
阅读全文
摘要:字母换成数字而已,字典树模板。#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=10005;const double eps=1e-8;const ...
阅读全文
摘要:字典树具体学习参考https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html 查找字符串是否出现 /* trie tree的储存方式:将字母储存在边上,边的节点连接与它相连的字母 trie[rt][x]=tot:...
阅读全文
摘要:模板题。注意一下输入都用gets(),不然WA#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=1e...
阅读全文
摘要:题意:有一壶水和两个杯子,每次只能从壶里往杯子里倒水 杯子中的水量是可见的,壶中的水量是不可见的 但是可以知道壶里的水倒完了没有 开始壶中的水量在 中,要求将水到入杯中 并且最后壶中的水量不超过 1,两个杯子的水量差不超过 1思路:首先明确,由于我不知道壶里到底有多...
阅读全文
摘要:题意:n个点 m条无向边的图,找一个欧拉通路/回路使得这个路径所有结点的异或值最大。思路:首先了解欧拉路欧拉路 。先判断是否有欧拉路径或欧拉回路(入度为奇数的点是2或0),然后画画图可以看出每个点当(度数+1)/2是奇数,则有贡献,否则贡献为0(自己异或自己等于...
阅读全文
摘要:题意:剪刀石头布每个人都需要有50%的胜率现在给出n个操作,问这n个操作能否使得每个人的胜率为50%方法:要想每一个手势攻防都一样,必须n-1个手势有一半攻击自己,有一半防守自己,显然n-1要是偶数,所以当n 是奇数是成立的,否则不成立!#includeusing n...
阅读全文
摘要:题意:给出n,计算1/i*i (1using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=1000010;const double eps=1e-8;const doub...
阅读全文
摘要:题意:给出一个整数n, 找出一个大于等于n的最小整数m, 使得m可以表示为2^a*3^b*5^c*7^d思路:四层for循环枚举+打表,最后lower_bound()。注意:这里最好用printf,用cout计蒜客上交TLE了……不知道为什么我写了cout.tie(0...
阅读全文
摘要:大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的...
阅读全文
摘要:#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing ...
阅读全文
摘要:题意:有N条绳子,他们的长度分别为Li,如果从它们中切割出k条长度相同的绳子的话,这K条绳子每条最大能有多长?方法:二分。注意:题目要求保留两位小数且不进位,导致我WA无数次,利用floor(ans*100) /100即可。#include#include#inclu...
阅读全文
摘要:典型的最大化最小值问题,二分解决。注意:肯定有解,所以最小的解就是数组中最小的值。二分的时候注意l和r的取值,不然会WA或出不来结果,在这里l=mid+1,r=mid。#includeusing namespace std;#define inf 0x3f3f3f3f...
阅读全文
摘要:Problem Description 度度熊最近似乎在研究图论。给定一个有 N 个点 (vertex) 以及 M 条边 (edge) 的无向简单图 (undirected simple graph),此图中保证没有任何圈 (cycle) 存在。现在你可以对此图依序进...
阅读全文
摘要:int pre[maxn];void init(){ for(int i=0;i<maxn;i++) { pre[i]=i; }}int Find(int x){ int p=x,tmp; while(x!=pre[x]) ...
阅读全文
摘要:题目大意:有一个 M * N 的格子,每个格子可以翻转正反面,它们有一面是黑色,另一面是白色。黑色翻转之后变成白色,白色翻转之后则变成黑色。 游戏要做的是把所有的格子翻转为白色。不过因为牛蹄很大,所以每次翻转一个格子,与它上下左右相邻接的格子也会被翻转。 求用最小的步...
阅读全文
摘要:运算方法有六种:& 与运算 | 或运算 ^ 异或运算 ~ 非运算(求补) >> 右移运算 10110) | x >> 1在最后加一个0 | (101101->1011010) | x 1011011) | x 101101) | x | 1把最后一位变成0 | (10...
阅读全文
摘要:思路:和一般的bfs没有什么区别,主要是把每一个到达'@'的步数分别记录下来,需要注意Y出发不能经过M点,M出发也不能经过Y点。#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long long...
阅读全文
摘要:水题。#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=1e-8;const double PI =...
阅读全文
摘要:思路:题目要求输出每一次走的点,所以我的想法是给每个结点再加个id和fro代表他现在是第几个遍历的和他的根节点是谁,接下来就是常规的bfs了,把答案压到栈里面,最后输出。#include#include#include#include#include#include#...
阅读全文
摘要:A:dfs水题https://blog.csdn.net/Dilly__dally/article/details/81490710B:三维bfs水题https://blog.csdn.net/Dilly__dally/article/details/81517553...
阅读全文
摘要:思路:用队列存储“打的表”,即从1开始,1的10倍满足条件,1的10倍+1也满足条件,判断队头是否%n==0就行。#include#include#include#include#include#include#include#include#include#incl...
阅读全文
摘要:虽然是水题,但要注意数组的越界和vis的使用,不然就RE、TLE#include#include#include#include#include#include#include#include#include#include#include#include#inclu...
阅读全文
摘要:水题。 #include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing name...
阅读全文
摘要:水题。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing names...
阅读全文
摘要:#include#includeint map[27][27],indegree[27],q[27];int TopoSort(int n) //拓扑排序{ int c=0,temp[27],loc,m,flag=1,i,j; ////flag=1:有序 f...
阅读全文
摘要:题意:第一行给定变量,第二行给定给定约束,每个约束包含两个变量, x y表示x>ch) ……#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200...
阅读全文
摘要:题意:一笔画画出圣诞老人的房子,并按字典序输出。思路:从1点DFS遍历图(八条边需要9画)#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=2000...
阅读全文
摘要:题意:从一个素数变到另一个素数,中途只能改变一个位上的数而且改变后还是素数。方法:先打素数表,再BFS#include#include#include#include#include#include#include#include#include#include#in...
阅读全文
摘要:算法思想:在一个有向图中,我们一定可以找到这样一个合理顺序,使得我们只需要按照这个顺序进行dfs遍历,那么每一次的dfs就可以使我们得到一个scc。合理顺序参考https://www.cnblogs.com/nullzx/p/6437926.html经过简单的分析我们...
阅读全文
摘要:#include #include #include int mp[100][100];int visit[100];void dfs(int x,int n){ int i; visit[x]=1; for(i=1;i<=n;i++) { ...
阅读全文
摘要:算法:dfn【u】为dfs遍历中u是第几个被访问到的。low【u】为该dfs u可以到达的访问时间最早的祖先的深度。首先,对图进行一次dfs遍历,可以得到每个点的dfn和low。考察所有点u和它在dfs树中的儿子节点s1,s2……sk。(1)如果对于某个si,满足lo...
阅读全文

浙公网安备 33010602011771号