Rainbow 6 is a very popular game in colleges. There are 2 teams, each having some members and the 2 teams play some matches against each other. The team which wins the maximum number of matches wins the game! Two of my friends Ashank and Aditya (bett…
http://acm.hdu.edu.cn/showproblem.php?pid=5745 这题好劲爆啊.dp容易想,但是要bitset优化,就想不到了. 先放一个tle的dp.复杂度O(n * m)的 第一个串,记作str[],第二个记作sub[] 思路就是,设dp[i][j][k]表示,匹配了sub的前i个,以str的第j个结尾,然后sub[i]有三种状态,0表示不变化,1表示和前一个,2表示和后一个. 那么以求dp[i][j][0]为列 因为需要的是判断str的第j个结尾是否和sub的前…
这题现场的数据出水了,暴力就能搞过. 标解是拿bitset做,转移的时候用bitset优化过的操作(与或非移位)来搞,复杂度O(N*M/w) w是字长 第一份标程的思路很清晰,然而后来会T. /*--------------------------------------------------------------------------------------*/ #include <algorithm> #include <iostream> #include <cs…
/** 题目:hdu5745 La Vie en rose 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5745 题意:题目给出的变换规则其实就是交换相邻元素, 并且每个元素最多交换一次. 思路: 那么一个O(nm)的dp其实十分显然, dp_{i,j,k} ​​ 表示匹配到s的第i个字符, p的第j个字符, j这一位的当前状态是k (0表示和前面交换, 1表示没有交换, 2表示和后面交换). 转移方程如下: dp[i][j][0] = dp[i-1…
Jonathan Irvin Gunawan is a very handsome living person. You have to admit it to live in this world. To become more handsome, Jonathan the Handsome have to collect candies (no relation, indeed). In front of him, there are N candies with different lev…
Bipartite Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 840    Accepted Submission(s): 285 Problem Description Soda has a bipartite graph with n vertices and m undirected edges. Now he w…
题目链接 Eighty seven 背包(用bitset预处理)然后对于每个询问O(1)回答即可. 预处理的时候背包. #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for(int i(a); i <= (b); ++i) #define dec(i, a, b) for(int i(a); i >= (b); --i) const int N = 52; int T, q, n; int f[…
3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 861  Solved: 399[Submit][Status][Discuss] Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和.    目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把这个问题交给你,未来的集训队队员来实现…
Harbinger vs Sciencepal 题意:给你n对人, 每一对都有2个人,每个人分别有一个值, 现在将每队人拆开塞入2组,要求分完这n对人之后,2个组的差值最小. 题解:将每队人的差值算出来,并且对于差值求和 tot, 然后这个题目就变成了给你n个数, 分成2组, 求差值最小的题目, 对差值进行跑背包操作就好了.         这份代码用bitset完成的, 因为在练习这个东西. 代码: #include<bits/stdc++.h> using namespace std; #…
HDU3480_区间DP平行四边形优化 做到现在能一眼看出来是区间DP的问题了 也能够知道dp[i][j]表示前  i  个节点被分为  j  个区间所取得的最优值的情况 cost[i][j]表示从i到j元素区间中的值,这里可以直接排序后简单求出——也就是我们的代价函数 这样其实就能够做出来了,但是空间复杂度是n3入门的题能过,普通点的都会考察你一下斜率DP的优化和四边形不等式的优化.目前我主要就懂了平行四边形的优化 首先你要确保dp和cost这两个都满足四边形不等式这个前面有过证明的博客这里就…