状压和状压dp
Roll_Keyboard
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #306 (Div. 2) B. Preparing Olympiad (状态压缩)
题意:给你n个数字,挑出任意多个,要求最小和最大的差值不小于x且总和在l和r之间,问有多少种方案思路:由于n极小,那么我们可以直接状态压缩,用二进制表示每个数字的使用状态,然后看是否符合要求即可错误及反思:代码:#include<bits/stdc++.h>using namespace std;const int maxn = 20;long long arr[maxn];int n;l原创 2017-11-29 17:06:17 · 211 阅读 · 0 评论 -
Codeforces Round #321 (Div. 2) D. Kefa and Dishes(状压DP)
题意:思路:错误及反思:代码:原创 2018-01-18 14:54:00 · 219 阅读 · 0 评论 -
Codeforces Round #316 (Div. 2) D. Tree Requests(dfs序+状态压缩)
题意:给你一颗树,父节点编号总是小于子节点编号,每个节点都有一个字符,问一个节点x的子树(包括自己)且深度为y的子节点是否能组成一个回文串思路:通过一次dfs,能够得知每个节点的dfs序和深度,如果在dfs时候将同一深度的节点放入一个数组,那么就是有序的,而dfs序有一个性质,同一子树的dfs序是相邻的,那么我们就知道了对于一个子树来说,dfs序是某一个连续的区间。 而之前我们深度的数组是有序的,原创 2018-01-19 14:21:34 · 190 阅读 · 0 评论 -
Codecraft-18 and Codeforces Round #458 E. Palindromes in a Tree(点分治)
题意:&nbsp;&nbsp;&nbsp;&nbsp; 一棵树,每个点都有一个字母,如果一条路径的字符的某个排列是回文串,就称这个路径是回文的,问经过每个点的回文路径有多少条思路:&nbsp;&nbsp;&nbsp;&nbsp; 很明显的点分治。首先因为字母是a到t,所以可以状压一下,利用异或来改变路径的状态,如果二进制中1的个数小于等于1,那么就是回文的(利用__bu原创 2018-06-14 13:02:30 · 210 阅读 · 0 评论