首页 > 其他分享 >2024.7.27 test

2024.7.27 test

时间:2024-07-27 20:30:16浏览次数:11  
标签:豌豆 27 寒冰 2024.7 那么 火炬 le test 尖刺

A

有 \(n\) 个火炬,分为寒冰的和火炬的,你要在这 \(n\) 个火炬前放置豌豆射手,给出每个豌豆射手的伤害。
求对于所有区间 \([l,r]\),在这些火炬前自由放置豌豆,到达最后一个火炬之后最大伤害的和。
其中如果最后是火炬/寒冰的豌豆伤害翻倍。\(n\le 1e6\)。

注意到如果有两个相邻的火炬/寒冰射手,那么前面的豌豆无论如何伤害都相同。
那么我们把相邻的火炬/寒冰都缩成段,剩下的都是交替出现的。
我们往后扫右端点,左边是先是交错的,再往前是相同的,发现剩下的都可以直接算出来。

B

在 \(n\times m\) 的草坪上,有若干大蒜,僵尸从右边开始走,询问每个 \(i\) ,第 \(i\) 行开始走最后能到多少行。
满足一列中不存在连续的三个大蒜。\(n,m\le 3000\)。

这是个 DAG 上求到达点集的问题,最优也是 \(O(n^3/\omega)\)。考虑挖掘性质。
我们考虑从终点往回推,注意到满足一列中不存在连续的三个大蒜,那么能到的行一定是一个区间。
证明是:设我们当前能到的只有一行,如果当前上/下方有一个大蒜,那么我们可以推到到上/下方这行。
如果要使得变成间隔开的两行,那么必须满足当前有三个连续的大蒜,是不合法的。
如果当前已经是区间了,那么更无法割裂这个区间。
所以逐个往回推即可,复杂度 \(O(nm)\)。

C

有一棵树,初始每个节点上有一个尖刺。\(m\) 次操作,每次给定一个点 \(x\),所有尖刺向 \(x\) 移动 \(d\) 的距离。
每次操作完后,查询有多少个节点上有尖刺。\(n,m\le 5e5\)

不难发现有尖刺的点构成一个联通块,每次移动 \(1\) 的距离相当于删掉叶子,并新加一个点。
那么,总共的删叶子的次数是 \(O(n+m)\),直接暴力维护即可。

D

有 \(n\) 条从 \(y=0\) 出发的射线,\(k>0\)。有 \(m\) 个屏障,位于 \((x,y_1\sim y_2)\),你要求每个射线是否穿过屏障。
\(n,m\le 8e4\)。

考虑 \(n\) 比较小怎么做,计算出所有射线的交点,就可以在 \(x\) 增大的同时维护所有射线当前大小关系。
那么我们对于每个屏障,在当前已经维护好的序列上二分即可。
那么 \(n\) 比较大,考虑分块,分成 \(\dfrac{n}{B}\) 块,每块都做一遍上面的过程就行了。
复杂度 \(O((B^2+m)\dfrac{n}{B}\log n)\le O(n\sqrt n\log n)\)。

标签:豌豆,27,寒冰,2024.7,那么,火炬,le,test,尖刺
From: https://www.cnblogs.com/Simon-Gao/p/18327416

相关文章

  • 2024.7.26 test
    A给定序列\(A\),构造\(p_i\),使得\(\sum|i-p_i|\)最小,且\(B=\{A_{p_i}\}\)满足奇偶交错出现,且最小化\(B\)字典序。\(n\le1e5\)。如果没有最小化字典序,那么我们奇偶分别按照相对顺序分配位置即可。最小化字典序怎么做呢?我们先把连续的向左或向右的连续段拿出来。例如......
  • SMU Summer 2024 Contest Round 8
    SMUSummer2024ContestRound8Product思路注意到\(\prod\limits_{i=1}^NL_i\le10^5\),也就是说N不会超过16,因为\(2^{17}>10^5\),所以我们可以直接暴搜。代码#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ios::sync_with......
  • 找出分区值(Lc2740)——排序
    给你一个 正 整数数组 nums 。将 nums 分成两个数组:nums1 和 nums2 ,并满足下述条件:数组 nums 中的每个元素都属于数组 nums1 或数组 nums2 。两个数组都 非空 。分区值 最小 。分区值的计算方法是 |max(nums1)-min(nums2)| 。其中,max(nums1) 表示......
  • 2024/07/27 每日一题
    LeetCode3106满足距离约束且字典序最小的字符串classSolution:defgetSmallestString(self,s:str,k:int)->str:ans=list(s);res=ord('a')fori,xinenumerate(map(ord,ans)):cnt=min(x-res,res+26-x)......
  • 算法训练 2024.7.27 17:25
    目录1.两数之和2.反转链表3.是否为有效的括号4.最长公共前缀5.合并两个有序数组6.岛屿的个数7.最小路径和8.三数之和9.计数质数10.字符串转换整数(atoi)1.两数之和题目:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整......
  • 2024.7.22至2024.7.27周总结
    本周学习任务清单数据结构:树链剖分。解题思路:CDQ分治,整体二分。数论:费马小定理,素数筛法,欧拉定理,逆元,拓展欧几里得算法,中国剩余定理,Miller_Rabin素数检测,PollarRho分解质因数算法。多项式和生成函数:拉格朗日插值法,普通生成函数。线性代数:向量,线性组合,线性变换,线性,矩阵,行列......
  • AtCoder Beginner Contest 363
    上周去玩了(逃A-PilingUp(abc363A)题目大意给定分数,问晋级还差多少分。分别到\(100,200,300\)分能晋级。解题思路找到第一个大于当前分数的,其差即为答案。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){io......
  • requsts、pytest、unittest区别
    在开始本文之前,我想跟大家澄清两个概念,一个是测试框架一个是测试工具。很多人容易把他们搞混了,测试框架是诸如Unittest、Pytest、TestNG这类,而测试工具指的则是Selenium、Appium、Jmeter这类。测试框架测试框架的作用是,帮助我们管理测试用例、执行测试用例、参数化、断言......
  • 每日一题- P2827
    可爱的单调性啊,不会#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongintn,m,q,u,v,t,a[100005];queue<int>que[3];signedmain(){ scanf("%lld%lld%lld%lld%lld%lld",&n,&m,&q,&u,&v,&t); for(inti=1;i&l......
  • docker 中的 Pytest 运行 venv 文件的测试
    我正在关注https://testdriven.io/courses/tdd-fastapi/pytest-setup/,但是当第一次运行docker-composeexecwebpython-mpytest时,我得到collected212items/24errors而不是预期的0个项目.简短的测试摘要信息显示在其他中ERRORenv/Lib/site-pa......