• 2024-10-02题解:SP23875 DCEPC14A - Another Version of Inversion
    我们注意到这道题是二维的,所以要用到二维树状数组,不会的可以看一下这篇文章。这题的思路和P1908很像,按价值从大到小排序,排完序之后用树状数组维护,每次把这个数的位置加入到树状数组中,因为是排完序之后,所以之前加入的一定比后加入的大,然后在查询当前这个数前面位置的数(是前面位
  • 2024-09-28CF2019C Cards Partition
    涉及知识点:鸽巢原理,贪心前言唐诗题,赛时都已经想到了所有性质,以为要从数学方法上求解,却没想到就是个纯贪心题……题意Link给你一堆数,\(1,2,3,\dots,n\),分别有\(a[1],a[2],a[3],\dots,a[n]\)个,你还可以添加不超过\(k\)个数(当然这些数得是\(1\simn\)中的整数),你需要将它们
  • 2024-09-16洛谷P10973 Coins
    //经典多重背包动态规划题#include<iostream>#include<cstring>usingnamespacestd;constintN=1e5+10;intused[N];intf[N],a[N],c[N];intn,m;intmain(){  while(cin>>n>>m&&(n||m))  {    memset(f,0,sizeoff);f[0]
  • 2024-09-13dp+知道结果求在过程的思维
    codeforcesC.Armchairsdp题,写不出来,我们应该这么去考虑,一共有n个苹果要放在n个箱子里,要全部放完使得苹果和箱子的总距离差值和最小,类似于背包,每个箱子放不放,放了确保最小的箱子容量不用考虑一一对应的。#include<bits/stdc++.h>#defineintlonglongusingnamespace
  • 2024-08-13暑假集训CSP提高模拟17
    A.符号化方法初探看最大数和最小数的绝对值大小,用至多\(n-1\)次让其符号相同,是正数就加前一个数,是负数就倒着加后一个数,最多\(n-2\)次。点击查看代码#include<bits/stdc++.h>constintmaxn=2e5+10;usingnamespacestd;intn,a[maxn],x[maxn],y[maxn],cnt,minn,maxx,
  • 2024-08-12zkw线段树
    介绍非递归线段树实现方法,码量较短。zkw线段树的构造原理:普通线段树采用堆存储,zkw线段树本质上是满二叉树(若没有该区间则为空点)但根据实际情况,原区间不一定构成满二叉树,据查询方式限制,空间开到最接近的\(2^n\)(据性质树值域=底层节点数),即不存在的点有虚点填充。既然不
  • 2024-08-072024杭电多校6-11
      CODE:1#include<bits/stdc++.h>2#definerep(i,a,b)for(inti=a;i<=b;i++)3#definedwn(i,a,b)for(inti=a;i>=b;i--)4#defineMAXN1025015#defineinf999999996usingnamespacestd;7typedeflonglongll;8inlinein
  • 2024-07-31二分答案
    P1182数列分段SectionII#include<bits/stdc++.h>usingnamespacestd;intn,m;intmaxx=0;inta[100005];//最大值最小化boolcheck(intx){longlongsum=a[0];intcnt=0;for(inti=1;i<n;i++){ if(sum+a[i]<=x) sum+=a[i]; else { cnt++;
  • 2024-07-29P2900 [USACO08MAR] Land Acquisition G
    P2900[USACO08MAR]LandAcquisitionG传送门思路:先将土地按照长\(H\)排序从后往前遍历如果有出现\(H[i]\leH[j]\\text{and}\W[i]\leW[j]\)则这块土地是没有贡献的(\(i\)与\(j\)拼单)处理完之后H从小到大有序,W从大到小有序方程:\(f[i]=f[j-1]+max(h[k])*
  • 2024-07-26Codeforces 913 div3 A-G
    A题意分析把给定的坐标的那一行和那一列的其他所有坐标都输出来C++代码#include<iostream>usingnamespacestd;intmain(){ intt; cin>>t; while(t--){ strings; cin>>s; for(inti=1;i<=8;i++){ if(i+'0'!=s[1])cout<<s[0]<<i<<end
  • 2024-07-25数据结构专题讲解
    数据结构专题讲解总结:1.绝大多数数据结构体题目本身都比较明显的有共通性,往往可以向树上转化2.对于二维的问题,我们往往可以将一维上建立树然后暴力处理另外一维来解决问题例题一P7476「C.E.L.U-02」苦涩题目简述:在YQH的梦中,他看到自己过去的记忆正在不断浮现在
  • 2024-07-01GESP 202406 四级认证 T1 题解
    大意:一个只包含000和111的矩形,边长为
  • 2024-06-22D. Yet Another Monster Fight
    cf链接洛谷链接方法一最大最小值问题我们很容易想到二分答案法。那么我们如何写出check函数呢?对于答案x,若x-i+1<a[i],则选定怪物一定不在i位置左侧,即L=i;若x-n+i<a[i],则选定怪物一定不在i位置右侧,R=min(R,i)。遍历数组,如果L<=R则答案符合题意;否则不符合。code #includ
  • 2024-06-13XOR的艺术
    #include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<algorithm>#include<cstdlib>#include<set>#include<map>#include<vector>#include<qu
  • 2024-06-08【模板】单源最短路径(Dijkstra + 堆优化)
    #include<iostream>#include<queue>usingnamespacestd;constintinf=2147483647;constintMAXX=2e5+11;intn,m,s,cnt;intdis[MAXX];intto[MAXX],nxt[MAXX],val[MAXX],h[MAXX];boolvis[MAXX];structnode{intv,w;friendbool
  • 2024-06-01数据结构复习笔记4:队列,双端队列,循环队列
    1.队列概念和特点        队列是⼀种特殊的线性表,特殊之处就在于它只允许在表的前端进⾏删除操作,在表的后端进⾏插⼊操作。和栈⼀样,队列也是⼀种操作受到限制的线性表。进⾏插⼊操作的端称之为队尾,进⾏删除操作的端称之为队头。队列中没有队列的时候,称之为空队列。
  • 2024-05-23CSP历年复赛题-P1085 [NOIP2004 普及组] 不高兴的津津
    原题链接:https://www.luogu.com.cn/problem/P1085题意解读:找到两数之和大于8且两数之和最大值的位置解题思路:不多说,送分题,直接模拟法即可100分代码:#include<bits/stdc++.h>usingnamespacestd;inta,b;intmaxx,maxn;intmain(){for(inti=1;i<=7;i++)
  • 2024-05-14难存的情缘
    抽象的题目(咱就是说,这个”难存的情缘“是指要把矿掏空吗)题目分析这个题目还是比较好理解的,我们需要干的有\(2\)个操作,但实际上有\(3\)个1:边权转点权2:单点修改3:链上最大值查询很明显是树刨板子题,操作中需要注意的有三点,如何转边权,最大值点权查多了,修改时的边
  • 2024-05-09洛谷题单指南-动态规划2-P4310 绝世好题
    原题链接:https://www.luogu.com.cn/problem/P4310题意解读:求最长的子序列长度,使得每相邻两个元素&操作不为0。解题思路:直观来看,可以通过类似最长上升子序列的算法,进行状态转移,但是复杂度为O(n^2),会超时状态表示:dp[i]表示前i个数能产生满足条件的子序列的最长长度状态转移:dp
  • 2024-05-05春季月考#3
    春季月考#3A.KillQuicksort经典的卡快排题。快排在数组正序/逆序是会到达最大的时间复杂度\(O(n^2)\),但是这个代码里边是随机选择的。我们发现他这个随机函数是定死的,而且种子已经告诉我们了。于是我们将计就计:先把所有数组元素值赋\(0\)模拟一遍快排把每一次查到的随
  • 2024-04-19P321. [NOI2002]荒岛野人Savage题解?!!!
    还是我容易(☚xzz说的)想出,x年后i号野人的位置为:\((C_i+P_i*x)\modm\)我们只要让任意方程:\((C_i+P_i*x)\modm=(C_j+P_j*x)\modm\)解小于\(L_i\)或小于\(L_j\)即可推式子!\[(C_i+P_i*x)≡(C_j+P_j*x)\(mod~m)\\⇿x*(P_i-P_j)+y*m=C_j-C_i\]然后就是拓展欧几里得模板了。
  • 2024-04-19P4168 [Violet] 蒲公英(题解)
    题目题目描述输入格式输出格式数据范围![]样例输入:63123212153615输出:121思路暴力本题求区间内的最小众数,容易想到去用数组sum[i]表示第i种花的个数,在去便利比较,但是复杂度nm一定会T,这时候就要对暴力进行优化。分块优化1如果我们将所
  • 2024-04-16洛谷题单指南-数学基础问题-P2660 zzc 种田
    原题链接:https://www.luogu.com.cn/problem/P2660题意解读:对一个长方形,切割出最少数量的正方形,计算所有正方形的边长。解题思路:长方形长、宽为x,y先判断x,y哪个长,哪个短长的作为l,短的作为s先切出s*s的正方形,一共可以切出l/s个,累加周长ans+=l/s*s*4在对剩下的s*
  • 2024-04-11长颈鹿烩面
    长颈鹿烩面题目链接solution直接考虑原问题是个dp,可以用数据结构优化dp来\(O(tn)\)求出\([1,t]\)中每个\(k\)的答案。也可以wqs二分\(O(n\logn)\)得到单点的答案。(实际上dp的时候还带并查集的复杂度)注意到wqs二分的斜率超过\(T\)时原序列会分成不超过\(O
  • 2024-04-042024-4-4 分块补题
    P3203[HNOI2010]弹飞绵羊记录每个位置跳出当前块所需要的步数和跳出的位置。从后往前统计#include<bits/stdc++.h>#definemaxn200100usingnamespacestd;intn,m,len;intpos[maxn],k[maxn];intnxt[maxn],stp[maxn];structfk{intl,r;}a[maxn];intread(){