暴力——搜索
JeremyGJY
然而并没有什么好说的
展开
-
【搜索】[NOIP 2009]靶形数独
题目如下: 【NOIP2009】靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低。但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教, Z 博士拿出了他最近发明的“靶形数独”,作为这两个孩子比试的题目。靶形数独的方格同普通数独一样,在 9 格宽×9 格高的大九宫格中有 9 个 3 格宽×3 格 高的小九宫格(用粗黑色原创 2015-02-24 22:18:50 · 529 阅读 · 0 评论 -
【启发式搜索】[ZOJ1217]Eight
题目描述ScenarioThe 15-puzzle has been around for over 100 years; even if you don’t know it by that name, you’ve seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and原创 2016-01-30 19:43:56 · 858 阅读 · 0 评论 -
【暴力搜索】[NOIP 2004]虫食算
首先把每一个式子上的字母按照从右到左,从上到下的顺序存储下来,依次枚举每一个字母分别代表哪一个数字,然后每一次check一下当前的方案是否可行,只用考虑当前一列三个数字都知道了的情况,然后就是这样还有一个优化关键就是枚举数字的时候倒着枚举,具体原因我也不知道,反正就是要快一些。。。#include <cstdio>#include <cstring>#include <vector>#incl原创 2015-07-22 15:19:37 · 1390 阅读 · 0 评论 -
【动态规划】[BZOJ1037][ZJOI2008]生日聚会Party
题目描述今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party。 hidadz带着朋友们来到花园中,打算坐成一排玩游戏。为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k。很快,小朋友便找到了一种方案坐了下来开始游戏。hidadz的好朋友Susie发现,这样的就座方案其实是很多的,所以大家很快就找到了一种,那么到底有多少种呢?热爱数学的h原创 2016-02-05 13:24:07 · 1232 阅读 · 1 评论 -
【暴力搜索】【莫队算法】【贪心】[Codeforces Round #340 (Div. 2) ]题解报告
A. Elephanthttp://codeforces.com/contest/617/problem/A 完全就是贪心的裸题可以很容易的发现要走尽量多的步数才能走到最接近n的地方,然后判断是不是刚好走到n就行了#include <cstdio>int main(){ int n; scanf("%d", &n); printf("%d\n", n/5+int(n%5>原创 2016-01-25 19:59:54 · 667 阅读 · 0 评论 -
【暴力搜索】[HDU 1518]Square
先说好,我的程序速度很慢1018ms。。其实就是算出总长度除以4然后搞一下和http://blog.csdn.net/jeremygjy/article/details/47043161一样的剪枝就好了。#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <vector>usi原创 2015-07-24 16:33:33 · 480 阅读 · 0 评论 -
【暴力搜索】[HDU 1175]连连看
这倒题目我看到很多人都用的bfs或者dfs但是其实并不用啊,首先可以发现如果不拐弯,那么A点和B点一定在同一条直线上(这种情况可以不用考虑,等下讲为什么)然后如果存在拐一次的情况那么一定是A和B所在的数轴的交点(也可以不用考虑)但是如果要拐两次呢首先A和B一定形成了一个矩形(假设AB不在同一条数轴上)那么这个拐弯一定平行于这个矩形的一条边(自己想想为什么)然后每一次check枚举一下行和列就好了共线原创 2015-07-24 16:42:00 · 841 阅读 · 3 评论 -
【暴力搜索】[POJ 1011]Sticks
首先这道题目有两个非常重要的剪枝1、如果当前放的是木块的第一个那如果当前dfs不成立,那么直接返回false因为每一个木板必定属于一个块,当他放第一个的时候如果可以放其他的其实是已经固定了的了,如果当前不成立那么不存在队友可以和他一起站对。2、就是如果当前这个和前一次进行dfs的木板长度一样,就跳过。#include <cstdio>#include <cstring>#include <alg原创 2015-07-24 16:29:13 · 655 阅读 · 0 评论 -
【启发式搜索】[POJ 1077]Eight
八数码问题,用的A*解决,但是数据太强A不了。。。TLE只能在POJ上先过一发了。#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>#include <vector>#include <queue>#include <stack>#include <iostream>#include <原创 2015-07-23 15:58:22 · 645 阅读 · 0 评论 -
【图论】【启发式搜索】[POJ 2449]Remmarguts' Date
实际上就是从T到当前节点的最短路的长度,因为首先要保证h(n) <= h*(n)且h(n)尽量接近h*(n)那么直接令h(n)=h*(n)就行了,然后注意每一次判断是否到达终点的时候要在每一次取出的时候判断,因为这个时候的最短路是经过优先队列的排序的。还有就是注意下S==T的情况默认的时候S到本身的最短路肯定是0,那么我们如果要求现在的最短路那么求得就是当前的次短路,让k++就好了#include原创 2015-07-23 17:17:04 · 511 阅读 · 0 评论 -
【启发式搜索】八数码问题
首先就是f(n)=g(n)+h(n)这个h(n)就是估价函数,然后每次更新一下g(n)然后用康托展开,搞一下判重就好了。#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>#include <queue>using namespace std;const int MAXVIS = 100000原创 2015-07-23 13:37:25 · 1480 阅读 · 0 评论 -
【暴力搜索】[POJ 1186]方程的解数
实际上就是另f(Dep,Sum)f(Dep, Sum)表示当前已经算到了第i位,然后当前得到的值是SumSum的所有的方案数量,那么可以发现∑xDep−1=1Mf(Dep−1,Sum−kDep×xPDepDep)=f(Dep,Sum)=∑xDep+1=1Mf(Dep+1,Sum+kDep+1×xPDep+1Dep+1)\sum_{x_{Dep-1}=1}^{M}f(Dep-1, Sum-k_{Dep原创 2015-07-22 15:15:33 · 932 阅读 · 0 评论 -
【暴力搜索】【动态规划】[NOIP 1999]邮票面值设计
其实就是枚举每一个邮票的面值记得保持严格递增,然后DP判断每一次最多能够凑出1-哪个面值的邮票,然后下限显然就是前面一张邮票的面值+1,上限是当前能够凑出的邮票的面值+1因为显然如果当前最大为nn那么如果这张面值为n+2n+2那么显然n+1n+1不能由原来的组合构成(原来只能弄出nn)那么现在新加入了一个只会变得n+2>n+1n+2>n+1那么显然n+1n+1永远凑不出来,那么显然同理不能选择大于n原创 2015-07-22 15:49:36 · 2403 阅读 · 0 评论 -
【暴力搜索】分数分解
直接搜索从0开始一直到1,然后搜索过程中只能有一个分母大于m所以,如果当前是sum,已经枚举了k个那么sum+n−km>1sum+\frac{n-k}{m}>1这种情况显然不成立,还有就是当sum+n−k+1ak−1<1sum+\frac{n-k+1}{a_{k-1}} <1实际上就是当前一直加上最大的分数还小于1,那么显然不成立。。没了#include <iostream>#include <c原创 2015-07-23 08:37:31 · 943 阅读 · 0 评论 -
【暴力搜索】[UVa 11212]Editing a Book
就是纯暴力,每次枚举起点中点和向后移动的步数,加上if(dif(now) + 3 * (u-1) > 3 * maxd) return false;优化dif(now)表示每一位的后面是否是正确的#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct State{int s[11];}原创 2015-07-21 09:38:06 · 110 阅读 · 0 评论 -
【模拟】【暴力】[COCI]排序
Mirko现在有 N个数,这些数都不大于C。他要按照这些数出现的频率来排序,使得出现频率较高的数排前面,如果两个数出现的频率相等,则先出现的排在前面。请你帮助他。 输入:第一行包含2个整数,N(1≤N≤1000),C(1≤C≤1000 000 000)。 接下来一行包含N个数,每个数不大于C。 输出:仅有一行,表示已经排好序的N个数。 输入样例1: 5 2 2 1 2 1 2原创 2015-08-25 14:25:24 · 564 阅读 · 0 评论 -
【启发式搜索】[HDU 1372]Knight Moves
其实直接用BFS好像也可以AC但是用了A*可以更快,所以为了练习A*还是用A*老老实实写吧。估价函数就是到终点的曼哈顿距离除以3因为每走一步曼哈顿距离最多减少3,而且在所有情况下h(n)<=h∗(n)h(n)<=h^*(n)所以该估价函数成立。#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#inc原创 2015-07-26 15:22:23 · 752 阅读 · 0 评论 -
【概率与期望】【暴力搜索】[Codeforces#621]题解+总结
Wet Shark and Odd and Even题目描述Today, Wet Shark is given n integers. Using any of these integers no more than once, Wet Shark wants to get maximum possible even (divisible by 2) sum. Please, calculate t原创 2016-02-01 15:28:52 · 1053 阅读 · 0 评论