摘要: 题意: 要建一个奶酪塔,高度最大为T。 有N块奶酪。第i块高度为Hi(一定是5的倍数),价值为Vi。 一块高度>=K的奶酪被称为大奶酪,一个奶酪如果在它上方有大奶酪(多块只算一次), 它的高度就会变成原来的4/5. 求最大奶酪价值 首先,要想得到最大价值的奶酪,要不就不要>=k的,要不就要一个,放在 阅读全文
posted @ 2018-09-02 21:29 olinr 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个01串,求满足0和1总数相等的最大字串 $n\ \le\ 10^5$ 1、$O(n^3)$枚举起点终点,统计判断是否成立 2、$O(n^2)$先$O(n)$时间计算01个数的前缀和,然后$O(1)$统计 然而 以上两种做法都会TLE 不难发现,对于算法2,判断成立的条件是$sum1[j 阅读全文
posted @ 2018-09-02 20:09 olinr 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题意:$n*m$棋盘放置k个皇后,问几个格子不被攻击 1≤n,m≤20000,1≤k≤500 开set判重暴力$O(n*k)$然而,setMLE了QAQ 正解确实是$O(n*k)$的 以hang[i]记录此行是否被占用 用c[i]动态维护没被占用的行有几个安全的,(枚举皇后打标记) 阅读全文
posted @ 2018-09-02 19:35 olinr 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题意:n个建筑,每个都需要修复,需要$t_i$的时间 若在$w_i$时之前还没修好,则GG 问最多能修几个 按GG时间排序 设当前建筑为i 若i能修,就修了 若不能修,在堆(维护$t_i$最大值)中找到之前最大的$t_j$ 若$t_j>t_i$那么很显然修当前的更优,就进行反悔操作 不修j了,修i 阅读全文
posted @ 2018-09-02 18:03 olinr 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 题意:一个无向图(不一定联通) 求最长链长 n≤20,m≤50 1、dfs #include<cstdio> #include<iostream> #include<cstring> #include<cctype> #include<algorithm> using namespace std; 阅读全文
posted @ 2018-09-02 16:59 olinr 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题意:DAG上有边权,求到终点dis期望 从1开始搜每一条路,分别记录dis与概率 搜到n让答案+=dis*概率即可 阅读全文
posted @ 2018-09-02 16:25 olinr 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个序列,初始是0,每次一个操作,把一个数^=1 每次求出最长01串的长度 正解:线段树(虽然暴力能过) 对于每个区间,记录三个值 lmax,以l为首的01串长度 rmax,以r为尾的01串长度 mmax,既不以l又不以r为为端点的完全包在区间内的最长01串长度 注意合并! #includ 阅读全文
posted @ 2018-09-02 15:55 olinr 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 题意:有n棵摇钱树,k天,每天可砍一棵并获得其金币 每棵树初始有$a_i$个金币,每天减少$b_i$个 问k天得到的最多金币数 这题很明显是DP(锻炼自己的机会来了QAQ) 设$f[i][j]$代表前i棵数,到第j天所得最大值 $f[i][j]=max(f[i-1][j],f[i-1][j-1]+a 阅读全文
posted @ 2018-09-02 14:22 olinr 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 题意: 求1-n的排列中逆序对数为k的排列个数 首先20分暴力next_permutation qaq 正解:DP 以f[i][j]表示1-i的排列有j个逆序对的方案、 考虑转移:对于新来的i 肯定是由i-1转移过来的 那么因为是排列,i一定比1--i-1都大 所以考虑它插入的位置 比如1 2 3 阅读全文
posted @ 2018-09-02 10:50 olinr 阅读(232) 评论(0) 推荐(0) 编辑