摘要: 这题解法中用到了一个物品组的概念,跟背包九讲的提到的差不多,当我们不讨论当前拥有哪些物品,而只看我们当前的价值和的时候,就会变成一个01背包后很简单的贪心题。。 这题中交换物品的时候是只要交换前后物品价值和不超过d就是可行的。所以当我们使用物品组的概念的时候能够忽略掉具体交换的细节,变成对总价值的贪 阅读全文
posted @ 2017-03-03 19:43 啊啊啊啊啊啊啊啊啊阿 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 对于这题,一开始看到z值较小,就像枚举z坐标,然后对于一个单独的z平面做面积交来累加答案。。(三个以上柱体的体积交) 搜题解学完up函数的姿势后感觉自己写的还是蛮不错的嘛。。 线段树每个节点包含当前节店的覆盖次数cnt,表示覆盖次数-长度映射的数组,由于只要cnt>=3就可以统计,故数组只开到3。。 阅读全文
posted @ 2017-03-03 18:45 啊啊啊啊啊啊啊啊啊阿 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 看到题面就会想到传统的二维dp搞,但是原字符长度有1e18所以得另想办法。 根据题目条件可以观察到: 如果按照i/n的值分组的话,满足条件的子序列中的元素必定会在一段连续的组中 同时每组元素种类数量都一样,这样我们就可以使用dp[len][i]得到长度为len,以每组中第i大元素结尾的种类数量 然后 阅读全文
posted @ 2017-03-03 18:22 啊啊啊啊啊啊啊啊啊阿 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 感觉自己好像搞定了一个不得了得题呢。。 对于这种区间性质合并的线段树,对于每个节点保存一下当前区间内1的个数,左右边界相邻的1个的个数与0的个数,还有当前区间最大连续的1和0的个数. 合并的时候的细节: 1.如果lson的右边界是1并且rson的左边界是1,那么当前节点的最大连续1的值应该更新为tr 阅读全文
posted @ 2016-12-14 19:36 啊啊啊啊啊啊啊啊啊阿 阅读(323) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std; #define ll long long #define inf 0x3f3f3f3f #define mod 1000000007 #define lson 2*n #define rson 2*n+1 #define mid (l+r)/2 #define mit map::iterator #define sit set::ite... 阅读全文
posted @ 2016-10-14 15:04 啊啊啊啊啊啊啊啊啊阿 阅读(149) 评论(0) 推荐(0) 编辑
摘要: typedef vector<ll>vec;typedef vector<vec>mat;mat mul(mat &A,mat &B){ mat C(A.size(),vec(B[0].size())); for(ll i=0;i<A.size();i++) { for(ll k=0;k<B.siz 阅读全文
posted @ 2016-10-12 17:50 啊啊啊啊啊啊啊啊啊阿 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 转自郭大侠博客。。。 1 #include<string> 2 #include<iostream> 3 #include<iosfwd> 4 #include<cmath> 5 #include<cstring> 6 #include<stdlib.h> 7 #include<stdio.h> 8 阅读全文
posted @ 2016-10-04 18:56 啊啊啊啊啊啊啊啊啊阿 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 模板是从http://blog.csdn.net/crazy_ac/article/details/8034190这位大爷博客里找到的。。。但是在由于是功能挺全的一个版本,在一些题里可能维护了一些不必要的值(可能自己在操作步骤写丑了= =)而导致超时。。所以使用的时候还是要注意一下。。 上模板。。 阅读全文
posted @ 2016-10-03 14:42 啊啊啊啊啊啊啊啊啊阿 阅读(223) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/acm_cxlove/article/details/9824413 这几天要调整好作息准备搞事情了。。。 阅读全文
posted @ 2016-10-02 20:36 啊啊啊啊啊啊啊啊啊阿 阅读(138) 评论(0) 推荐(0) 编辑
摘要: const int maxn =100005;int dp[maxn][20],a[maxn],mm[maxn];void initRMQ(int n){ mm[0]=-1; for(int i=1;i<=n;i++) { mm[i]=((i&(i-1))==0)?mm[i-1]+1:mm[i-1] 阅读全文
posted @ 2016-09-30 20:25 啊啊啊啊啊啊啊啊啊阿 阅读(134) 评论(0) 推荐(0) 编辑