随笔分类 - C题
摘要:rope: #include<ext/rope> using namespace __gnu_cxx; 定义方法:rope<变量类型>变量名称; 人话解释:超级string 算法解释:块状链表(即讲链表与数组的优势结合,形成分块思想) 用途解释:这本来是一个用于快速操作string的工具,却一般被定
阅读全文
摘要:题目大意: 给出n个物品, 物品有4个空间值, 然后有一个权值 问 在不超过最大的空间值时, 最大的权值 思路: 一开始想了很多其他思路没有想出来 开始广搜算法, 发现dp可以解决(注意看数据范围,是满足的) 遇到奇怪的题, 就试试dp,特别在数据范围很小的时候
阅读全文
摘要:应用: 遇到每一个点 只会有一个方向作用到其他点, 这样产生的图形就是 一个 基环树深林 通常解决方法: 利用树形dp把除去环的值更新出来, 然后在对这个环经行处理即可 模板题: 一共有 � 个岛,每个岛都有一条出边,且该图是无向图,因为桥是可以双向行走的。给定桥的长度,即两点之间的边权。同时每对岛
阅读全文
摘要:题目大意: n 个商店在 一条直线上, 有一个xi 然后 有 ai 个商品 你可以把 商店的物品 移动到另一个商店, 代价为 : abs(xi-xj) 在代价不超过T的情况下 你可以选择一个商店来让 其他商店的物品都移到这个商店,问最多移动多少个物品 思路: 双指针维护一个最大的区间, 因为这个最大
阅读全文
摘要:题目大意: 给出一个n*m的田地矩阵,每个格子上种着一种植物。给格子施肥t次,每一次给出五个数字,x1,y1,x2,y2,k,要施肥的区域坐标和要施的肥料种类。如果植物和施肥种类不匹配,植物会死亡。问最终会死多少个植物。 思路: 判断 一个植物 死不死, 判断植物种类*施肥次数==施肥种类总和 某些
阅读全文
摘要:题目大意: 给一个正方形棋盘, 你现在可以在棋盘的边缘防止车, 然后车只能向正对的方向走, (角落可以往2边走) 2个车相遇会G 给m 个破环的方块, 车 经过就G 问最多可以放多少个车 ] 思路: 注意 奇偶分规律, 偶数 2*n, 奇数 2*n-1 注意 放置破环的方块, 在奇数最中间的时候,
阅读全文
摘要:换根dp: 第一次dfs 处理儿子点的权值 第二次dfs 处理 父亲点,和兄弟节点的权值 处理兄弟节点的时候, 利用父亲节点统一处理, 利用stl存储 斜率优化: 为什么会用到斜率优化: 在遇到转移式子是 fi x fj 的时候, 不是分开的, (分开的,直接用单调队列处理) (通常会遇到平方式子)
阅读全文
摘要:题目大意: 给定一个序列, 移除m个字母后, 问可以形成多少个不同的序列 思路: 正常想法: dp[i][j], 到第i个时, 移除m个后,有多少个不同的字符串 转移: dp i j-1 (移除自己) (注意题目问的是移除后,有多少个不同的子串, 此时移除自己时, 会有重复的情况) dp i-1 j
阅读全文
摘要:引入 给定一个 n×m 的网格图,两个点从左下角出发,只能向上或者向右走,最后到右上角结束,求有多少种可能的方案,使得两个点的路径在除开起点和终点外的任意点不相交? 由于交换路径过后算同一种方案,我们就可以除开起点和终点,转换成A点从(1,2)出发到(m-1,n),B点从(2,1)出发到(m,n-1
阅读全文
摘要:题目大意: 给一个序列 ai , 然后 m 次 询问 L,R , 每次回答 a1 al + ar an, 这2个区间的不同数的个数 思路1: 通过队列加倍, 将2个断开的区间,合在一起, 每次询问就是 R --L+n 然后区间不同数的个数, 将每一个数第一次出现位置的权值设置为 1, 其他为 0,
阅读全文
摘要:题目大意: 思路: 一眼二分,最后发现,并不满足单调性!!! 然后一眼暴力发现事件复杂度很大, 但是实际上的ck范围很小 【(ceil(sum / k)), (ceil(sum / k) + maxVol)】
阅读全文
摘要:题意: t组样例,每组样例输入w, h, a, b, c.在坐标系中,0 <= x <= w, 0<=y<=h, 求出三个点X, Y, Z, 并且|XY| = a, |XZ| = b, |YZ| = c,求这三点坐标并依次输出 题解: 一个三角形在矩形中是合法的,那么就一定可以平移到矩阵的某个角,
阅读全文
摘要:题面大意: 给出N个数, 找出最大的子集size 使得 子集中, 任意2个数的 二进制下, 每一位, 至少有2位不同 思路: N 只有5000, 可以直接暴力建边, 转化位图论 2种建边方式: 一种是 能在一个集合的2个数, 建一条边, (没有办法去处理这个问题) 一种是 不能在一个集合的就建一条边
阅读全文
摘要:题面大意: 给定一个隐藏字符串, 每次给出2个字母所产生的子序列, 问你原序列是什么 思路: 性质: 字母和字母之间有先后顺序 因此拓扑排序建边来做 然后不要一次把边建完, 而是通过相对位置关系, 边更新,边建. (先找第一个,在找第二个....) #include<bits/stdc++.h> u
阅读全文
摘要:x1, bx2 (开始值) // 矩阵x 的时候就 横着x竖着就可以了 10倍增, 就是 分为 10, 100 ,1000, 10000.... , 10到 100 就是 10个10相互弄一起, 这个过程用二进制优化一下, 以此类推(这个相乘 实际是相加)
阅读全文
摘要:题面大意: 给定2个字符串,问有多少个子字符串S, 是大于t的 思路 数据范围很小, 因此考虑n^2做法 分2步, 位数s>位数t 的时候 然后 位数相等的时候 利用DP ,处理, 分别就是枚举 前 k个数和s相同,然后k+1个数比t大就可以. 具体思路自己想想,和那个比较像 const int M
阅读全文
摘要:思路: 首先贪心出性质, 通过模拟这个题意,一定是先右边弄完在去左边弄, 或者左弄完去右边弄, 于是左右2边分别dp一次 然后求和 dp[i][j],表示i 和 j 匹配的时的 最小操作次数 转移的时候有一个贪心结论,当 si != tj 时, 这个贡献时一个固定值, 正向:首先i- (公共的),
阅读全文
摘要:思路: 对于每一个bi都会有有一个范围, 然后贪心的做, 具体的 先对这个范围按照 左端点排序, 然后贪心的去最小的值去放
阅读全文
摘要:思路: 问xor起来有没有某个值, 想到线性基 然后发现问L-R区间的集合都要表示x, 利用线性基的交集解决 在利用线段树解决区间问题 #include <iostream> using namespace std; typedef unsigned int ui; const int maxn =
阅读全文
摘要:思路: 问MEX,就要牢牢利用 MEX的性质 发现 0 这个位置 b是固定的, 然后在发现1这个位置又是固定的, L-R, 表示 0到1的位置范围 于是我们在考虑2这个位置, 当2在L-R的外面的时候, 也是固定的, L-R的范围拓展 当2在L-R里面的时候, 就可以随便选, 当然选过的就不能选(组
阅读全文