随笔分类 -  OI刷题之路

狂奔的弱鸡qwq
摘要:一年OI一场空,原题game见祖宗 阅读全文
posted @ 2018-11-12 09:57 Splitor 阅读(569) 评论(0) 推荐(0)
摘要:天下本无不散之宴席,纵使风和雨,无悔入OI。 阅读全文
posted @ 2018-11-12 08:57 Splitor 阅读(342) 评论(0) 推荐(3)
摘要:水题 19:46开始看题,20:09AC 就是大力dp啊,设dp[i][j]表示考虑到第i个点,距离它为j的数量,第一次倒推,求出子树中的,第二次正推,从父节点转移 转移见代码 阅读全文
posted @ 2018-11-07 20:14 Splitor 阅读(147) 评论(0) 推荐(0)
摘要:区间do 大力设状态,设dp[i][j][0/1]代表左右端点位i,j的区间,最后加入的是左端点还是右端点。转移: // luogu judger enable o2 include include include include include include include include in 阅读全文
posted @ 2018-11-07 12:29 Splitor 阅读(135) 评论(0) 推荐(0)
摘要:线段树优化线性dp 拿到一道题目直接大力dp,设dp[i][j]表示考虑到第i个点并将其选中,且已经选了j个点的最优解,cost[i][j]表示选了i,j,之间的代价,显然可以压维: $$dp[i] = max (dp[k] + cost[k][i] ) +c[i] (j 1 include inc 阅读全文
posted @ 2018-11-05 17:31 Splitor 阅读(166) 评论(0) 推荐(0)
摘要:简单数学题 题目要求:$$\sum _{i=1}^a i^b mod10000(a,b 阅读全文
posted @ 2018-11-05 14:59 Splitor 阅读(196) 评论(0) 推荐(0)
摘要:棋盘形可行性dp 这种首先大力设状态:dp[i][j][k]代表考虑到 i,j;mod之后等于k是否可行,那么转移就很显然了,大力N^3转移就好了 include include include include include include include include include defi 阅读全文
posted @ 2018-11-05 14:54 Splitor 阅读(140) 评论(0) 推荐(0)
摘要:大力dp 一个正着跑,一个倒着跑,可以转换成两个正着跑 为了解决去重问题,我们规定第一条线不能越过第二条线,(没什么影响,不信画画图看看),这样就有一个显然的四维dp了,注意两个相等时要去一个 include include include include include include inclu 阅读全文
posted @ 2018-11-05 09:33 Splitor 阅读(134) 评论(0) 推荐(0)
摘要:悬线法 悬线法是一种解决矩形问题的利器,你可以抽象为:每个点都是一个固定着针的底座,你需要求出她的活动范围。 我们开3个数组:up,ll,rr代表了左、右、上的边界,那么最后我们遍历一下所有的点就能求出最大值。 怎么求up、ll、rr? up:如果上边的点和她反色,那么up[i][j]=up[i 1 阅读全文
posted @ 2018-11-05 08:58 Splitor 阅读(236) 评论(0) 推荐(0)
摘要:next_permutation可以将一个序列变为第一个字典序大于她的序列,并且本身具有返回值,如果不存在字典序大于她的序列了就返回false 所以,标准用法: int len=3; do { rep(i,1,len) cout 阅读全文
posted @ 2018-11-04 08:18 Splitor 阅读(461) 评论(0) 推荐(0)
摘要:线段树+组合数学 这道题直接做好像根本不可做,考虑转化:我们可以用任意方案数 不合法的方案数,那么答案为:$$C_n^3 \sum_{i=1}^{n} C_{ki}^2$$ 其中ki为第i个点能打赢的人数。为什么是这样的:一个方案不合法只要一个人能打赢两个人就行了。 怎么求ki?考虑线段树,首先将所 阅读全文
posted @ 2018-11-03 08:00 Splitor 阅读(305) 评论(0) 推荐(0)
摘要:权值BIT || 线段树 ~~写一下主要是注意下别把边界打错了qwq~~ include include include include include include define maxn 500006 define max MAX using namespace std; inline int 阅读全文
posted @ 2018-11-01 20:14 Splitor 阅读(151) 评论(0) 推荐(0)
摘要:一道十分interesting的题目 这道题显然要使用数据结构维护。但是n的规模十分大。我们便可以开n棵线段树,动态开点。但是最后一列比较特殊,所以我们再开一棵线段树维护最后一列。至于怎么操作?我们考虑权值线段树。权值线段树一般是维护:权值为[L,r]的数有多少是满足某种条件的。本道题目中我们维护区 阅读全文
posted @ 2018-11-01 17:10 Splitor 阅读(223) 评论(0) 推荐(0)
摘要:set+树上操作 这道题主要是用set维护每个点的01序列,然后启发式合并 但是我~~tm(拒绝口吐莲花)~~调了好几个小时!!!!!!!!!!!!!!!!!!!!!!!!! 主要是set的使用问题: 1、set一定要插入一个极小值,不然可能会越界RE 2、set使用的迭代器还是很好用的,并且迭代器 阅读全文
posted @ 2018-10-31 17:39 Splitor 阅读(158) 评论(0) 推荐(0)
摘要:虽然清北经常出锅,但是还是有很多需要总结的 Day1: R1:这套题是典型的不可做类型,遇到三道神仙题目时,尽量刚出T1,不要被数学吓到了,推推式子有可能就出来了。剩下两个题目如果完全不知道算法,就应该果断开始打暴力,尽量把一些部分分较高的暴力拿到手,不要浪费时间想正解。 R2:在NOIP阶段如果一 阅读全文
posted @ 2018-10-29 22:11 Splitor 阅读(206) 评论(0) 推荐(0)
摘要:定理: 无向图G存在欧拉通路的充分必要条件:G为连通图,并且G仅有两个奇度结点(度数为奇数的节点)或者无奇度结点。 推论1:当无向图G是有两个奇度的连通图时,G的欧拉通路必定以这两个结点为端点。 推论2:当无向图G是无奇度的连通图时,G必有欧拉回路。 有向图D存在有向欧拉通路的充分必要条件:D为有向 阅读全文
posted @ 2018-10-24 11:00 Splitor 阅读(246) 评论(0) 推荐(0)
摘要:dp+排列组合 【题目描述】: 给你一串序列,定义一个数是好的当且仅当这个数只含有4或7,定义一个不幸运的序列当且仅当这个序列不含有两个相同的好数,求长度为k的不幸运的子序列的个数,对1e9+7取模 n,k 阅读全文
posted @ 2018-10-21 16:11 Splitor 阅读(154) 评论(0) 推荐(0)
摘要:鬼畜dp,状态设计十分反人类。 这道题最显然的做法肯定是:dp[i][j]表示消去i,j的最大价值。但是这道题有一个问题:左右端点两边的连续的块可能会对她产生影响。这就十分难受。有一个~~常见~~的套路就是加维。 令:dp[i][j][k]代表:消除i j区间,且j连接着K个与j颜色相同的块的最大价 阅读全文
posted @ 2018-10-19 20:04 Splitor 阅读(135) 评论(0) 推荐(0)
摘要:区间dp 思路挺好想的,不过实现......极其鬼畜 令dp[i][j][k]表示i j区间能否合为k,pan[b][c]表示b,c字母能合并为哪些字母。 转移方程:$$dp[l][r][a]=dp[l][r][a] | (dp[l][k][b]\cap dp[k+1][r][c]) K\epsil 阅读全文
posted @ 2018-10-18 21:01 Splitor 阅读(216) 评论(0) 推荐(0)
摘要:dp 一眼看上去就要统计方案:设dp[i][k]代表考虑到第i行,满足价值总和为k的方案数。 转移挺简单的:$$dp[i][k]=\sum \limits_{j=1}^m dp[i 1][k j]$$ code: 阅读全文
posted @ 2018-10-18 17:21 Splitor 阅读(173) 评论(0) 推荐(0)