《信奥一本通》提高版—简要题解

《信奥一本通》提高版—简要题解

贪心

  1. 活动安排:

    • 按右端点排序,因为越早结束越好。
    • 然后从1扫到n,每次比较当前位置线段的左端点是否大于上一个选的线段的右端点。如果大于,那么ans++,将上一个选的线段的右端点更新为当前线段的右端点;如果小于,那什么都不用做。因为选上一条一定比选当前这一条更优(结束时间更早)。
  2. 种树
    • 按右端点排序,对于每个区间的需求,从右端往左端扫,只要没种到树的就种,ans++。
    • 因为要使前面的需求尽量与后面的需求重叠,从而使树的数量最少
  3. 喷水装置
    • 观察+画图发现对于一个圆,它实际上覆盖的有效区域是它与上边框交的两点之间的区间。那么对于一个圆就可以转换成一个区间。从而问题转换成为了“区间覆盖”。
    • 注意,有些圆太小与上边框没有交点,这样的圆可以直接舍去
  4. 加工生产调度
    • 设有两个工件x,y,时间为a1,b1和a2,b2。使用邻项交换法即可。
  5. 智力大冲浪
    • 用可撤销贪心。先将挑战按结束时间递增排序。然后只要有时间,就不断按顺序将挑战塞入优先队列。如果发现不能塞不进了,就看看是否能替换掉队列中危害最小的挑战。于是最后,m-被替换出来的挑战危害之和就是答案
  6. 数列极差
    • 找规律发现不断用最小的与乘次小的合成,得到的是max值。用最大的与次大的合成,得到的是min值。那么同“合并果子“的做法即可
  7. 数列分段
    • 对于每段新开的“内存”,在容量不大于m的情况下,能塞尽量塞。塞不进了再开一个新内存,ans++
  8. 线段
    • 同(“活动安排”)按右端点排序,对于当前位置,拿其左端点比较上一个选的线段的右端点。如果左端点>右端点,那么ans++,上一个选的线段的右端点更新为当前线段右端点;如果小于,就什么都不用管。因为选上一条一定比选当前这一条更优(右端点更前)。
  9. 家庭作业
    • 可撤销贪心。同“智力大冲浪“
  10. 钓鱼
    • 从样例解释中可以隐隐约约察觉出:赶路时间与钓鱼时间是独立的,两者没有互相影响。那么就可以枚举结束点(从1枚举到n),直接可以算出赶路所需时间,那么拿(总时间-赶路时间)/5可以得到钓鱼次数m。那么问题就转换成了“从n个序列选m个最优元素“了。
  11. 糖果传递
    • 没有环的话,就是“均分纸牌”。那么对于此题可以断环成链,取最优值。复杂度会爆炸。
    • 用数学办法,假设断环的位置为k。那么就变成了a(k), a(k+1), … , a(n), a(1), a(2), … , a(k-1)。
    • 位置k的贡献为a(k)
    • 位置k+1的贡献为a(k)+a(k+1)
    • 位置n的贡献为a(k)+a(k+1)+…+a(n)
    • 发现每个位置的贡献都=前一个位置+a(当前位置)。那么为了方便表达,用c(x)表示a()的前缀和。
    • 那么重新表达后如下:
    • 位置k的贡献为c(k)-c(k-1)
    • 位置k+1的贡献为c(k+1)-c(k-1)
    • 位置n的贡献为c(n)-c(k-1)
    • 位置1的贡献为c(n)-c(k-1)+c(1)-c(0)=c(1)-c(k-1) C(n)一定为0
    • 那么其实位置x的贡献为|C(x)-C(k-1)|
    • 那问题不就转换成为了将C()看成一个个点,求某个点x,使得其余点到x的距离之和最短。显然x为中位数

二分/三分

  1. 愤怒的牛:

    • 同“跳石头”,二分最短跳跃距离,看看最后所需隔间数是否>=m
  2. Best Cow Fences:
    • 二分平均数,将序列每个元素减掉平均数,那么问题就转换成了是否存在一个长度>=L的区间的区间和>=0。这个问题用一个数组mn[x]记录前x个前缀和中的最小值,然后从L枚举到N,看看sum[x]-mn[x-L]是否>0就好了
  3. 曲线:
    • 首先需要证明:函数g(x)=max{n个开口向上的二次函数},其依然具有下凸性。
    • 使用数学归纳法,假设只有两个二次函数,那么其合成后一定是一个下凸性函数。那么假设有三个二次函数,将两个合成为一个下凸性函数后再与第三个二次函数合成后仍然后下凸性函数。那么n个二次函数同理可证,仍为下凸性函数。
    • 那么在峰值函数中找最值显然三分即可

