HDU5135 dfs搜索 枚举种数】的更多相关文章

Little Zu Chongzhi's Triangles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)Total Submission(s): 2195    Accepted Submission(s): 1262 Problem Description Zu Chongzhi (429–500) was a prominent Chinese mathematic…
2018激光样式 #include<bits/stdc++.h> using namespace std; /* dfs(i) 第i个激光机器 有两种选择:vis[i-1] == 0 时 可选,无论vis[i-1]为何值都不选 vis[i] 回溯标记是否用过 */ int n = 30; int vis[35]; int ans = 0; int dp[35]; void dfs(int x){ if(x == n+1){ ans++; return; } dfs(x+1); //这个点不开激…
DFS + 回溯专题 17. 电话号码的字母组合 迭代也可以实现搜索 循环改写dfs搜索的写法: 例如 C++写法 class Solution { public: vector<string> letterCombinations(string digits) { string alp[8] = {"abc","def","ghi","jkl","mno","pqrs",&…
Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8435    Accepted Submission(s): 5248 Problem Description There is a rectangular room, covered with square tiles. Each tile is colore…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1011 题目大意:在一棵树上,给你起始状态,问你能否到达终止状态. 给了树的前序遍历序. 直接dfs搜索. #include <cstdio> #include <cstdlib> #include <string> #include <iostream> #include <cstring> #include &…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3 题目大意:给你a,b两个数,问当b由约数1到100组成时,a能否由其它约数也在1到100的组成 就是dfs先枚举b的乘积组合,再看a有没有组合能够乘出来.. 代码: #include <cstdio> #include <cstdlib> #include <string> #include <iostream> #includ…
  HDU 1312:Red and Black Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u   Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. F…
hihocoder 1050 树中的最长路(动态规划,dfs搜索) Description 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树--好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不同的数字,并且这…
Balloons Time Limit: 1000MS Memory limit: 65536K 题目描述 Both Saya and Kudo like balloons. One day, they heard that in the central park, there will be thousands of people fly balloons to pattern a big image.They were very interested about this event, an…
历届试题 剪格子 时间限制:1.0s   内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |* || +--****--+ ||* | *******--+ | | | | +--+--+--+ 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等. 如果存在多种解答,请输出包含左上角格子的那个区域包含的格子…
素数环: 输入整数1,2,3,4,5,···,n组成一个环,使得相邻两个整数之和均为素数. 输出时从整数1开始逆时针排列.同一个环应恰好输出一次.n<=16. Sample: input: 6 output: 1 4 3 2 5 6 1 6 5 2 3 4 使用DFS搜索解释:素数环的第一个数为1,则选定第一个数为1,然后向下遍历所有数据,能够和前面一个数据组合相加成为素数的数就被数组记录下来. 知道判断到最后一个数字,然后检查它和第一个数相加是否为素数,若是就输出数组中记录的答案,不是就从头开…
题目地址:http://poj.org/problem?id=3083 Sample Input 2 8 8 ######## #......# #.####.# #.####.# #.####.# #.####.# #...#..# #S#E#### 9 5 ######### #.#.#.#.# S.......E #.#.#.#.# ######### Sample Output 37 5 5 17 17 9题目分析:T组数据,每组都会有一个起点S,一个终点E. 分别输出:左边优先搜索到E…
链接:http://codeforces.com/problemset/problem/570/D D. Tree Requests time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Roman planted a tree consisting of n vertices. Each vertex contains a low…
擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 小明十分聪明.并且十分擅长排列计算.比方给小明一个数字5,他能立马给出1-5按字典序的全排列,假设你想为难他,在这5个数字中选出几个数字让他继续全排列.那么你就错了,他相同的非常擅长.如今须要你写一个程序来验证擅长排列的小明究竟对不正确. 输入 第一行输入整数N(1<N<10)表示多少组測试数据, 每组測试数据第一行两个整数 n m (1<n<9,0<m<=n) 输出 在1…
其实这题我已经写过两遍了,但都是在看过算法笔记的情况下写的.方法不难,只要能想出来. 找到一个项数为k,每项为p次幂,和为n,并且在有多个结果的情况下要求数字之和最大的一个多项式.如果数字之和相等.还要要求下标最大. 因为曾经看过答案,很多处理方法都有印象.这题的思维的确巧妙,如果能好好理解,就能掌握隐式图dfs搜索的内核. 对于每个dfs递归搜索函数,有两个后继:①选择这个数. ②不选这个数. #include <stdio.h> #include <memory.h> #inc…
题意转载自https://www.cnblogs.com/blumia/p/poj3279.html 题目属性:DFS 相关题目:poj3276 题目原文:[desc]Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows in which they manipulate an…
题目大意:给你一个m*n的矩阵,里面有两种符号,一种是 @ 表示这个位置有油田,另一种是 * 表示这个位置没有油田,现在规定相邻的任意块油田只算一块油田,这里的相邻包括上下左右以及斜的的四个方向相邻的位置.要你求出一共有多少块油田. 解题报告:用dfs,我的做法是首先在输入的时候将每个有油田的位置标记为1,否则标记为0,然后枚举每一个点,如果这个点有油田,则以这个点为起点,像周围的八个方向搜索,搜到了相邻的点就标记为2,当然这里也可以标记为0,只要是将已经搜过的点标记掉就是了,当dfs退出到ma…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1008 题目大意:给你n*n的矩阵,每个格子里有4个三角形,分别是上右下左,每个三角形里面标记了数字,问你能否通过移动这n*n个格子,使得相邻两个三角形具有相同的数字? dfs暴搜,dfs(x,y)代表当前要放(x,y)这个位置. 然后枚举给定的每个格子. 如果说可以放,就dfs下一个格子. 这一道题需要把相同的格子压缩起来,也就是说为了节省时间,可以记录相同的格…
简单搜索 练习一下回溯 #include <iostream> #include <cstdio> #include <cstring> #include <sstream> #include <string> #include <algorithm> #include <list> #include <map> #include <vector> #include <queue> #i…
本文出自   http://blog.csdn.net/shuangde800 -------------------------------------------------------------------------------------- 题目链接:poj-3140 题目 给n个节点的带权树,删掉其中一边,就会变成两颗子树,    求删去某条边使得这这两颗子树的权值之差的绝对值最小. 思路 直接dfs一次,计算所有子树的权值总和tot[i]    如果删掉一条边(v, fa),fa…
标题:倍数问题 [题目描述]众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数.但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼.现在小葱给了你 n 个数,希望你从这 n 个数中找到三个数,使得这三个数的和是 K 的倍数,且这个和最大.数据保证一定有解. [输入格式]从标准输入读入数据. 第一行包括 2 个正整数 n, K.第二行 n 个正整数,代表给定的 n 个数. [输出格式]输出到标准输出.输出一行一个整数代表所求的和. [样例入]4 31 2 3 4 [样例输出]…
问题描述 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n 当为-1 -1时表示输入结束. 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, .…
C. Ilya And The Tree 题意 给一棵树求每个点到根的路上允许修改一个为0,gcd的最大值. 题解 g是从根到当前点允许修改的最大gcd,gs为不修改的最大gcd.枚举当前点的因子,更新路径上每个因子出现次数,回溯时减去.并用这个因子更新答案.另外当前点修改为0时,还要用父节点的gs更新答案.复杂度\(O(n\sqrt n)\) 代码 const int N=201000; int n; int a[N]; int u,v; VI e[N]; int g[N],gs[N]; in…
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <vector> #include <algorithm> #define N 100000+2 using namespace std; //无根树转有根树算法 /* 算法分析:所谓无根树,就是根节点任意的树.我们可以给它确定一个根节点. 我们可以假定认为某一个节点为根节点,然后从该节点开始进行dfs或者bfs…
https://vjudge.net/problem/UVA-818 题意:有n个圆环,其中有一些已经扣在了一起.现在需要打开尽量少的圆环,使得所有圆环可以组成一条链,例如,有5个圆环,1-2,2-3,4-5,则需要打开一个圆环,如圆环4,然   后用它穿过圆环3和圆环5后再次闭合4,就可以形成一条链:1-2-3-4-5. 思路:从n个圆环中任意选择圆环,这就是枚举子集.所以这道题目可以用二进制枚举来做. 那么如何判断当前打开圆环是可行的呢?在去除打开的圆环后需要判断: ①:每个圆环的分支数都必…
#include<iostream> #include<cstring> using namespace std; int a[105][105]; int d[8][2]={0,1,0,-1,1,0,-1,0,-1,-1,-1,1,1,-1,1,1}; //八个方向!方向向量. void dfs(int x,int y) { a[x][y]=-1; //相连的无效 for(int i=0;i<8;i++) { if(a[x+d[i][0]][y+d[i][1]]==1) d…
题目 有一个含有N个未知数的方程如下: x1^x2^...^xn= V,给定N,V,再给定正整数a1,a2,...an满足1≤ai≤9且∏Ni=1(ai+1)  ≤ 32768,请输出所有满足0≤xi≤ai的解. 思路 枚举每个xi的取值,显然,写成N个循环肯定可以,但不如递归简洁. 复杂度 递归的写法复杂度不那么明显,其实和多重循环的复杂度一样,共有∏Ni=1(ai+1)种状态,每种状态输出结果,所以为O(N x ∏Ni=1(ai+1)). 代码实现 #include<stdio.h> #i…
题目: 给出一个树,这棵树上每个结点每一秒都会结出一颗果实,果实每经过一秒就会落向下一个结点,如果一个结点在同一时刻上的果实两两抵消,问最后在根节点处一共有多少个果实. 思路: dfs直接搜索统计这棵树的每一层上有多少个果实就可以了.如果是奇数个ans++,偶数个不作处理. 代码: #include <bits/stdc++.h> #include <cstdio> #include <cstring> #include <iostream> #includ…
原题地址 这道题数据据说比較水,除了第一组数据是Yes以外.其余都是No.非常多人抓住这点就水过了.当然了,我认为那样过了也没什么意思.刷oj刷的是质量不是数量. 这道题从题目上来看是个不错的 搜索题,解法多种多样,有 dfs.bfs,并查集,dijkstra算法都能解决. 题目分析: 题目中给了非常多字符串.可是关心的仅仅是字符串的第一个和最后一个字符.咋看起来.貌似是要建立一个个字符间的"映射",事实上不然,这事实上能够转化为一张26*26的有向图. 有最多26个结点,原先的字符间…
题意:给定一个n*m的矩阵,*表示陆地, . 表示水,一些连通的水且不在边界表示湖,让你填最少的陆地使得图中湖剩下恰好为k. 析:很简单的一个搜索题,搜两次,第一次把每个湖的位置和连通块的数量记下来,第二次去填陆地,选少的进行填. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdli…