- 2024-10-17【学校训练记录】10月个人训练赛3个人题解
A:根据题意我们可知,第一种事件为从1到i的和,第二种事件为从y到i的和故我们可以通过前缀和来保存从i到i+1所化的时间。再遍历寻找最小值即可#include<bits/stdc++.h>#defineendl"\n"#defineintlonglongusingnamespacestd;intn,a[1010];voidsolve(){ cin>>n;
- 2024-08-20CF293E Close Vertices
对于这种树上路径统计问题,一个经典解法就是点分治。如果没有两个限制,还是很简单的,对于单个限制,使用树状数组来解决就行了。但是这道题目要求两个限制,有点像二维偏序,但不完全是。可以说是分成了几个段,每个段之间求二维偏序,而要求段内不能产生贡献。如果这么表述这个问题的话,那就
- 2024-07-31C - Removing Coins
原题链接题解对于硬币数变为零的点,由于既不能穿越,也不能选取,所以等于删掉了所以操作就变成了,选取一个点,删除以其为根的树的所有叶子节点先将树退化成链,考虑链上操作的情况,如果选取链上端点,总节点数只减一,否则减二因此对于树上任意一条链,每次选取会导致要么减一要么减二,因此只
- 2024-07-29洛谷题单指南-前缀和差分与离散化-P2004 领地选择
原题链接:https://www.luogu.com.cn/problem/P2004题意解读:在一个n*m的矩阵中,找到边长为c的正方形,使得正方形范围内的数之和最大,输出正方形的左上角坐标。解题思路:二维前缀和的简单应用第一步:计算二维前缀和第二步:枚举边长为c的正方形左上角,计算正方形区域的数之和,更新答案第
- 2024-05-26小猴编程周赛C++ | 环形最大子段和
学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!附上汇总贴:小猴编程C++|汇总-CSDN博客【题目描述】给出一个长度为n的环形数组a1
- 2024-05-21CSP历年复赛题-P1023 [NOIP2000 普及组] 税收与补贴问题
原题链接:https://www.luogu.com.cn/problem/P1023题意解读:给定商品单价和对应销量表,计算使得采用预期价格销售得到最大利润时的最小补贴或者税收。解题思路:1、样例模拟31281303012031110-1-115政府预期价格:31商品成本:28,按成本价售卖销量:130商品单价:30,对应销量:120
- 2024-05-13P1854 花店橱窗布置
原题链接题解第\(i\)朵花的选择范围为\([i,m-n+i]\),而它一定是由第\(i-1\)朵花的某种选择继承而来的code#include<bits/stdc++.h>usingnamespacestd;intn,m;intdp[105][105]={0},pre[105][105]={0},a[105][105];intmain(){cin>>n>>m;for(inti=1;i<
- 2024-04-19L2-023 图着色问题
原题链接题解说用k种颜色,没说用少于k种code#include<bits/stdc++.h>usingnamespacestd;vector<int>G[505];intvis[505]={0};intcolor[505]={0};intv,e,k,n;intsolve(){for(inti=1;i<=v;i++){for(autonext:G[i]){
- 2024-04-18莫队
简介莫队是一种离线求区间信息的算法,可以做到\(O((N+Q)\cdot\sqrt{N})\)。莫队中使用了分块的思想。首先考虑一个问题:给定一个长度为\(N\)序列\(A\)和\(Q\)次询问,每次询问查询区间\([X_i,Y_i]\)的和。(请先忘掉前缀和、线段树、树状数组什么的)比如以下数据:54322
- 2024-04-12M. Triangle Construction
原题链接题解如果存在某一条边的\(a_i>=2*(sum-a_i)\)那么这条边一定有点剩余无法连接,为什么?这条边上每取两个点作为底边点,就一定能去外面一个点作为顶点,且无交叉(顺时针或逆时针)code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intmain(){ll
- 2024-04-01点分治
最近学了点分治,觉得挺厉害的,准备写一下加深印象。树上的东西都很抽象,所以自然要用抽象的东西来做,就比如点分治,点分治的思路是在当前的子树中找重心,然后用重心做事情,为什么用重心,因为重心可以使得复杂度降到log级别,然后再在这个子树里找你要的东西就行了,因为是每次都会用子树做,所
- 2024-03-09点分治
点分治是树分治的一种形式,通常用来求满足某种要求的路径数量。引入有\(n\)个数,问是否存在一个\(l,r\)使得区间和为\(k\),强行用分治做,可以将数组分成两半,递归后处理左边\(l\)右边\(r\),然后就用前缀和加\(map\)加归并的并做就可以了。思路可以将这个思路放到树上,分为
- 2024-02-04【算法】树分治
1.算法简介树分治(Treedivision),是处理树上路径类问题的算法。树分治又可以分为点分治与边分治。考虑这样一个问题:给定一棵有\(n\)个点的树,询问树上距离为\(k\)的点对是否存在。暴力的做法就是枚举两个点然后计算距离,统计答案。这样显然\(O(n^2)\)的。我们发现瓶颈在于
- 2023-10-08456. 132模式
链接https://leetcode.cn/problems/132-pattern/description/思路这题其实不难,就是边界条件难想。我们可以先保证单调栈里是逆序,然后判断单调栈中较小的值是否大于当前元素(满足132的1和2的关系)。代码classSolution:deffind132pattern(self,nums)->bool:
- 2023-06-15621. 任务调度器
难度中等1159给你一个用字符数组 tasks 表示的CPU需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在1个单位时间内执行完。在任何一个单位时间,CPU可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的
- 2023-06-12AIM Tech Round 3 (Div. 1)-C. Centroids
原题链接C.CentroidstimelimitpertestmemorylimitpertestinputoutputTree isaconnectedacyclicgraph.Supposeyouaregivenatreeconsistingof n vertices.Thevertexofthistreeiscalled centroid
- 2023-06-05常用数学分析的记号:“∃ ”:“存在”或“可以找到”,“∀ ”: “对于任意的”或“对于每一个”, maxS:数集S极大值,minS:数集S极小值
常用数学分析的记号:“∃”:“存在”或“可以找到”,“∀”:“对于任意的”或“对于每一个”。例如:A⊂B⇔∀x∈A,有x∈B,A⊄B⇔∃x∈A,使得x∉B。minS:极小值与maxS:极大值设S是一个数集,minS:如果∃ξ∈S,使得∀x∈S,有ξ≤x,则称ξ是
- 2023-05-20AC自动机
前言在学习AC自动机前,请确保已经学习并能熟练运用:KMP匹配字典树引入在漫长的OI路途,我们难免要接触到一种叫字符串的东西。在解决关于字符串的问题时,我们又难免要解决两个字符串匹配的问题,比如,在一个字符串s中,字符串t出现了多少次这些问题。(详见KMP匹配)而在OI路途也
- 2023-05-052432. 处理用时最长的那个任务的员工
分析:题目有点绕,但是大概意思就是给出的数组是多个任务logs[i][0]是员工编号,logs[i][1]是处理完当前i任务结束的时间而i任务需要的时间就是logs[i][1]-logs[i-1][1]求得最长的任务时间,如果有多个,就取员工编号最小的那个建立一个maxes量存最大时间,一个maxs存员工编号遍历数
- 2023-04-30剑指 Offer II 119. 最长连续序列
分析:题目意思是数组里面能组合起来最长的连续数组然后直接sort排序,如果中间差数不是1就不再连续,count归零当nums[i]和nums[i-1]相等的时候,跳过代码:1classSolution(object):2deflongestConsecutive(self,nums):3"""4:typenums:List[
- 2023-04-20每日打卡·
//#include<iostream>//#include<stdio.h>//#include<string>//usingnamespacestd;//char*search(char*s,char*t);//intmain()//{//chars[30]="";//charc;//c=getchar();inti=0;//while(c!='\n
- 2023-01-1055. 跳跃游戏
问题链接https://leetcode.cn/problems/jump-game/description/解题思路对这个题目进行贪心,对于每个格子,我们都可以求出从它可以跳到最远的那个格子。我们用一个t_maxs
- 2022-11-0111. Container With Most Water
Given n non-negativeintegers a1, a2,..., an,whereeachrepresentsapointatcoordinate(i, ai). n verticallinesaredrawnsuchthatthetwoendpoi
- 2022-10-28【ARC068F】Solitaire(dp,计数,思维)
首先发现那个双端队列一定长这样:也就是说,这个队列中的数先单调递减,然后再单调递增,最小值为\(1\)。现在考虑从双端队列中取数,那么当我们取到\(1\)这个数时,我们会在原
- 2022-10-25POJ 3122(二分答案)
二分答案……Programpie;constlef=0.00001;vart,n,f,i,j:longint;r:array[1..10000]oflongint;s:array[1..10000]ofdouble;maxs:double;procedures