上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页
摘要: xx 阅读全文
posted @ 2018-10-05 14:59 尹吴潇 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 题目: 1.给出一个由0,1组成的环 求最少多少次交换(任意两个位置)使得0,1靠在一起 n<=1000 2.两个数列,支持在第一个数列上区间+1,-1 每次花费为1 求a变成b的最小代价 n<=1e5 3. 有n首歌,每首歌每秒有p[i]的几率被破译(当大于等于t时自动破译),求期望破译歌数 题解 阅读全文
posted @ 2018-10-01 16:09 尹吴潇 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题解: 去年noip的时候写的暴力然后就有80分 正解比较显然 先枚举状态i 表示存在哪些猪,再枚举转移(由两个点确定最大能消灭多少) 另外一个套路就是先确定一个点 于是复杂度就是T*n*2^n了 两个点在一条直线上和a>0都要舍去 代码还是挺好写的 代码: 阅读全文
posted @ 2018-10-01 15:57 尹吴潇 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 1.uva 10765(写) 2.uva 11294(写) 2-sat输出方案 3.la 3514(写) 关键在于判断仙人掌 之后就是在环上的边个数+1都乘起来就好了 4.uva 10972(写) 经典题目,把边双联通搞出来之后 就是把度为1的点之间连边 5.uva 10603(写) 直接dij就可 阅读全文
posted @ 2018-09-27 21:55 尹吴潇 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题解: 替罪羊树的模板和splay差距还是比较大的。。 按照我的splay的写法 真是都是问题。。 替罪羊树就是暴力的搞 当某颗子树大小大于这棵树的alpha时 就退出 另外删除的时候打懒标记删除 当有用个数少于alpha*n的时候,就重构 注意点: 1.找rank的时候要找比它小的个数,不能像sp 阅读全文
posted @ 2018-09-26 00:18 尹吴潇 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题解: 好像和noi那题并没有什么区别 只是加上了修改和变成树上 比较显然我们可以用树链剖分来维护 阅读全文
posted @ 2018-09-25 00:37 尹吴潇 阅读(113) 评论(0) 推荐(0) 编辑
摘要: xxx 阅读全文
posted @ 2018-09-25 00:19 尹吴潇 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 题解: 水题 从左向右维护以每一个作为右端点的最大值 线段树维护 代码: 阅读全文
posted @ 2018-09-25 00:14 尹吴潇 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题解: 没打。。。 ab题满世界都过了应该没什么意思 c题是个比较有意思的思维题(先看了题解才会的。。。) 我们考虑这么一件事情 没钥匙的人出门后 门一定是开着的 他进来的时候,门一定是开着的 其他时候,一定门能关着比较好 但是这个东西并不是很好维护,因为可能重复算 我们考虑重新排个序 我们把a[] 阅读全文
posted @ 2018-09-23 23:21 尹吴潇 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题解: 首先区间dp是比较好想到的 然后我感觉接下来就是乱搞。。。 我们会发现接下来的操作 无非就是 用一种颜色去覆盖这整个区间 然后在做 于是我用了比较暴力的做法,f[i][j][k]表示i-j这段区间被k颜色完全覆盖 那么转移就是枚举f[i][kk][k] f[kk+1][j][k] 另外要注意 阅读全文
posted @ 2018-09-23 00:10 尹吴潇 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 题解: 阅读全文
posted @ 2018-09-21 20:44 尹吴潇 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 题解: 插头dp裸题 没什么好说的啊就是n个二进制位表示状态 相比原先就是用2n个二进制位表示状态 蓝书上后面几题插头dp都挺烦的啊。。。 代码: 阅读全文
posted @ 2018-09-20 22:41 尹吴潇 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题解: 这道思路还是比较水的 我们可以等价变形成hi<=7 我们的最优决策是把抽出来的那些相同颜色的书最后插在一起(所以要统计序列中还有没有相同元素的书) f[i][j][k][x]表示前i本书,抽出了j本,最后一本高度为k,高度集合为x 复杂度n*n*7*2^7 阅读全文
posted @ 2018-09-20 22:23 尹吴潇 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 题解: 什么鬼啊。。。 网上的都是直接暴力状压 那么复杂度是2^n*n的 那么n=30,m=0直接被卡掉了吧 首先先缩点这是很显然的 然后问题就变成了遍历这张图完全图的期望时间 f[s]=(1+f[s])*p[]+sigma(f[s']*p[]) 这个是个比较普通的期望dp方程 我觉得有一种优化的方 阅读全文
posted @ 2018-09-20 22:17 尹吴潇 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题解: 前面牛客网的那个比赛也有一道容斥+dp 两道感觉都挺不错的 比较容易想到的是 f[i][j]表示枚举到了i点,子树中有j个未匹配 这样的话我们需要枚举儿子中匹配状态 这样是n^2的(这是个经典的看似n^3实际n^2) 然后再枚举里面匹配了多少 再*n 所以总复杂度n^3的 计数问题考虑容斥 阅读全文
posted @ 2018-09-20 21:27 尹吴潇 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题解: 这垃圾题意 问题二分之后等价于 可重复路径判断能否覆盖一张图 1.用floyd连边(来保证可重复) 然后拆点跑最大流 然后答案=n-最大流 但这样子做本来复杂度就比较高,边数增加了n倍 2.我们可以直接上下界网络流,那样等价于限制某条边至少是1 然后求网络最小流就可以了 阅读全文
posted @ 2018-09-20 00:28 尹吴潇 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题解: 比较水啦。。dp套dp f[i][j][k]表示枚举了前i位,最大公共子序列匹配状态为j,noi匹配到了第k位 因为g[j]和g[j+1]最多差1 所以可以状压成j 然后内层再dp一下搞出下一个j 于是他的名字就叫做dp套dp了 代码: 阅读全文
posted @ 2018-09-19 21:45 尹吴潇 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 题解: 首先要证明一个东西 没有重边的图上 次小生成树由任何一颗最小生成树替换一条边 但是我不会证啊啊啊啊啊啊啊 然后就很简单了 枚举每一条边看看能不能变 但有一个特殊情况就是,他和环上的最大值相等,那么我们是不能替代的。。 所以我们不仅要维护最大值,还要维护次大值 阅读全文
posted @ 2018-09-19 20:58 尹吴潇 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 题解: 水题 f[i][j] 前i种用了j个,前缀和优化就可以了 阅读全文
posted @ 2018-09-19 20:06 尹吴潇 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 题解: 感觉我简直是个傻逼 把题目数据范围看错了。。 然后觉得这题非常的不可做 sigmaai <1e7.... 这题的dp是非常简单的,注意到d很小 f[i][j][k]表示前i个,%d为j,xor值为k的方案数 那么这样我们会发现如果第一个就非常大有点爆炸 sigma(2* max(a[1].. 阅读全文
posted @ 2018-09-19 00:03 尹吴潇 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题解: f[i]=f[n/(j+1)向上取整]+p*j+k 然后可以通过枚举每个数的因子来做 时间复杂度nlogn(打表看了一下sigma (i因子个数) 是比较接近nlogn的) 可以有方法优化到n^3/4 阅读全文
posted @ 2018-09-17 22:52 尹吴潇 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题解: 昨天好像做了个几乎一模一样的题目 按照ti排序 |p[i]-p[j]|<=2*(t[i]-t[j]) 然后去绝对值变为三维偏序 发现后两个式子可以推出ti<tj 所以就变成二维偏序 按照一个排序套线段树就可以了 代码非常好写 代码: 阅读全文
posted @ 2018-09-17 22:22 尹吴潇 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题解: 这个容斥以前做过 到i点的所有方案显然是个组合数 然后要减去不合法的方案数 我们可以考虑成减去到每个障碍点为第一次遇到的障碍然后之后乱走就可以了 因为模数不是质数,所以crt合并 阅读全文
posted @ 2018-09-17 22:02 尹吴潇 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题解: 网上的方法基本是建立在发现临位不能相等的基础上的 这个很好证。。 但是不利用这个特征也是可以的 x^2x=3x 我们考虑二进制的前i位,我们会发现3x最多涉及到了前i+2位 于是我们可以记录一下前i位的3x的i+1,i+2位的状态,以及第i位填了什么 因为后面的位置是不影响前面的位置的,所以 阅读全文
posted @ 2018-09-17 21:52 尹吴潇 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题解: t1数学题 初中数学技巧 把那个变成10^n-1/3 于是就是bsgs裸题 t2推推就能发现 那个东西等于每次最多限定在了两个区间内 直接做区间覆盖区间查询就可以了 差分O(n) t3我没有看懂题解啊。。。。 t4看来是比较前沿的算法就不学了。。。 阅读全文
posted @ 2018-09-17 20:54 尹吴潇 阅读(116) 评论(0) 推荐(0) 编辑
摘要: xx 阅读全文
posted @ 2018-09-17 00:13 尹吴潇 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 题解: 比较好想 首先注意到如果最暴力的做法复杂度无法接受 而5000的范围基本是n^2做法了 只使用已经遍历过的点数目和当前子树中的点数目转移我们知道复杂度是n^2的 于是大胆猜测一波同一个节点为根值域是连续的 然后就可以暴力dp了 查询的时候我们可以把序列差分一下(原问题等价于 区间修改,区间询 阅读全文
posted @ 2018-09-16 23:07 尹吴潇 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 题解: 水题 不过上限是4e8的 注意到这个数最大是99999999 即4599 我们可以直接数位dp f[i][j][0/1]表示前i位,和为j,和前面是否相等表示状态 阅读全文
posted @ 2018-09-16 22:00 尹吴潇 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 题解: 考试的时候没有想出来。。。 刚开始想了个比较错误的dp 后来想到了容斥。。 但是没有想到怎么去维护这个东西。。 按照一般的套路 至少有一个相邻相等的-至少有两个相邻相等的 但是这道题里这样并不好维护 我们考虑用dp来算这个东西 f[i]=f[j]*min(a[j].....a[i])*(-1 阅读全文
posted @ 2018-09-16 21:18 尹吴潇 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题解: 自己在这一类问题上想到的总是3^n的枚举法 首先背包从大到小排序 f[i]表示搞出为i的状态至少要用几个背包,g[i]表示最大剩余容量 这样就可以2^n*n 因为这么做利用了状态之间的先后顺序 代码: 阅读全文
posted @ 2018-09-16 20:12 尹吴潇 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题解: 计数题 首先考虑容斥 这题很明显加了限制状态就很多 考虑没有限制 显然可以直接dp 然后 我们看一下 容斥 某一个使用>=k张 那么其实就是 f[i-k*c[]] 于是这样就可以做了 阅读全文
posted @ 2018-09-15 23:29 尹吴潇 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题解: dp定义方程的时候 好像也不能都用前一个来递推。。这样就不能优化了 这题看了题解才想出来。。。 还是很简单的啊。。。。 我们定义f[i]表示前i个最大收益 那么j要能从i转移就得满足a[i]-a[j]<=i-j 这个建立线段树扫就可以了 代码: 阅读全文
posted @ 2018-09-15 22:34 尹吴潇 阅读(88) 评论(0) 推荐(0) 编辑
摘要: xx 阅读全文
posted @ 2018-09-14 00:23 尹吴潇 阅读(104) 评论(0) 推荐(0) 编辑
摘要: xx 阅读全文
posted @ 2018-09-14 00:21 尹吴潇 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题解 阅读全文
posted @ 2018-09-14 00:10 尹吴潇 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 题解: 和前面这题比较相似 依旧是在xn下同余 然后计算一下在这个区间的有多少就可以了 阅读全文
posted @ 2018-09-13 21:43 尹吴潇 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题解: 据说是最短路经典题 考虑mod c一意义下 我们会发现mod c相同的话我们一定会用最少步数到达,剩余的都用c转移 由于转移图有环所以我们用spfa来dp(其实也可以理解成最短路) wa了好多次。。。。初始距离是1不是0。。。。 代码: 阅读全文
posted @ 2018-09-13 00:22 尹吴潇 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 题解: 这题非常容易想到一个错误的贪心 就是按照ai排序 然后尽量取ai小的 但是有很明显的问题就是如果取了小的ai 那会导致那些原本可能存在这些ai就可以去掉的大的人因此不能取了 而有可能可以先去取他们再来取它(当它的b值很大时) 这道题的正解和noip那道国王挺像的 既然按照ai贪心不行 根据上 阅读全文
posted @ 2018-09-11 23:59 尹吴潇 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题解: 比较水 注意k<=100这个条件 当n-k比较大的时候 我们显然会把它有的位都给取了 不然的话我们可以考虑dp 暴力状压就可以了 代码: 阅读全文
posted @ 2018-09-11 00:05 尹吴潇 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题解: 有难度的dp 感觉比较容易想到的dp是f[i][j]表示能否完全删除 转移时枚举i',j'转移,这样用hash可以做到l^4 但是 这是错的 因为我们可以将序列分为三段或者更多段相加 所以刚才的定义是有问题的 既然可以多段我们显然不能暴力枚举,那么我们就记录匹配了多少 f[i][j][k][ 阅读全文
posted @ 2018-09-10 23:34 尹吴潇 阅读(146) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页