CF990G-GCD Counting【dfs】】的更多相关文章

正题 题目链接:https://www.luogu.com.cn/problem/CF990G 题目大意 给出一棵有点权的树,对于每个\(k\)求有多条路径的点权\(gcd\)为\(k\) \(1\leq n\leq 2\times 10^5,1\leq a_i\leq 2\times 10^5\) 解题思路 开始以为要莫反,后来发现不用. 首先\(gcd\)之间拆倍数,设\(f_i\)表示点权都是\(i\)的倍数的路径条数,这个用一个\(vector\)存然后暴力枚举\(i\)加点每次\(df…
Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20782   Accepted: 10473 Description Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 10…
目录:1.潜伏者 [map] 2.Hankson的趣味题[数论]3.mayan游戏[dfs] 题目: 1. 潜伏者(spy.pas/c/cpp)[问题描述]R 国和S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历经艰险后,潜伏于S 国的R 国间谍小C 终于摸清了S 国军用密码的编码规则:1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所的内容均由大写字母‘A’—‘Z’构成(无空格等其他字母).2. S 国对于每个字母规定了对应的“密字”.加密的过程就…
Kattis - glitchbot [DFS] 题意 有一个机器人 刚开始在(0, 0),然后给出一个目标点,并且会给出一系列指令,但是其中会有一个指令是错误的.我们需要找出那个指令,并且改成正确的. 思路 因为数据范围比较小,我们可以把每条指令都改一下 暴力搜索一下,能不能走到目标点,如果改了,可以 那么 这就是答案 直接输出 break 掉就可以了 AC代码 #include <iostream> #include <cstdio> #include <algorith…
度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1117    Accepted Submission(s): 400 Problem Description 度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成. 现在给你一个n*m的图像,你需要分辨他究竟是0,还是1,或者两者均不是. 图像0…
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几位军官能指挥大型海战.因此,他们考虑培养一些新的海军指挥官,他们选择了“海战”游戏来帮助学习. 在这个著名的游戏中,在一个方形的盘上放置了固定数量和形状的船只,每只船却不能碰到其它的船.在这个题中,我们仅考虑船是方形的,所有的船只都是由图形组成的方形.编写程序求出该棋盘上放置的船只的总数. 输入输出…
1441:[例题2]生日蛋搞 [题目描述] 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.设从下往上数第i(1≤i≤M)层蛋糕是半径为Ri, 高度为Hi的圆柱.当i<M时,要求Ri>Ri+1且Hi>Hi+1.由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小. 令Q=Sπ,请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小. (除Q外,以上所有数据皆为正整数) [输…
1212:LETTERS [题目描述] 给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母.问最多可以经过几个字母. [输入] 第一行,输入字母矩阵行数RR和列数SS,1≤R,S≤201≤R,S≤20. 接着输出RR行SS列字母矩阵. [输出] 最多能走过的不同字母的个数. [输入样例] 3 6 HFDFFB AJHGDH DGAGEH [输出样例] 6 错误原因: 把控制4个方向的数组dx,dy里的值赋值时,把0,…
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下左右四种方式,每次只能移动一个方格.数据保证起点上没有障碍. 输入样例 输出样例 [数据规模] 1≤N,M≤5 题目描述 输入输出格式 输入格式: [输入] 第一行N.M和T,N为行,M为列,T为障碍总数.第二行起点坐标SX,SY,终点 坐标FX,FY.接下来T行,每行为障碍点的坐标. 输出格式:…
[题目大意] 农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序,约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他发现,他还需要再做一张关于另外C对奶牛的产奶率比较,才能推断出所有奶牛的产奶率排序.请帮他确定C的最小值. [思路] 对于M对关系,从产奶率高的往产奶率低的连一条有向边.对于每个节点i,它能抵达的节点的总数即是能比较得出的比它小的奶牛总数. 由于原本总共有N*(N-1)/2对关系,ans=N*(N-…
[题目大意] 给出一棵树,求三个节点使得它们两两之间的距离相等,问共有多少种可能性? [思路] 显然,这三个节点是关于一个中心点对称地辐射出去的. 枚举中心点,往它的各个子树跑Dfs.tmp[i]表示当前子树深度为i的节点个数,p1[i]表示之前的子树中(不包括当前的子树),深度为i的节点的个数,p2[i]表示到当前子树之前,选取两个不同子树的节点的方案数. 对于当前这一棵子树的深度i,显然有ans+=tmp[i]*p2[i].然后更新下次要用的p1[].p2[],p2[i]+=p1[i]*tm…
[题目大意] 给出一张地图,一旦往一个方向前进就必须一直向前,直到一下情况发生:(1)碰到了block,则停在block前,该block消失:(2)冲出了场地外:(3)到达了终点.改变方向十次以上或者冲出场外都判输,问至少几步能到达终点,无法到达输出-1. [思路] DFS,往四个方向搜索,每次不断向前直到出现如上三种情形,并根据三种情形操作,有点类似于模拟.回溯的时候犯的小错误记在代码的注释里面了. #include<iostream> #include<cstdio> #inc…
题目链接 https://www.patest.cn/contests/gplt/L3-001 思路 DP[I][J] I 表示第几个物品 J 表示多少钱 dp[i][j] 为 bool 值 表示 当前状态是否能满足 对于一个物品 有两个选择 一个是选 当 arr[i] < j 的时候 dp[i - 1][j - arr[i]] == 1 就可以选 一个是不选 就是 更新为 dp[i - 1][j] 的答案 然后最后找 满足条件的最小序列 在刚开始选的时候 将数组 按 从大到小 排列 然后最后找…
http://codeforces.com/contest/839/problem/C [AC] #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> using namespace std; ; struct edge { int to; int nxt; }e[maxn];…
http://codeforces.com/contest/812/problem/B [题意] 有一个n*m的棋盘,每个小格子有0或1两种状态,现在要把所有的1都变成0,问最少的步数是多少?初始位置在左下角,只有把下面一层的1都变成0后才可以到上一层,只有在每层的最右边和最左边可以向上走(up),否则只能左右移动(left or right).只要经过1,就可以把1变成0,只要把最后一个1,就可以立即停止操作. [Accepted] #include <iostream> #include…
Sequence Decoding 题目描述 The amino acids in proteins are classified into two types of elements, hydrophobic (nonpolar) and hydrophilic (polar). Hydrophobic and hydrophilic are denoted by H and P respectively. A protein is represented by a sequence of H…
1004 Counting Leaves (30 分) A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one test case. Each case starts with a line containing …
1115 Counting Nodes in a BST (30 分) A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than or equal to the node's key. The right subtre…
题意:给你一两个数m和n,它们分别是某对数A,B的gcd和lcm,让你求出一对使得A+B最小的A,B. n/m的所有质因子中,一定有一部分是只在A中的,另一部分是只在B中的. 于是对n/m质因子分解后,dfs枚举在A中的质因子是哪些,在B中的是哪些,然后尝试更新答案即可.(因为相等的质因子只可能同时在A中或者在B中,而long long内的数不同的质因子数不超过14个) 注意特判n==m的情况. #include<algorithm> #include<cstdio> #inclu…
http://blog.csdn.net/c20182030/article/details/52327948 1388:Lake Counting 总时间限制:   1000ms   内存限制:   65536kB 描述 Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 1…
思路还是挺好玩的 首先简单粗暴的想法是dfs然后用离散化权值树状数组维护,但是这样有个问题就是这个全局的权值树状数组里并不一定都是当前点子树里的 第一反应是改树状数组,但是显然不太现实,但是可以这样想,就是现在统计子树之前把查到的答案减去,然后再查子树最后加上查到的答案,这样相当于去重了 方便起见,离散化的时候按从大到小的顺序,这样就变成了求比当前点小的点 #include<iostream> #include<cstdio> #include<algorithm> #…
题目链接:https://vjudge.net/problem/HDU-5952 题意:有一张无向图,求结点数量为S的团的数量. 思路:如果不加一点处理直接用DFS必然会超时,因为在搜索过程中会出现遍历多次重复团的情况. tips:我们重复遍历团,更直接地过程其实是将”5 4 3 2 1“与”5 4 2 3 1“没有区分开,所以,我们建图时将无向边改为小号结点指向大号结点的有向边,并用邻接矩阵来记录两点是否存在边,然后就可以进行DFS啦!! 代码如下: #include <cstdio> #i…
题目分析: 蛮简单的一道题,对于每个数拆质因子,对于每个质因子找出最长链,在每个地方枚举一下拼接 代码: #include<bits/stdc++.h> using namespace std; ; int n,a[maxn],prime[maxn],flag[maxn],minn[maxn],num,ans; vector <int> g[maxn]; vector <pair<int,int> > mp[maxn]; vector<int>…
Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34735   Accepted: 17246 Description Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 10…
[题目链接:NYOJ-82] #include<iostream> #include<cstring> using namespace std; struct node{ int x1; int y1; int num; }arry[]; ; char Map[MAXN][MAXN]; int ac; ]; ]; void check(); void dfs(int x,int y){ if(Map[x][y] != 'X'){ switch(Map[x][y]){ case 'a…
[题目链接:NYOJ-325] 一道以我名字命名的题目,难道要我生日的时候再A? 思路:依旧深搜,但这个问题应该有一个专有名词吧,看别的博客说是 “容量为 sum/2 的背包问题”,不懂... // abs() 对应头文件 stdlib.h 返回int参数 // fabs() 对应头文件 math.h 返回double参数 #include<cstdio> #include<cstring> #include<stdlib.h> ],sum,m,n; void dfs(…
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805364711604224 题意: 给定一个数n,要求从1~n中找出k个数,使得这些数的p次方之和等于n 思路: 因为n为400,所以dfs加剪枝[本来还在想dp来着] 他要求输出的方案是数字之和最大的,如果之和相等要输出字典序较大的. 所以还需维护一个数字之和. 一个剪枝的方法是从大到小进行dfs,后面被选的数一定比前面被选的要小,这里不限制的话显然会出现重复.…
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805346063728640 题意: 给定一棵二叉搜索树的先序遍历结果,问这棵树是不是一棵红黑树. 思路: 首先需要明确二叉搜索树和红黑树的性质. 二叉搜索树的每个节点,左子树上的值都比这个节点的值小,右子树上的值都比这个节点的值大. 因此对于一棵二叉搜索树,如果给定了先序遍历结果,就可以唯一确定这棵树了. 红黑树的性质: 1.每个节点是红色或是黑色 2.根节点是黑…
2200: [Usaco2011 Jan]道路和航线 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1384  Solved: 508[Submit][Status][Discuss] Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条道路 (1 <= R <= 50,000,编号为1到R) 和P…
题面 [错解] 百年难得一见之提高考搜索了 ...怎么搞啊 相当于是S进去有一个环? tarjan? 跑个联通块,可以穿过去的连一条边? 好主意-- dfs写完了-- 哎等下? 5 5 .##.. ##### ..##S #.#.. ..#.# 那直接搜吧 写了个纯暴搜,T了 不对啊,dfs判下连通性就好了 然后复制了3×3的,记录每个小图的点对应的大图的点跑过几次,大图中的点哪些访问过,如果没访问过但小图跑过,说明有解 卡常卡进1s WA了,20分 [正解] 首先复制3×3的是错的 6 20…