SGU 125 Shtirlits 搜索+可行性剪枝】的更多相关文章

500ms时限406ms水过…… 直接枚举肯定超时,需要剪枝. 枚举每个格子的元素,检查其左上角和正上方格子是否满足条件,若不满足不必再向下搜索. 在 这里 看到一个更好的方法: 枚举每个格子是哪个相邻的比它大.然后DFS看看有没有环.这样的复杂度只有(2^5*3^5). 不过我没写出来……而且也不太清楚这个时间复杂度是怎么算的……求指点! #include <cstdio> #include <cstring> #include <cstdlib> , , , };…
125. Shtirlits time limit per test: 0.25 sec. memory limit per test: 4096 KB There is a checkered field of size N x N cells (1 Ј N Ј 3). Each cell designates the territory of a state (i.e. N2 states). Each state has an army. Let A [i, j] be the numbe…
题目大意:B[i, j]表示周围有多少个比它大的数,能否用B数组构造出一个A数组,如果不能输出“NO SOLUTION”. 分析:数据规模比较小,可以直接暴力枚举每个点的值. 代码如下: #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> using namespace std; ; ][][] = {{},{},{{},{,},{,},{,},{,}}, {{}…
时间限制:0.25s 空间限制:4M 题意: 有N*N的矩阵(n<=3),对所有i,j<=n有G[i][j]<=9,定义f[i][j]为G[i][j]四周大于它的数的个数(F[i][j]<=4), 现在 给出n和F[i][j],输出一种可形的G. Sample Input 3 1 2 1 1 2 1 1 1 0 Sample Output 1 2 3 1 4 5 1 6 7 Solution:                  观察给出的F矩阵,以样例为例  1  2  1  1…
小木棍(最优性剪枝.可行性剪枝) 一.问题描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,已知每段的长都不超过 50 .现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度.给出每段小木棍的长度,编程帮他找出原始最短木棍的可能长度 二.输入格式 第一行为一个整合 N,表示砍过以后的小木棍总数,其中 \(N\leq 60\) 第二行为 N 个用空格隔开的整数,表示 N 根小木棍的长度 三.输出格式 输出文件仅一行,表示要求的原始最短木棍的可能长度 四.样例输…
LINK:智破连环阵 考试的时候 题意没理解清楚 题目是指一个炸弹爆炸时间结束后再放另一个炸弹 而放完一个炸弹紧接另一个炸弹.题目中存在然后二字. 这样我们可以发现某个炸弹只会炸连续的一段. 但是 由于点的坐标虽然只在第一象限 炸弹也在第一象限 不过简单的设出几个状态可以发现 是不可行的. 状压也不行.考虑贪心但是还是要要考虑坐标以及序号的问题 所以很难贪出正确答案. 无奈之下只能选择搜索了 一种比较简单的搜索方式还是搜出把序列分段. 可以发现这样复杂度最坏是2^n的. 求出分段之后我们还需要考…
Description In mathematics, the four color theorem, or the four color map theorem, states that, given any separation of a plane into contiguous regions, producing a figure called a map, no more than four colors are required to color the regions of th…
Distinct Paths 题目链接:http://codeforces.com/problemset/problem/293/B 数据范围:略. 题解: 带搜索的剪枝.... 想不到吧..... 但是剪枝也比较简单,就是能想到的剪枝都加上能过的那种搜索题. 代码: #include <bits/stdc++.h> #define setIO(s) freopen(s".in", "r", stdin), freopen(s".out&quo…
题目链接:Rake It In 比赛链接:ICPC Asia Nanning 2017 Description The designers have come up with a new simple game called "Rake It In". Two players, Alice and Bob, initially select an integer k and initialize a score indicator. An \(4 \times 4\) board is…
主要是剪枝的问题,见代码,讲的很详细 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; inline int read(){ char chr = getchar(); int f = 1,ans = 0; while(!isdigit(chr)) {if(chr == '-') f = -1;chr = getchar()…