11 2014 档案
摘要:其实 北京站的 dp都没想象中的难..but .. ..dp[x,y]表示前x个数xor值==y的方案数有多少种转移的时候 首先可以将上层的完全赋值到这层 就是假设 a[i] 不参与xor异或然后 a[i]与上层值进行异或 需要2次遍历所有的方案数我一度担心要tle 但是 n很小 才40.我一开始没...
阅读全文
摘要:这2题放一起吧 反正都是同一场的.B题 虽然是被自己想复杂了 用了树状数组。。当时自己还没离散化出来 还是用了超神的离散化 ‘不知道自己的哪边错了 ffffffk 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int ...
阅读全文
摘要:..........dp[x,y]表示 [ x , y ]这段区间所获得的价值dp[x , y] = max( dp[x,k-1] + dp[k+1,y] + a[k] + b[x-1] + b[y+1] ) x 2 using namespace std; 3 4 int main() { 5...
阅读全文
摘要:很多时候 平常觉得很熟悉的一样东西穿上了一件外衣 我们就不认识了 其实 还是 我们不够熟悉。这题的原型 就是给你一串由01组成的序列 可以随机修改某个固定位置的值 然后就是要让我们求出从某个 x的左端点开始的最长连续1的数量我们将这题 转换过来 就是对应坐标位置 假如2个值相同则为1 否则为0 然后...
阅读全文
摘要:这个方法其实 蛮常用的一般给你3个集合 然后让你满足某个等式 a[x]+b[y] = c[z]我们通常都是枚举一个集合 然后用两个指针分别指向另外2个集合中的一头一尾 然后进行大小比较来 指针移动当然 这也是和 二分一样建立在 有序的基础之上进行的这题 用这个方法解决 就可以了当然 二分也可以 1 ...
阅读全文
摘要:其实 概率dp最后得到的期望 你是 顺序递推 还是 逆序递推 就是取决于你对于 dp[x]这个数组是如何去定义的这边 逆序递推的 思想 可以去看下 传送 感觉这篇博客下方的评论 讲得还可以至于顺序递推的 可以参照下 porker给我的这个公式dp[x]就是表示 抽完x这个状态下所有的卡片 所需...
阅读全文
摘要:状态转移方程不难想 我没想到另外还要开个数组 记录上一次的最优状态 wtf主要是另外还要开个temp数组 这样可以减少一层for循环.dp[x,y]在前x分钟我睡觉花掉了y分钟的时间 ( x>=y )dp[x,y] = dp[x-1,y-1]假如我在x这个时间点正在睡觉 那么我得到价值就是 x-1这...
阅读全文
摘要:还是太弱啊 终测 C D都挂了 =_=...porker写的C关于取模的运用 对于以后的题目 都有很好的 移植性 感觉主要是运用了 (a+b)%p = ( a%p+b%p)%p这个性质贴下 3题代码 当时比赛的时候 可能有点难看 懒的改了 1 #include 2 #include 3 #inc...
阅读全文
摘要:算基础的 线段树的区间更新题吧题意 也很好理解只是要注意下 输出颜色的时候 递增顺序来输出 1 #include 2 using namespace std; 3 4 const int size = 1000010; 5 int ans; 6 struct node 7 { ...
阅读全文
摘要:这应该是当时 鞍山的签到题了吧...可以给大一的来做下 . 1 #include 2 #include 3 #include 4 using namespace std; 5 6 double Abs( double x ) 7 { 8 return x > 0 ? x : -x; ...
阅读全文
摘要:这算考虑不同条件下的dp吧一层一层递推过去 主要是dp状态的定义不能想错了dp[x,y]在第x个位置编号为y的时候可以获得的前X个位置获得的价值总额因为任何一个价值都是由 score[x,x+1]构成的 所以我们可以从i =2开始遍历 因为1的时候 答案肯定是0然后就是对于a[x] , a[x-1]...
阅读全文
摘要:数据因为很大 达到 max=1e9首先 素数筛选出 sqrt(max)的范围内有多少素数然后 对于每个n 求出它的所有因子 sort一遍后 从小到大开始遍历过去特判下 对于n大于 sqrt(max)的情况下 是否为素数的情况 因为N>1e6的情况不超过100组 所以不会特判很多次的 1 #inclu...
阅读全文
摘要:tmd还是自己没做出拿牌题。。。可以看下别人的博客 有很详细的解释但我自己开始没想出来 cao......其实 这个思路不算特别难的 和我这几天遇到的dp题相比注意下 hash[ i ]表示给定的n个数中是 i 的倍数的数有几个要注意下 n * (n-1) * (n-2 ) / 6会超Int整数上限...
阅读全文
摘要:首先 ....让我说一句... F M L这几天被概率 区间dp折磨地死去活来 都太TM要智商了 太伤了啊。。。烦的一比../////////////////////////////这题 真心算我这几天遇到的最简单的了...dp[ i ][ j ] = p[ i ][ j ][ 0 ] * ( dp...
阅读全文
摘要:转自 :http://hi.baidu.com/abcdcamey/item/0d1d6746c9ef4616896d10ac动态规划和贪心算法的区别动态规划和贪心算法都是一种递推算法均有局部最优解来推导全局最优解不同点:贪心算法:1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步...
阅读全文
摘要:这题 不会写啊 虽然题意明白了 方法大概知道 但是状态有点难表示啊 啊 啊...放个 题解链接 大概看懂了 主要是dp初始化没想到 自己一般都只是个Memset之后 就是对于1 2个点的特别初始化了 没有想到过对于其它所有点的状态表示就是1-n的 传送代码 放出来 方便看.~ 1 #in...
阅读全文
摘要:这里 我花了将近10分钟找错 才发现是错在 运算符的优先级上面 =_=1 if( mp[xx][yy]=='B' && ( (now.key&2)==0) )位运算的优先级 太低了 ....每次多开一维来表示该点的 钥匙数 很多类似~~ 1 #include 2 #include 3 #incl...
阅读全文
摘要:感觉图论的题 都是难在 如何建图上 本题也是如此我们主要是将行与列 分开来考虑 每一座冰山隔开的海水 都可以看成一个“块” 在这上面是可以放船的 然后是将这连续的海水可能中间会有冰 但不影响看成一个块列 也是同样处理的 然后 每一个 列与行的交点的海水 不就是说明这个行与列是矛盾的 只能存在一个...
阅读全文
摘要:主要就是开个 三维vis数组 第三维 表示在坐标下的 钥匙有哪些还有要注意的话 就是wall数组 是有3种不同的情况 -1 直接行走 0 墙 >=1 大门 需要钥匙 1 #include 2 #include 3 #include 4 using namespace std; 5 6 in...
阅读全文
摘要:发现 很多 bfs很有意思啊 做完刚那题后 随机切的这题这边 我们要求出 到达坐标的转弯次数 并且要不断地更新取最小值 直到在符合条件的转弯次数下 找到了出口所以 这里对于 的初始化很重要 就是将它初始化为Inf 尽量大点就是了然后在bfs中 对于同方向走路的点和从起点开始i走 是不需要增加转弯次数...
阅读全文
摘要:做这题 来为上年 上海的那个状压bfs做铺垫 =_=这题 不难 就是 多开一维 存下 钥匙的状态就好了 表示在 (x,y)这个坐标点 已经收集到了哪些钥匙多做点 状压的题目 就会来感觉的. 1 #include 2 #include 3 #include 4 using namespace s...
阅读全文
摘要:就是一个 位运算状态表示的题 以为很水的啊... 自己写出来的一直 WA 和别人AC的对拍 几组test也都是对的我也是醉了//我WA的 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int n; 7 sets; 8 ...
阅读全文
摘要:里面包含了很多内容的一道题 可以学到很多题意 很简单 就是一个人 要绕城市一圈 不必回到起点 但是每个城市都要经过 并且最多每个重复走2次注意 城市数量是 2 #include 3 #include 4 using namespace std; 5 6 int n; 7 const int ...
阅读全文
摘要:轻松水过 哇咔咔 =_=马上要迎来周末了.这样的天气 很适合 想你 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int size = 30; 7 int weight[size] , value[size...
阅读全文
摘要:dp我突然觉得 没必要将它仔细地分成各种种类 都是利用了差不多什么递推 利用前面计算出来的子结果什么的思想这题的状态 不难想 因为一个回文串肯定是有左右端点啊 那么就肯定有2维状态了 然后就是递推吧这边有些初始化 可以先完成 也可以在解决的时候 一并完成 随你我一开始自己写的是 记忆化搜索的写法. ...
阅读全文
摘要:原谅我的渣渣数学...发现自己都不能原谅自己...这题 参考了 http://blog.csdn.net/a601025382s/article/details/12109307的报告里面描述的很详细了除了这个方法 还有一种 就是 2*3 + (num-1) * 6 = num * 6因为 指数包含...
阅读全文
摘要:好久没写并查集了 还好这题蛮水的~从前到后的删除 那我就先将所有的边给记录下来 然后从后往前的添加边 就是同一个意思了.离线处理吧相当于 一次性全部输出有点逆序的味道~~-----但我闻到了风中 苦涩的味道 哈哈~~ 1 #include 2 #include 3 using namespace...
阅读全文
摘要:这题 用了我大概一天的时间 断断续续来想它吧 我就无语了 太白痴了 F M L这边有一个很重要的条件就是N个点 只有N-1条的边 而且这是个无向连通的 其实这边不应该用连通来描述 因为它是用来形容图的 而这题的结构是个树 因为不会形成闭合回路将这么一大串的英文单词 转换下就是说 使这N个点 各自选择...
阅读全文
摘要:这个dp我没做出来啊...其实不难..主要题意没理解好 fuck.给你1-N这N个数 一共2^N-1个子集 每个子集的LCM值>=M的情况数有多少种我也是醉了 这么个题目 给我套他那个题面 硬是没看懂 他在问什么 还是 英语太渣了然后就是个 状态转移方程的考虑了mapdp[size] 表示 前siz...
阅读全文
摘要:本来 我是想直接开2个计数数组 存下 行 列各自的元素个数的..可是 数据达到了 10^9 但是数据个数 只有10^5 虽然可以考虑用 离散化...但我想先map试下 毕竟 离散化烦~关于multimap的使用 和map还是有点差别的..但是 我们单纯地只是使用 stl中的函数的话 还是不存在什么难...
阅读全文
摘要:这题 蛮好的 如果用心去感受不知道 你们有没有想过为什么 有时候进行区间更新操作的时候 可以直接对整个区间进行操作 而不必要一个点 一个点地去更新因为 我们对这个区间内的每个数 都是相同的操作 所以可以放在一起操作 就像一起+- K什么的但这里呢 是对[ L , R ]这个区间内的每一个元素 开平方...
阅读全文
摘要:又加强了 对线段树 延迟标记的理解~~题意很简单 给你一串数字01组成. 每次必须操作K个数 将其翻转 即0->1 1->0 就相当 对于一段区间 [ L , L+K-1 ] 的0和1的数量 进行swap操作首先 解这题 一点必须想到 求最少操作次数 肯定是从最左边开始.那么我每次 query(fi...
阅读全文
摘要:应该就是算 线段树的 单点更新吧.但一开始给了我一个错觉 是二维线段树 我也是醉了tree[root].x// x = L || R表示root这个结点表示的是L - > R这个区间tree[root].leftLen//表示 root这个结点所在的区间现在还存在的最长连续格子数更让人郁闷的是 我用...
阅读全文
摘要:相比于上次我做过的一个容斥题 和他很相似 就是多了一个modify操作不过也不难 只要 通过 加加减减 操作就能完成了这个操作 我想过很多种方法 最后觉得用Map迭代访问是最好的选择如果遍历x->y这个区间 因为y::iterator it; 5 for( it=mp.begin();it!...
阅读全文