随笔分类 -  暴力求解

摘要:n<=30 * m<=30 的地图上,0表示墙壁,1表示可以放箱子的空地。q<=500次询问,每次问:当空地上唯一没有放箱子的空格子在(ex,ey)时,把位于(sx,sy)的箱子移动到(tx,ty)的最小步数。 第一档:n<=10,m<=10,不加剪枝地乱搞?? 第二档:n<=30,m<=30,q< 阅读全文
posted @ 2017-11-02 10:23 Blue233333 阅读(357) 评论(0) 推荐(0)
摘要:问一副排n张,n<=23最少打几次打完,数据组数T<=100。 面向数据编程。。 前30分:乱暴力?没有顺子,把单、对子、炸弹、三张、王炸、三带一判一次即可。 前70分:状压,先预处理哪些状态能一次出完,用这些状态来转移,2^n*n*T。实际得分可能比期望的高一些?? 满分:如果不打顺子,最优策略是 阅读全文
posted @ 2017-10-30 07:16 Blue233333 阅读(331) 评论(0) 推荐(0)
摘要:给一个n*m的榨汁机的内部结构,即n*m块柱子的高度,问这个榨汁机能装多少水。n,m<=300。 突然不会搜索?????? 对每个点记外界能到达他的最大高度,每次选一个这个通往外界的最大高度最小的点来算他的贡献:如果到达一个未访问过并且高度比他通往外界最大高度要小的点就可以流。因为是从小到大考虑,且 阅读全文
posted @ 2017-10-27 07:49 Blue233333 阅读(300) 评论(0) 推荐(0)
摘要:一傻逼题调了两天。。 n<=30 * m<=30的地图,0表示可以放平台,1表示本来有平台,2表示不能走,3起点4终点,走路方式为象棋的日字,求:从起点走到终点,至少要放多少平台,以及放平台的方案数,无解-1。 方法一:其实能走直接平台的就可以直接走来走去,也就是算一个联通块。类似于tarjan,先 阅读全文
posted @ 2017-09-21 12:22 Blue233333 阅读(211) 评论(0) 推荐(0)
摘要:n<=10000天每天Ci块生产一东西,S块保存一天,每天要交Yi件东西,求最少花多少钱。 这个我都不知道归哪类了。。 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<algorithm> 5 //#i 阅读全文
posted @ 2017-09-14 19:51 Blue233333 阅读(235) 评论(0) 推荐(0)
摘要:给n<=4000000,c,a1,b1,c1,a2,b2,c2,以c为初始得到的数,每次可以把得到的某个数x进行操作f1(x)=a1*x/c1+b1,f2(x)=a2*x/c2+b2,求最后能得到的数的第n个,保证c1<a1,c2<a2。 由于两个函数都单调递增,而且得到的数也是单调递增的,所以就在 阅读全文
posted @ 2017-09-05 20:51 Blue233333 阅读(211) 评论(0) 推荐(0)
摘要:n<=10000个点(xi,yi),找到一个不同于给出的所有点的点,使得该点到所有点的曼哈顿距离最小并找出这样的点的个数。 第一眼看上去这不是中位数嘛,奇数一个点偶数一片,然后找一下这篇区域有几个不符合的点即可。不过要找出“不同于给出的点”的点,那万一中位数那个点被占了,就找它四周四个点即可。 错误 阅读全文
posted @ 2017-09-02 19:54 Blue233333 阅读(201) 评论(0) 推荐(0)
摘要:n<=20个数,求能分成两个和相同的子集的子集数。 枚举子集的子集,复杂度3^n,不可,考虑折半。在一种可行方案中,每个数的系数只会是0,-1,1,题目就是要求找和为0的两个子集拼起来,将其中一个子集取反就对应成两个值相同的方案。比如找到一个子集值为x,那么另一个子集的值应为-x,只要把-x这个子集 阅读全文
posted @ 2017-08-12 10:30 Blue233333 阅读(301) 评论(0) 推荐(0)
摘要:n<=1000而m<=10000的DAG中求从n到1的前K<=100短路,不存在输出-1。 方法一:之前写过“第二短路”,比较2次;如果是要“前K短路”的话,dis需要是一个支持查找、插入(找到一个新的第u大,u<=K,需要插入u)、删除(插入后把最后一个删除)的东西,那就Treap或者Splay乱 阅读全文
posted @ 2017-07-26 17:15 Blue233333 阅读(292) 评论(0) 推荐(0)
摘要:问n<=10000个点的中位数。 水题必有玄机!(然后浪费了半天在怎么O(n)求中位数并且最后放弃了) 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<cstdlib> 5 //#include<io 阅读全文
posted @ 2017-07-21 14:14 Blue233333 阅读(158) 评论(0) 推荐(0)
摘要:n*n的范围内放m个人,主角要在某个点朝上下左右、左上右上左下右下发射子弹,求能打到所有人有几个位置。 方法若干,总之n2过。 ps:如果n<=10^9呢? 1 #include<cstdio> 2 #include<cstdlib> 3 #include<algorithm> 4 #include 阅读全文
posted @ 2017-07-12 11:15 Blue233333 阅读(131) 评论(0) 推荐(0)