枚举
文章平均质量分 77
冷月残星
这个作者很懒,什么都没留下…
展开
-
枚举,搜索(中国麻将,uva 11210)
自己想的枚举还准备用个vector保存当前有哪些手牌然后讨论消去一些牌再递归求解。太糟糕了。事实上把麻将编码,然后开一个全局的34维向量,既方便消去,又不用传递参数,只需在递归前和递归后对全局变量进行修改即可。代码#includeusing namespace std;char id[35][10]={ "1T","2T","3T","4T","5T",原创 2016-10-22 15:10:59 · 371 阅读 · 0 评论 -
枚举,bfs(FZU 2150,Fire Game)
主要是通过这道题目思考了很多关于树,图的直径,中心等问题。以下内容跟本题解法弱相关。说到树的直径(树上最远点对),基本上就是最经典的树形dp了,但是紫书上还介绍了一种很不错的方法,两遍dfs。详见紫书p282。网上找的详解及证明:http://blog.sina.com.cn/s/blog_dbe928200101cm5t.html我觉得图应该也是一样的道理原创 2017-05-05 20:19:41 · 338 阅读 · 0 评论 -
中国剩余定理,枚举(数论难题,UVA 11754)
就是给你C个同余方程组,每个方程组有Kc个模方程。一个同余方程组的解是其中每个模方程的解的并集,所有同余方程组的解是单个同余方程组的解的交集。求最小的S个解。无非就是枚举方程的组合,然后跑中国剩余定理或者从小到大枚举x判断是否可行。但是当时觉得都很慢。没有发现互补的一面。然后就想用一些数论的方法把一个方程组变成单个方程,改编一下china函数的算法,然后发现没办法做到,原创 2016-11-18 12:17:29 · 363 阅读 · 0 评论 -
枚举,集合,动态规划(黑客的攻击,uva 11825)
很容易想到这是一个集合覆盖问题。我已开始还脑抽了,用什么强连通分量= =,他只是能中止相邻的,又不是中止一个块,但是样例能过。。。只能说自己有时候真的都没静下心来认认真真想清楚,分析好自己算法的正确性,而是瞎想觉得差不多啦就开始写代码了。WA后又想了一个错误的解法。自己应该先确定算法,然后在纸上证明正确性,然后纸上跑几个数据,再编码才好。这种瞎想出来的解法,更是要严谨,不能随便脑子里模拟几原创 2016-10-29 11:15:01 · 395 阅读 · 0 评论 -
部分枚举(废料堆,uva 10755)
很基础的题了,不细讲了。一道更基础的题的变种,那就是给你一个一维的数列,求最大子串和。本来是O(n^3),利用一维前缀和可以降为O(n^2),再枚举加更新又可以降为O(n)。这题就是变成了三维的情况。本来是O(n^9),利用三维前缀和可以降到O(n^6),枚举加更新又可以降为O(n^5),时间复杂度刚好够。三维前缀和用到了一点容斥原理的内容,不过都很简单了。然后有时原创 2016-10-27 19:23:30 · 329 阅读 · 0 评论 -
部分枚举(遥远的银河,LA 3695)
一开始没看清题,以为不一定平行。。。然后就不会了。。。看了题解写了一遍,发现求某个值最好写在一个函数里,否则有时候代码中间要出一个特例就会很麻烦,甚至要goto。写在函数里一个return就ok了。然后枚举矩形时最好不要重边,否则一行点就会算两次。重边的情况特判输出就好了。看了大白书上的代码又模仿了一遍,发现模仿别人写代码很难学到什么东西。因为你会想当然的凭着记忆去写代原创 2016-10-27 15:54:24 · 405 阅读 · 0 评论 -
枚举(最大子矩阵,LA 3029)
感觉枚举的问题想要优化就一定要一边枚举一边维护些东西,或者要预处理之类的。记得以前做了一道题 http://blog.csdn.net/xl2015190026/article/details/52551682 唯一的不同是求周长最长。做的时候参考了这道题,也是枚举右下角,然后用单调栈维护左上角。在那题中随着j的增大,并不会影响单调栈内元素的单调性。然而在这题里,随着j原创 2016-10-27 00:59:48 · 883 阅读 · 0 评论 -
二分,枚举+查找(子序列,LA 2678)
一开始二分,一直WA,怀疑是因为lower_bound,找不到结果时返回n+1。所以把答案%(n+1),然后就过了。看大白书上说找不到就输出0,可是看了好几遍原题,上面没有说啊喂,怎么可以这样QAQ。大白书上有O(n)的解法,就是枚举+查找的思路,查找时优化了一下使得总时间为O(n)。典型的思路,枚举一个量,对另一个量进行查找,可以是lower_bound,O(nlogn),也原创 2016-10-26 21:50:12 · 494 阅读 · 0 评论 -
枚举,预处理,条件概率(条件概率,uva 11181)
#includeusing namespace std;int N,r;int kase;double sum[25];double p[25];bool st[25];double tot;void dfs(int n,int r){ if(n==0) { if(r!=0) return; double ans=1;原创 2016-09-28 21:04:17 · 258 阅读 · 0 评论 -
枚举,模拟(Too Much Money,cf Canada Cup 2016 E)
一开始想只用放某个大于等于所有硬币的硬币是最优。后来发现能出解但不一定是最优解。当时就是想,第一次取的硬币的大小一定是大于等于最大的硬币。那么我就枚举所有可能的取值,如果都可以被凑出来,那就说明无解。如果凑不出来了,那就取最小的那个。当时觉得如果第一步都能凑出来,那么以后也一定能凑出来。如果第一步都凑不出来,那也就没有以后了。事实上,如果你放大硬币,这个推论确实是对的。然而可能会存在某个小硬币原创 2016-10-23 10:46:19 · 451 阅读 · 0 评论 -
【2016-北京赛区网络赛-I】枚举,贪心,优先队列,优化(导弹,hihocoder 1391)
比赛时暴力枚举,TEL。然后尝试用滑动窗口优化,然后发现无法优化。赛后才知道可以用优先队列来优化。好可惜呀。代码#includeusing namespace std;typedef long long ll;ll TA,TB;ll x;ll N,M;struct dd{ ll t,v,d; ll st,ed; dd(ll a,原创 2016-09-27 12:37:25 · 375 阅读 · 0 评论 -
gcd,枚举,数学(高速公路,uva 1393)
枚举所有类型的对角线,计算出每种对角线的总个数,注意不要重复计算。包围盒这个思想很不错。先算总的,再减去重复的。因为总的也好算,重复的也好算。#include#define maxn 310using namespace std;int n,m;int GCD[maxn][maxn];int gcd(int a,int b){ return a%b==0?b:g原创 2016-10-22 09:09:02 · 328 阅读 · 0 评论 -
前缀和,枚举+递推(Average,HDU 5353)
有n个节点,1瞬间就想起了Money Transfers这类问题一般都可以转化为环的切割,如何求出切割呢?可以求一个前缀和,如果sum[j]==sum[i](i我们会找到很多个sum的值,每一种值对应一个切割方法,值所对应的的多个节点就都是切割点。在本题我们就通过前缀和找到所有切割,然后对于每一段,可以直接贪心模拟看看是否ok。看了下官方题解原创 2017-07-12 13:23:18 · 281 阅读 · 0 评论