原文地址:https://www.cnblogs.com/BigYellowDog/p/12251828.html

时间: 2024-09-30 15:10:37

《信奥一本通》提高版—简要题解的相关文章

信息学竞赛一本通提高版AC题解—例题1.1活动安排

书中代码有误.书中为sort(a+1,a+n+1,Cmp). // // Created by yuxi on 19-1-13. // /* * * <信息学竞赛一本通-提高版>全部AC解答及解释 * * 第一部分 基础算法 * 第一章 贪心算法 * 例题1 活动安排 * */ #include <iostream> #include <algorithm> #include <fstream> #include <string> using n

信奥一本通-树状数组模版题目-修改数列元素+求子数列元素和

给定n个数列,规定有两种操作,一是修改某个元素,二是求子数列[a,b]的连续和.数列的元素个数最多10万个,询问操作最多10万次. 输入 第一行2个整数n,m(n表示输入n个数,m表示有m个操作) 第二行输入n个数列. 接下来m行,每行有三个数k,a,b(k=0表示求子数列[a,b]的和:k=1表示第a个数加b). 输出 输出若干行数字,表示k=0时,对应的子数列[a,b]的连续和. 样例输入 10 5 1 2 3 4 5 6 7 8 9 10 1 1 5 0 1 3 0 4 8 1 7 5 0

月考简要题解

模拟赛简要题解 一下题目均可在loj上找到 10178. 「一本通 5.5 例 4」旅行问题 简单题,将n扩大到2 * n,单调队列即可,注意正反向. #include<iostream> #include<cstring> #include<cmath> #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int N=2000

AGC025简要题解

AGC025简要题解 B RGB Coloring 一道简单题,枚举即可. C Interval Game 考虑可以进行的操作只有两种,即左拉和右拉,连续进行两次相同的操作是没有用的. 左拉时肯定会选择右端点尽量小的,右拉选择左端点尽量大的,所以排序之后贪心即可. D Choosing Points 首先证明对于所有\(d\),假设让两个不能同时选的点之间连一条边,那么结果是一张二分图. \(d\)是奇数可以黑白染色,\(d\)是偶数的时候,显然连边的两点在同一个颜色内.那么我们可以只考虑这个颜

LJN数理化生信奥队自传

LJN数理化生信奥队, 原名"LJN信奥队". 联系方式: QQ:3046036317 QQ群:555088375 (Offical群) 701124785 (Vip群) 邮箱:[email protected] 原文地址:https://www.cnblogs.com/ljnoit/p/9738077.html

【一本通提高数位动态规划】windy数

传送门[一本通提高数位动态规划]windy数 #include<bits/stdc++.h> using namespace std; #define ll long long ll dp[15][15],ans; bool vis[15][15]; ll a[15]; ll l,r,len; ll dfs(ll pos,ll pre,ll zero,ll limit) { if(pos>len)return 1; if(!limit&&vis[pos][pre])ret

JXOI2018简要题解

JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法描述大致如下: 假设我们要对一个大小为 \(n\) 的数列 \(a\) 排序. 等概率随机生成一个大小为 \(n\) 的排列 \(p\) . 构造一个大小为 \(n\) 的数列 \(b\) 满足 \(b_i=a_{p_i}\) ,检查 \(b\) 是否有序,如果 \(b\) 已经有序了就结束算法,并

BJOI2018简要题解

BJOI2018简要题解 D1T1 二进制 题意 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 \(3\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生成了一个长为 \(n\) 的二进制串,希望你对于这个二进制串的一个子区间,能求出其有多少位置不同的连续子串,满足在重新排列后(可包含前导 \(0\))是一个 \(3\) 的倍数.两个位置不同的子区间指开始位置不同或结束位置不同. 由于他想尝试尽量多的情况,他有时会修改串中的一个位置,并且会进行多次询

杂题记录及简要题解(三)

以下是大概 5 月初开始做的一些题.以前的简要题解都是骗人的.这次真的是简要题解了(大雾 相对之前改良了一下题目名称的格式. 2017 计蒜之道 初赛 - 腾讯狼人杀 二分答案 \(x\) 后原问题变为检验是否存在选取方案 \((V, E)(|V| = k)\) 使得 \(\sum_\limits{e \in E} w_e - xk \cdot (2n- k)\).式子可以写成 \(\sum_\limits{e \in E} w_e + \frac{k(k - 1)}{2} \cdot 2x -