Educational Codeforces Round 32:E. Maximum Subsequence(Meet-in-the-middle)
2017-11-29 19:30
495 查看
题目链接:E. Maximum Subsequence
用了一个Meet-in-the-middle的技巧,还是第一次用到这个技巧,其实这个技巧和二分很像,主要是在dfs中,如果数量减小一半可以节约很多的时间。
Meet in the middle(有时候也叫作split and merge)是一种用以获取足够高效解决方案的灵巧的思想。和分治思想非常类似,它将问题分割成两个部分,然后试着合并这两个子问题的结果。好处在于通过使用一点额外的空间,你可以解决两倍规模的原来可以解决的问题。
用了一个Meet-in-the-middle的技巧,还是第一次用到这个技巧,其实这个技巧和二分很像,主要是在dfs中,如果数量减小一半可以节约很多的时间。
Meet in the middle(有时候也叫作split and merge)是一种用以获取足够高效解决方案的灵巧的思想。和分治思想非常类似,它将问题分割成两个部分,然后试着合并这两个子问题的结果。好处在于通过使用一点额外的空间,你可以解决两倍规模的原来可以解决的问题。
#include<bits/stdc++.h> using namespace std; typedef long long ll; set <ll> se[2]; const int maxn = 40; ll num[maxn]; ll n,m; void dfs(ll sum,ll l,ll r) { if(l == r) { se[r == n].insert(sum); return ; } dfs((sum+num[l])%m,l+1,r); dfs(sum,l+1,r); } int main() { scanf("%lld%lld",&n,&m); for(int i=0;i<n;i++) { scanf("%lld",&num[i]); num[i] = num[i] % m; } dfs(0,0,n/2); dfs(0,n/2,n); set<ll> ::iterator iter,iter2; ll Max = 0; for(iter=se[0].begin();iter!=se[0].end();iter++) { ll x = *iter; ll y = m - 1 - x; iter2 = se[1].upper_bound(y); iter2--; Max = max(Max,(x+*iter2)%m); } printf("%lld",Max); }
相关文章推荐
- Educational Codeforces Round 1 D. Igor In the Museum(BFS)
- Educational Codeforces Round 27 E. Fire in the City(二维离散化)
- Educational Codeforces Round 1 D.Igor In the Museum(DFS)
- Educational Codeforces Round 1 D. Igor In the Museum
- Educational Codeforces Round 1 D. Igor In the Museum bfs 并查集
- Educational Codeforces Round 1 D. Igor In the Museum
- 【Educational Codeforces Round 1D】【DFS 联通块打标记法】Igor In the Museum 联通块内墙的面数
- Educational Codeforces Round 1(D. Igor In the Museum) (BFS+离线访问)
- Educational Codeforces Round 32 题解
- (Educational Codeforces Round 9)Longest Subsequence(dp)
- Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
- Codeforces - Educational Codeforces Round 6C - Pearls in a Row
- Educational Codeforces Round 25 B. Five-In-a-Row
- Educational Codeforces Round 32
- Educational Codeforces Round 4 D. The Union of k-Segments(★)
- Educational Codeforces Round 32 G. Xor-MST 01字典树+二叉树 (板子
- Educational Codeforces Round 15 E Analysis of Pathes in Functional Graph(倍增)
- Educational Codeforces Round 8 E. Zbazi in Zeydabad(BIT)
- Educational Codeforces Round 15 Analysis of Pathes in Functional Graph rmq 变形
- Educational Codeforces Round 22 C. The Tag Game