Square Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 9   Accepted Submission(s) : 4 Problem Description Given a set of sticks of various lengths, is it possible to join them end-to-end to form…
Square Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11151    Accepted Submission(s): 3588 Problem Description Given a set of sticks of various lengths, is it possible to join them end-to-en…
Square Problem Description Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square? Input The first line of input contains N, the number of test cases. Each test case begins with an integer 4 <= M <= 20, the…
Square Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 20   Accepted Submission(s) : 12 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Given a set of sticks of vari…
Square Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 88   Accepted Submission(s) : 37 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Given a set of sticks of vari…
题目: Square Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15102    Accepted Submission(s): 4751 Problem Description Given a set of sticks of various lengths, is it possible to join them end-t…
题目链接:  http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意:给定起点和终点,问刚好在t步时能否到达终点. 解题思路: 4个剪枝. ①dep>t剪枝 ②搜到一个解后剪枝 ③当前走到终点最少步数>满足条件还需要走的步数剪枝(关键) ③奇偶剪枝(关键):当前走到终点步数的奇偶性应该与满足条件还需要走的步数奇偶性一致. 其中三四两步放在一步中写:remain=abs(x-ex)+abs(y-ey)-abs(dep-t) 奇偶剪枝的原理:abs(…
http://poj.org/problem?id=3373 Changing Digits Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 2719   Accepted: 863 Description Given two positive integers n and k, you are asked to generate a new integer, say m, by changing some (maybe…
题目大意:给出一个方格矩阵,矩阵中有数字0~9,任选一个格子为起点,将走过的数字连起来构成一个数,找出最大的那个数,每个格子只能走一次. 题目分析:DFS.剪枝方案:在当前的处境下,找出所有还能到达的点的个数,若当前数字的长度加上个数仍小于目前最优答案的长度,则剪去:若长度相等,则将所有还能到达的数字按从大到小排序后连到当前数字上,如果还比目前最优解小,则减去.找出所有还能到达的点的过程用BFS实现. #pragma comment(linker, "/STACK:1024000000,1024…
需要剪枝否则会超时,然后就是基本的深搜了 #include<cstdio> #include<stdio.h> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<queue> #define INF 0x3f3f3f3…
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805364711604224 题意: 给定一个数n,要求从1~n中找出k个数,使得这些数的p次方之和等于n 思路: 因为n为400,所以dfs加剪枝[本来还在想dp来着] 他要求输出的方案是数字之和最大的,如果之和相等要输出字典序较大的. 所以还需维护一个数字之和. 一个剪枝的方法是从大到小进行dfs,后面被选的数一定比前面被选的要小,这里不限制的话显然会出现重复.…
<题目链接> 题目大意:一个迷宫,给定一个起点和终点,以及一些障碍物,所有的点走过一次后就不能再走(该点会下陷).现在问你,是否能从起点在时间恰好为t的时候走到终点. 解题分析:本题恰好要在某一时刻到达,所以需要用到可行性剪枝中的奇偶剪枝,如果在某一点,它所剩的步数与到终点的最短距离之差是偶数,说明这种情况有可能恰好在规定时刻到达终点,否则不可能,将其剪去. #include <bits/stdc++.h> using namespace std; ][]; ][]; int n,…
题目:https://www.luogu.org/problemnew/show/P1074 题意: 数独的分数如下.一个数独的总分数就是权值乘所填数字之和. 现在给一个未完成的数独,问分数最高的数独的总分. 思路: 感觉dfs就是要学会各种剪枝.要敢于剪枝. 最基本的思路就是记下要填的位置和每行每列每个方块填数的情况,然后每个空格都1~9试过来.填完了计算分数. 但是如果仅仅是这样的话还是不行,只有75分TLE. 我们做数独的时候一般都是找零最少的某行某列或某个方格开始填,因为这样的可能性比较…
题目:https://www.luogu.org/problemnew/show/P1433 题意: 给定n个坐标,要求从(0,0)开始走遍所有点,最少经过的路程. 思路: 刚开始想像数字三角形一样适用next_permutation,枚举坐标的顺序,一旦出现距离比当前最优解要差时就sort剪枝. 这里sort的起始和结束要注意一下,和那道题不一样.开始应该是i+1 但是还是有一个点会TLE.毕竟sort了一下还是会慢一点...? 所以还是老老实实dfs吧.道理都是一样的,搜索走的下标排列,一旦…
http://poj.org/problem?id=1011 题意:若干根棍子被截成小段的木棒,现在给你这些木棒,问最短可以拼出的棍子长度. 题解:搜索,dfs(r,m) 二个参数分别代表还剩r个木棒,当前棍子还剩m长度. 从dfs(N,L)搜到dfs(0,0)停止. 棍子从大到小排序 从小到大枚举L 四个剪枝 0.考虑木棒大多都一样长的特殊情况. 多余的枚举: “如果某个木棒在当前棍子不能用,那么之后必定会用到” 1.第一个木棒回溯时(由于后续无法继续拼接导致不能用),后面总归会还是要把它作…
Square Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8900    Accepted Submission(s): 2893 Problem Description Given a set of sticks of various lengths, is it possible to join them end-to-end…
The partial sum problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 One day,Tom's girlfriend give him an array A which contains N integers and asked him:Can you choose some integers from the N integers and the sum of them is equal to K. 输入 There are mul…
学了一种爆搜版+剪枝的容斥方法,即类似数位dp时按位进行容斥,同时需要在搜索过程中进行剪枝 /* 容斥原理,先在打出的表里筛掉所有倍数,然后用容斥原理+1个的倍数-2个lcm的倍数+3个lcm的倍数... 注意剪枝,判断防止爆long long */ #include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 200005 ll l,r,ans; ll a[maxn],m,b[maxn],n; v…
韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有 1 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额. 输入格式: 输入第一行给出两个正整数:N(≤)是硬币的总个数,M(≤)是韩梅梅要付的款额.第二行给出 N 枚硬币的正整数面值.数字间以空格分隔. 输出格式: 在一行中输出硬币的面值 V​1​​≤V​2​​≤⋯≤V​k​​,满足条件 ..数字间以 1 个空格分隔,行首尾不得…
题目链接 题目大意: 题意就是输入棍子的数量和每根棍子的长度,看能不能拼成正方形. #include <bits/stdc++.h> using namespace std; int n,m,sum,cur; ],vis[]; bool fp; bool mycmp(int a,int b){ return a>b; } void dfs(int s,int len,int num){ //当前位置,目前长度,成功条数 ){ fp=true;return; } ,,num+); //如果…
http://acm.hdu.edu.cn/showproblem.php?pid=1979 Fill the blanks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 373    Accepted Submission(s): 155 Problem Description There is a matrix of 4*4, yo…
题目链接 给一个迷宫,问从起点到终点存不存在一条长度为T的路径. ----------------------------------------------------------------------------- 判断(T-当前步数)的奇偶性 和 (终点-当前位置)距离的奇偶性是否相同. #include <set> #include <map> #include <stack> #include <queue> #include <cmath…
问题描述: 给定一个 N * M的迷宫+起点+终点 ,迷宫中有一些障碍无法穿过,问能否不重复也不停留地在刚好一共走 t 步出迷宫. 先上结论: 在理想情况下,s到e需要的最小步数为m=|ex-sx|+|ey-sy|   即abs(ex-sx)+abs(ey-sy) 当最小步数m与t同为奇数,或同为偶数时,才有可能从s经过t步,到达e.…
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #define max(a, b)(a > b ? a : b) #define N 30 int a[N], vis[N], n, k, f; void DFS(int s, int m, int d)//s为搜索起点 m为已组成的正方体的边数 d当前组成木棍的长度(正方体的一条边可由多个木棍组成) { i…
695. 岛屿的最大面积 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的二维数组中最大的岛屿面积.(如果没有岛屿,则返回面积为0.) 题解 dfs/bfs. 这题dfs简练一点. 注意是先判边界再判点为1,否则可能造成数组越界. 相关 dfs用递归,bfs用队列. bfs中注意计数和置已访问的点为0是入队时做,否则会出现同一层两个点都可达一个有效点…
什么是拓扑排序? 先穿袜子再穿鞋,先当孙子再当爷.这就是拓扑排序! 拓扑排序说白了其实不太算是一种排序算法,但又像是一种排序(我是不是说了个废话qwq) 他其实是一个有向无环图(DAG, Directed Acyclic Graph的所有顶点的线性序列,该序列需要满足两个条件: 每个节点只能出现一次 若存在一条A到B到路径,则在拓扑序列中A必然出现在B前面 而有向无环图才具有拓扑排序,非DAG图则没有拓扑排序一说 先看一道拓扑排序的水题趴(>_<) UVa 10305 - Ordering T…
关于DFS心得: 1.利用结构体,记录mark和题目要求的基本属性. 2.用到递归,使用递归时注意要设置出口,即符合要求时return,注意对递归的理解,对于不同情况可能要传递不同的参数,但出口都是一样的. 3.在DFS时可以剪枝,即对明显不符合条件的情况(基本判断,比如正方形的四边一样长,三角形的两边大于第三边)直接排除,不参与递归,在剪枝的时候注意正确的剪枝.所以在DFS超时时可以考虑剪枝. 4.在递归发现不符合条件需要返回上一层的时候,要将不符合条件的元素flag消除(DFS.BFS的区别…
题目大意: George有许多长度相同的木棍,随机的将这些木棍砍成小木条,每个小木条的长度都是整数单位(长度区间[1, 50]).现在George又想把这些小木棒拼接成原始的状态,但是他忘记了原来他有多少根木棍,也忘记了木棍的长度.现在请你编写一个程序,找到最短的原始的木棍长度. 输入: 每个测试案例包含两行,第一行表示小木条的总个数(最多64根小木条),第二行表示每个小木条的长度,用空格分开.当第一行输入为零的时候表示程序结束. 输出: 对于每个测试案例输出最短的木棍长度. 解题思路: 用搜索…
题目: The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized that the bone was a trap, and he tried desperately to get ou…
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 125945    Accepted Submission(s): 33969 Problem Description The doggie found a bone in an ancient maze, which fascinated him a…