随笔分类 -  实用算法——状态压缩

摘要:神™题........ 这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的边会形成最小生成树(可以看成是在Kruskal),然后我就开始YY了(一本正经)。 首先我想到了枚举 阅读全文
posted @ 2017-10-30 07:18 TS_Hugh 阅读(251) 评论(0) 推荐(0)
摘要:又是一道思路清新的小清晰。 观察题目,如果我们确定了平民或者贵族的任意一方,我们便可以贪心的求出另一方,至此20分;我们发现层数十分小,那么我们就也是状压层数,用lca转移,线性dp,至此50分(好像数据很水这么打能A);至今我们没有用到他是一棵完全二叉树,那么我们发现如果进行树dp,也就是说从子节 阅读全文
posted @ 2017-10-01 20:25 TS_Hugh 阅读(336) 评论(0) 推荐(0)
摘要:考试的时候由于总是搞这道题导致爆零~~~~~(神™倒序难度.....) 考试的时候想着想着想用状压,但是觉得不行又想用区间dp,然而正解是状压着搞区间,这充分说明了一件事,状压不是只是一种dp而是一种用用二进制表示状态的方法,之前打的状压dp只不过是在线性dp的时候用了这种方法。 我们发现对于一个固 阅读全文
posted @ 2017-08-15 21:05 TS_Hugh 阅读(427) 评论(0) 推荐(1)
摘要:受惯性思维的影响自动把二进制状态认为是连与不连......... 我们这里二进制状态表示的是奇偶,这样的话我们f[i][j][k]表示的就是前i个城市用了j个边他前k个城市的奇偶状态,然后想想怎么转移,我们要是深搜就会从一开始一直搜每搜到一个最终状态就是一个答案,然后状态转移同理,我们f[1][0] 阅读全文
posted @ 2017-08-05 06:27 TS_Hugh 阅读(214) 评论(0) 推荐(0)
摘要:#define int long long using namespace std; signed main(){ 这个题一看就是图论题,然后我们观察他的性质,因为一个图论题如果没有什么性质,就是真·不可做...... 每个疯子只有一个出度,因此我们YY一下:{ 这是一个有向图,所以,我们可以Tarjan,然后我们把点分为强联通分量内,和强联通分量外,然后我们从强联通分量内的点... 阅读全文
posted @ 2017-08-02 14:49 TS_Hugh 阅读(343) 评论(0) 推荐(0)
摘要:这个题我们可以想象成_ ___ __的一个水柱它具有一遍优一遍行的性质因此可以用来二分最小值len,而每次二分后我们都要验根,we可以把这个水柱想成我们在每个数段里取前一段的那个数后一段有也不选,而且最后一个区间的第一个数一定可以使这个数区间对应的数,那么我们只要在某个位置上不选或选就可以啦,这we 阅读全文
posted @ 2017-07-02 17:18 TS_Hugh 阅读(371) 评论(0) 推荐(0)
摘要:大前提,把两个点的组合看成一种状态 x 两种思路 O(n^7) f[x]表示在某一个点的前提下,这个状态经过那个点的概率,用相邻的点转移状态,高斯一波就好了 O(n^6) 想象成臭气弹,这个和那个的区别只是状态维数变化,f[x]表示这个状态出现的概率,高斯一下就好了 我比较傻只想出来O(n^7) 阅读全文
posted @ 2017-06-28 09:09 TS_Hugh 阅读(365) 评论(0) 推荐(0)
摘要:这个题.......很可以,很小清晰......反正正经的东西我都没想到:重点在于——————我不会处理那个多出来的路费所以当时我就骚骚的弄了一颗树包状压其实这是一个类01背包的状压在每个状态用01背包求基于当前状态和当前费用的最优解最后再与之前最优解比较得最优解(记得这个时候算上路费)这样一直滚到 阅读全文
posted @ 2017-06-11 21:03 TS_Hugh 阅读(234) 评论(0) 推荐(0)
摘要:这个题的关键处1 紧跟着他的bi个人 —— 由此得出任意一个状态都可以表示为 有第一个人没吃到饭做分隔的前面所有人已吃饭,并用1<<8表示之后的(包括他)的八个人的状态2 信息仍然是上一个 但是根据此信息就可以的出接口数组,就是作为状态转移接口的一维即——最后一个吃饭的人据此可得 f(a,b,c) 阅读全文
posted @ 2017-06-11 20:57 TS_Hugh 阅读(174) 评论(0) 推荐(0)