题意 在一排奶牛中,对于每两头奶牛,如果两头奶牛之间没有奶牛比这两头高,则答案累加这两头奶牛的距离. 分析 设现在分析的奶牛为第 \(i\) 头,它向左扔出了一个飞盘,显然它的飞行高度为奶牛的高度.飞盘不断飞行,直到有一头奶牛的身高大于它的飞行高度,此时飞盘停下.那么这头奶牛向左扔飞盘对答案的贡献就是飞盘经过的所有奶牛到他的距离之和. 实现 维护一个单调栈,每次循环进入一个数 \(a_i\) ,就向前不断寻找直到找到一个 \(b_i > a_i\) , 此时最终答案加上\(i - b_i + 1…
ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生生把一个弱智题变成了一个不可做题 最后竟然在转化两次后的模型上以为自己做出来了 这个题比别人多花的1h左右的时间,而且只得到了30分,成为了这场比赛失败的关键因素 T2 依旧是一道简单题 有人20min之内就A掉了 感觉放在CF里最多算一道Div2 D,还是简单的那种 可是我又一次想复杂了 大意就是…
NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的数,认为那些数会分解数字k从而破坏掉k的美感-- 有一天,他想:如果所有人都和自己一样,那么是不是喜欢两个含有倍数关系的不同数字的人就不能做朋友了?于是他想,至少用多少个集合,才能包括1到n的所有n个整数,使得所有存在倍数关系的两个不同数字在不同的集合里面? 小明脑子不好使,于是把问题交给了你. […
NOIP2017提高组 模拟赛13(总结) 第一题 函数 [题目描述] [输入格式] 三个整数. 1≤t<10^9+7,2≤l≤r≤5*10^6 [输出格式] 一个整数. [输出样例] 2 2 4 [输出样例] 19 [解题思路] 证明:对于n个人,分解成质因数,按质数个人分为一组(从小到大). 例如:30可以分成2 * 3 * 5,那么一开始2人为一组,共有15组.再分成3人为一组,然后有5组.再分成5人一组,有1组. 为什么这是最优的? a,b是n的质因数 设\(\frac{n}{ab}=x…
NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的你一定想到了,FJ的信息都是以文件夹名称的形式保存的.FJ给机密盘中的每一个文件夹都编了号,而FJ的机密信息是由S文件夹转到T文件夹的过程中必须经过的文件夹名称组合而成的,由于FJ的磁盘很慢,打开每个文件夹所耗费的时间等于该文件夹内下一级文件夹的数量.这次的任务是,给出每个文件夹的编号.名称以及它的…
NOIP2017提高组模拟赛 8(总结) 第一题 路径 在二维坐标平面里有N个整数点,Bessie要访问这N个点.刚开始Bessie在点(0,0)处. 每一步,Bessie可以走到上.下.左.右四个点.即假设Bessie当前所在点的坐标是(x,y),那么它下一步可以移动到(x,y+1), (x,y-1), (x+1,y), (x-1,y)之一. Bessie目标是找到一个移动序列,满足下面的条件: 1.从点(0,0)出发. 2.对于给定的那N个点,每个点至少被访问一次. 3.可以选择那N个给定点…
NOIP2017提高组模拟赛 9 (总结) 第一题 星星 天空中有N(1≤N≤400)颗星,每颗星有一个唯一的坐标(x,y),(1≤x,y ≤N).请计算可以覆盖至少K(1≤K≤N)颗星的矩形的最小面积.矩形的边必须平行于X轴或Y轴,长度必须为正整数.星如果在矩形的边上,也认为它是属于矩形内的. 思路:枚举矩形左上角的x,以及在x轴上的长度(矩形的长),然后单调的往下扫. #include<cstdio> #include<algorithm> #include<cmath&…
NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们可以以45度角击球. 每一个击球点你都可以向两个方向击球,例如像下图所示. 从S点击球有两种路线.提供桌子的尺寸,你的任务是计算出有多少种不同的击球方式使得球能入袋.球可视为质点,且无任何阻力,反弹时无能量损失. 一个简单的证明:当一个球的运动轨迹形成一个环时,那么它必定不会到达四个角.所以对于从一…
NOIP2017提高组模拟赛5 (总结) 第一题 最远 奶牛们想建立一个新的城市.它们想建立一条长度为N (1 <= N <= 1,000,000)的 主线大街,然后建立K条 (2 <= K <= 50,000)小街, 每条小街的尽头有一间房子(小街的其它位置没有房子).每条小街在主线大街的P_i 处分支,(0 <= P_i <= N) , 小街的长度是 L_i (1 <= L_i <= 1,000,000).FJ想知道最远的两个房子之间的距离是多少. 其实…
NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产生所有的非素数. 可以通过5次变化得到. 24: 4->6->8->12->18->24. 现在给你两个整数N 和 M, 求最少需要多少次变化才能到从 N 变到 M. 如果没法从N变到M,输出-1. 这道题就是很简单的bfs,可以观察到n变化到m是近似成倍增长的.其实从最小到最大…
T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check时间复杂度不太对),check的时候把大于等于当前值的设为1,小于当前值的设为-1,然后题目就变成了查询是否有区间的值大于零(因为和它相同的我们也设为了1). 查询的时候维护一个前缀最小值. #include <iostream> #include <cstdio> #include…
题目链接 问题 A: 整数分解为 2 的幂 题目描述 任何正整数都能分解成 2 的幂,给定整数 N,求 N 的此类划分方法的数量!由于方案数量较大,输出 Mod 1000000007 的结果. 比如 N = 7 时,共有 6 种划分方法. 7=1+1+1+1+1+1+1 =1+1+1+1+1+2 =1+1+1+2+2 =1+2+2+2 =1+1+1+4 =1+2+4 输入 输入一个数 N(1≤N≤10^6) 输出 输出划分方法的数量 Mod 1000000007 样例输入 7 样例输出 6 先放…
T2:找min:一直找最小的那个,直到a[i]-x+1小于0,就找次小的,以此类推: 求max,也是一样的,一直到最大的那个,直到次大的比之前最大的大,就找次大的: 这个模拟,可以用上priority_queue: #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <queue> using namespace std; c…
T1只想到了找环,> <倍增的思想没有学过,所以看题解看得雨里雾里的(最近真的打算学一下! 题目出的挺好的,觉得noip极有可能出现T1T2T3,所以在此mark 刚开始T1以为是模拟,还妄想这可以一遍处理出所有的环,和各个数之间的关系(> <结果自己把自己绕进去了,因为根本不可以!) 然后后面改了暴力,每问一次就处理一次: 正解没看懂QAQ..应该是不太懂思想的缘故 暴力: #include <cstdio> #include <cstring> #inc…
火山喷发 火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 n 个生物分别具有 A​1​​,A​2​​,⋯,A​n​​点生命值,一次火山喷发总计 MM 轮,每轮造成 11 点伤害,等概率地分给所有存活的生物,即如果目前有 K 个活着的生物,每个生物受到这点伤害的概率是 1/K​​.如果一个生物的生命值减为 0,它会立即死去,此后都不会再占用受到伤害的概率.如果没有生物存活,那么将没有生物会受到伤害. 现在你的任务是,给定 n,M 和全部生物的生命值,…
T1:小X的质数 小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小 X 认为,质数是一切自然数起源的地方. 在小 X 的认知里,质数是除了本身和 1 以外,没有其他因数的数字. 但由于小 X 对质数的热爱超乎寻常,所以小 X 同样喜欢那些虽然不是质数,但却是由两个质数相乘得来的数. 于是,我们定义,一个数是小 X 喜欢的数,当且仅当其是一个质数,或是两个质数的乘积. 而现在,小 X 想要知道,在 L 到 R 之间,有多少数是他喜欢的数呢? 输入格式 第一行输入一个正…
Day 2 rank 11 100+35+30=165 本题是一道数论题,求ax+by=c的正整数对(x,y) x>=0并且y>=0 先说下gcd: 求a,b公约数gcd(a,b) 如gcd(4,6)=  2 辗转相除法 gcd(a,b)=gcd(b,a%b) 证明一下,令a=kb+r,那么r=a%b; 设d为(a,b)的一个任意公约数d,所以d|a且d|b 因为r=a-kb因为d|a且d|b,所以d|r注意到我们的d是任意选取的, 那么最大公约数是属于这个公因数集合里的所以gcd(a,b)=…
U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不咕鸟Lyn_king一个人冒着太阳等了半个多小时,然后居然看到连ENLIGHTENED行动参谋都咕咕咕了,果然咕咕咕是人类的本性啊. 题目描述 作为一个ENLIGHTENED行动指挥,自然不想看到这一点,于是他偷取到了那些经常咕咕咕的Agent的在下来N天的活动安排表,并且叫上了你来整理.在整理过程…
U41568 Agent1 题目背景 2018年11月17日,中国香港将会迎来一场XM大战,是世界各地的ENLIGHTENED与RESISTANCE开战的地点,某地 的ENLIGHTENED总部也想派Agent去参加这次的XM大战,与世界其他地方的ENLIGHTENED并肩作战. 题目描述 某地的ENLIGHTENED总部总部有N个Agent,每个Agent的能力值互不相同,现在ENLIGHTENED行动指挥想要派出A,B两队Agent去参加XM大战.但是参加大战的两个队伍要满足两个要求: A队…
T1 动态点分治 就是模拟..... 但是没有过!! 看了题解之后发现.... 坑点:有可能 \(x<=r\),但是…
T2count题解 [ 问题描述]: 小 A 是一名热衷于优化各种算法的 OIER,有一天他给了你一个随机生成的 1~n 的排列, 并定 义区间[l,r]的价值为: \[ \huge C_{l,r}=\max(a_i-a_j|l \le i,j \le r ) \] 他想请你告诉他, 所有区间的价值的总和为多少 [ 输入] 第一行一个数 T(<=10), 表示数据组数 对于每一组数据: 第一行一个数 n( 1<=n,m<=100,000) 第二行 n 个数 a1...an, 表示一个 1…
得分: \(100+5+100=205\)(真的是出乎意料) \(T1\):抵制克苏恩(点此看题面) 原题: [BZOJ4832][Lydsy1704月赛] 抵制克苏恩 应该还是一个比较简单的\(DP\)吧(我是用记忆化搜索实现的). 可以用\(f_{n,A,B,C}\)来表示还有\(n\)个回合,三种血量奴隶主个数分别为\(A,B,C\)时所造成的期望伤害. 比较显然,应该有四种情况: 第一种情况:对一血奴隶主造成伤害.这样就杀死了一个一血奴隶主,且不会增加新的奴隶主,因此可以将\(f_{n,…
Problem A 快递 根节点为$1$ , 含有$n$个节点的树,每一条边都有一段开放的时间$[s_i,e_i]$,和经过需要的时间. 有$q$组询问,每一次在时刻$t_i$出发从根节点出发走到第$u$个节点,沿着最短路走,询问是否可行. 注意到,当在边开放的时间走到这条边上均被认为合法,走出边的时间不会因此而限制. 对于$100\%$的数据,满足$1 \leq n,q \leq 5\times 10^5$ Solution : 考虑能否到达$u$的条件,就是能否在$u$上方的那条边$(fa,…
传送门 ## T1 区间修改+单点查询.差分树状数组. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; inline int rd(){ ,f=;char ch=getchar(); :;ch=getchar();} )+(x<<)+ch-';ch=getchar();} return f?x:-x; } void out(int x){ if(!x)…
这道题非常简单啊,我看很多人都做出来了,张林昨天也讲的很明白了,那我来简单写一下: 暴力思路(10pts) 我们发现,我们只需要模拟画出一个图然后进行暴力枚举就行了. 差分+桶+加乘原理思路(100pts) 我们明显发现,这道题是可以运用差分的思想去做的,即 \(a_i+a_j\) 的地方加上 \(x_i \times x_j\) , \(b_i+b_j+1\) 的地方减去 \(y_i \times y_j\) . 但是我们发现这样子做时间复杂度是 \(O(n^2)\) ,我们发现 \(a,b,…
https://nanti.jisuanke.com/t/17323 小 X 正困在一个密室里,他希望尽快逃出密室. 密室中有 N 个房间,初始时,小 X 在 1号房间,而出口在 N号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会单向地创造一条从房间 X 到房间 Y 的通道.另外,想要通过某个传送门,就必须具备一些种类的钥匙(每种钥匙都要有才能通过).幸运的是,钥匙在打开传送门的封印后,并不会消失. 然而,通过密室的传送门需要耗费大量的时间,因此,小 X 希望通过尽可能少的…
传送门 发现这题选或不选对状态的优劣程度不会产生影响,如果已经确定了两个数a和b,那么最优的首项和公比也都是唯一确定的, 与对于后面的数x,加进去也好不加进去也好,首项和公比依旧是原来的 于是我们用尺取算法,用两个指针来扫一遍, 如果只有一个数且下一个数能被整除,就加进去,然后确定首项和公比 如果只有一个数且下一个数不能整除,两个指针直接指向下一个数 如果有多个数且下一个数满足公式,就加进来 如果有多个数且下一个数不满足公式,两个指针直接指向下一个数 这样对于最优解,一定是可以找到的 顺便说下最…
传送门 很水的题目啦QAQ #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<set> #include<queue> #include<vector> #define INF 0x7f7f7f7f #define pii pa…
传送门 这题可以用线段树来维护 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<set> #include<queue> #include<vector> #define INF 0x7f7f7f7f #define pii…
传送门 用hash,因为map的复杂度可能在这题中因为多一个log卡掉,但是hash不会 可能因为这个生成的随机数有循环的情况,不是完全均匀的 而且这题hash表的长度也可以开的很大 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<set> #inc…