ACM_暴力
luke2834
A junior researcher~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
枚举排列模板
对A(k , p)种状态进行枚举大致思路,递归始终让序列左半部分是以排列好的,右半部分递归的去排列。数组中元素可以重复。以下代码是状态不要求按字典序输出的//A(k,p)//排列保存在全局数组a中,a初始不要求排序 void dfs(int dep,int k,int p){ if(dep == k) { //do something go(); return; }原创 2015-01-25 19:30:33 · 641 阅读 · 0 评论 -
poj 3009 dfs
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <string>using namespace std;const int maxn = 25;const int inf = 0x3f3f3f3f;int n,m;int mark[m原创 2017-07-11 21:10:31 · 333 阅读 · 0 评论 -
POJ 2718 暴力
题意给你一个0-9的串,挑其中一部分的数字排列成一个数,其它数字排列成一个数(两个数都不能有前导0)问你这两个数差的绝对值最小是多少思路n很小,2-10,数字不会重复出现,直接暴力枚举即可注意,不能复杂度过高,稍微有些技巧的就是两个数的位数应该尽可能接近,即都是n/2最好所以枚举全排列,计算下在n/2的位置前后两个数差是几即可#include <iostream>#include <原创 2017-07-11 08:48:43 · 311 阅读 · 0 评论 -
Codeforces 617D Polyline (Round #340 (Div. 2) D题)
题意给你三个点,你可以画一些水平、竖直的折线来穿过这些点,线不能交叉,自交问你,画完后的图形,最少有几条边思路这题就是个特判的题。。。如果三个点,有一维坐标都相等,则是1如果两个点,有一维坐标都相等,而另一个点的另一维坐标 < 这两个点另一维坐标的小者或者>这两个点另一坐标的大者则是2否者是3实现#include <bits/stdc++.h>using namespace std原创 2016-01-27 17:34:08 · 526 阅读 · 0 评论 -
Codeforces 617C Watering Flowers (Round #340 (Div. 2) C题) nlogn算法
题意给你平面上n个点,和2个圆心点,问你最短的两个半径平方和,使得所有点都能至少在其中一个圆内或圆上思路 这题暴力就可解了,对一个圆试它的半径,距离可以到第i个点,这样会覆盖一些点,然后算另一个圆半径,即另一个圆要能覆盖到其它所有点这样O(n ^ 2)即可解但是单这么做实现会麻烦一些,我们可以先把点按照到第一个圆心点的距离排序,这样我们遍历到第i个点时可知,此时前i个点会被第一个圆包住,后原创 2016-01-27 17:27:35 · 502 阅读 · 0 评论 -
Codeforces Round #301 (Div. 2) C题 广搜
题意 在矩阵里走迷宫,和普通迷宫不同的是,走过的路变为墙,且终点是墙的时候才算抵达。思路 就是广搜,和普通迷宫几乎一样..#include #include #include #include #include #include #include #include #include #include #include #include using namespace原创 2015-05-01 02:56:49 · 533 阅读 · 0 评论 -
hdu5025救唐僧 优先队列实现的BFS再加点状压 网赛题~
题意 在一个矩阵里,救唐僧,要求在其中收集够钥匙,才能救。另外,一些cell中有蛇,通过这样的房间要杀掉蛇并多花一分钟,最后问你最少花费多产时间。思路 做这题,本来想要练练A*的,结果h函数设计的还是不够好,WA了,没办法,还是让h函数为0过了...之后还得想再设计一些h函数试试~ 这题中蛇不超过5只,用状态压缩一发就行了~其它的就是有些琐碎实现的时候要多注意一下就好了~#incl原创 2015-03-17 22:18:17 · 487 阅读 · 0 评论 -
UVa10976 - Fractions Again?!
题意 给k,找到满足1/k = 1/x + 1/y 的x和y(要求x>=y)思路 利用式子推导出x = k*y/(y-k),由于x>=y,有y k*y/(y-k),可以推出k #include #include #include #include #include #include using namespace std;typedef pair PII;vector a原创 2015-01-25 22:46:02 · 984 阅读 · 0 评论 -
UVa725 Division
题意 给n,要求给出所有满足条件的0~9的排列,条件是前5个数字组成的数除后5数字组成的数等于n思路 主要要注意到枚举后5个数字即可,这样通过乘n,可以得到被除数,再判断被除数满足条件与否即可。这种思想在有等式出现的题中很常见,有x个未知数满足一个等式,这样只需枚举x-1个即可,另一个通过等式计算得来。枚举后5个数字方法也很多,可以直接暴力枚举10000~99999的数再判断满足条件否,这原创 2015-01-25 19:33:05 · 593 阅读 · 0 评论 -
UVa524 - Prime Ring Problem 枚举排列模板题
题意 给你n,用1~n排列成环,保证相邻两数之和为素数思路 保证第一个数是1,然后用按序生成排列模板,每次先判断,满足条件否,不满足则剪枝。原创 2015-01-27 19:56:26 · 489 阅读 · 0 评论 -
UVa129 - Krypton Factor 不错的DFS入门题
题意 一个字符串被称为容易串,指其中有相邻的两个相同的子串,反之为困难串。问你由前L个字符组成的字典序第k小的困难串。保证答案串长不超过80。思路 难点在于如何判断当前串是否为困难串,整串比较O(n^3),但如果用dfs,每次只需要判断新加入的字母会不会使字符串为困难串即可,通过枚举不同长度的后缀即可,复杂度O(n^2)。是容易串就做可行性剪枝。感觉这题非常适合dfs,整个就是为其设计的感原创 2015-01-29 23:59:26 · 765 阅读 · 0 评论 -
UVa140 - Bandwidth DFS最优性剪枝题
题意 一个无向图,把其中点排成一个序列,在该序列中找到,任意两个有边的点之间最大的距离,作为该序列的一个value,然后找出value最小,且字典序最小的那个序列及value值思路 基本思路枚举排列,但是其中可以进行最优性剪枝,很类似于阿尔法-贝塔剪枝。#include #include #include #include #include using namespace std原创 2015-01-30 00:14:39 · 632 阅读 · 0 评论 -
UVa11059 Maximum Product
题意 求最大连续子序列的积思路 本题可以暴力枚举起始和终止位置,O(n^2),不过为了练习,写了一个O(n)的算法,总体来算法不过简练大致思路,就是正反两个方向遍历数组,预处理对所有负数的位置,保存在下一个0前还有几个负数,在上一个0后还有几个负数,然后双向遍历,遇到正数,更新sum,遇到0,清空sum,更新max,遇到负数,要判断若当前sum是负数或者该负数后,在下一个0前还有负数,则更原创 2015-01-25 22:14:14 · 592 阅读 · 0 评论 -
POJ 1142 分解质因数练习
题意 史密斯数定义:一个数按十进制位拆分求和 == 这个数分解质因数后,所有质因数十进制位拆分求和的和,但该数不能使质数。然后给你一个数n,问你比它大的最小史密斯数是几。思路 纯暴力即可,但要注意排除质数,并且是大于n不是大于等于n。#include #include #include #include #include #include #include #includ原创 2015-01-23 16:39:13 · 718 阅读 · 0 评论 -
HDU-5135 广州现场赛题
题意 给你n个边,让你自由组合三角形,让总面积最大,边不能重用,不能拼接。总边数不超过12,边长不超过100。 这题说来都是泪...这题数据很水,其实直接贪心就能过...我们比赛的时候也想了下贪心,不过一想不对啊,就没尝试...结果暴力写碎了。。。算了,伤心事不提了.... 思路1 暴力枚举,再用海伦公式,状态数C(12,3)*C(9,3)*C(6,3)*C(3,3),这样状态其实有重原创 2015-01-27 13:03:33 · 615 阅读 · 0 评论 -
枚举组合模板
基本思路,是保存之前已经组合中,用到的最后一个下标位置,从该位置后来枚举,递归的完成组合。若给出的初始序列有序,则组合给出的是按字典序的在枚举的部分有一个小的剪枝。//pre初始给0,求C(p,k),sel保存组合好的内容,yuan保存原数组 void zuHe(int pre,int p,int k,vector& sel,vector& yuan){ //sel.size(原创 2015-01-26 18:19:04 · 954 阅读 · 0 评论 -
poj 3669 bfs
#include <queue>#include <cstdio>#include <algorithm>#include <iostream>#include <cmath>#include <cstring>using namespace std;const int maxn = 305;const int inf = 0x3f3f3f3f;int mark[maxn][max原创 2017-07-12 21:25:10 · 369 阅读 · 0 评论
分享