• 2024-11-04数组暂存
    第1题(教材第10章“编程练习”的第3题):#include<stdio.h>#defineN110inta[N];intmain(){ intmaxx=-10000; intn; scanf("%d",&n); for(inti=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]>maxx)maxx=a[i]; }
  • 2024-11-04【寻迹#5】堆
    堆一、堆1.结构从二叉堆的结构说起,它是一棵二叉树,并且是完全二叉树,每个结点中存有一个元素(或者说,有个权值)。堆性质:父亲的权值不小于儿子的权值(大根堆)。同样的,我们可以定义小根堆。2.过程(1)插入插入操作是指向二叉堆中插入一个元素,要保证插入后也是一棵完全二叉树。最简单的
  • 2024-11-02CF1848B Vika and the Bridge
    思路:注意看,只有一次改变颜色,不要再苦苦打二分了!贪心地去求答案,对于每一种颜色记录两个点之间的距离的最大值和次大值,然后把最大值的那段区间的中点颜色更改成当前颜色。令最大值为maxx,次大值为max2。则min(⌊maxx/2​⌋,max2)  即为最优解。记得处理到n+1 号点的距
  • 2024-10-31POI2011/洛谷P3514 LIZ-Lollipop
    前言典中典思维蓝题难度薄纱模板水紫捏。\(1\)\(2\)序列这种也不是第一次见了,感觉多多少少都沾点Ad-hoc。话说这种考法真的好吗,一上来就是一个门槛很高的性质,推出来就满分,推不出来就\(0\)分,正推和反推的难度完全不是一个思维量级。题意Link给一个只有\(1\)和\(2\)
  • 2024-10-30D. Speedbreaker
    题意:给定长为n的数组a,a[i]属于[1,n]。开始时时刻为1,可以选定其中一个数,接下来每个时刻选定与已选定的数相邻的其他数,要求每个数被选定的时刻小于等于它的值。求满足这一条件的起点的数目。解:对于每个a[i],其要求起点的范围为[i-a[i]+1,i+a[i]-1],将n个区间取交集,即为可能的答案区
  • 2024-10-28D1 - The Endspeaker (Easy Version)
    题意:给出长为n的数组a,长为m的数组b和数字k,k初始值为1。每次可以执行以下两种操作之一:1.当k<=m时,k++;2.删除a前缀和小于等于b[k]的部分,同时cost+=m-k;求删完a的最小cost;如果不能删完a,输出-1.解:首先a最大值大于b[1]时无解。一开始想的是贪心,对于每一段a[i...j],如果其max(a[j...n
  • 2024-10-27Codeforces Round 982 (Div. 2)
    A.RectangleArrangement题目给定\(n\)个矩形,\(n\)个矩形可以组成的图形(可以重叠)中,最小的周长的多少,矩形不能旋转,分析乍一看并没有什么思路,但是写出这个题并不能,案例很好的提示了我们要将所有矩形一角放一起,那么最后就会组成一个阶梯形状的图案,感觉割补法,这个图形周长等
  • 2024-10-18C. New Game (二分)
    时隔多年又做题了这不得来水一篇博客题意:给出n个数,取一段连续的数字,最大数和最小数的差不超过k,使得取的数最多。解:对于每一个数,找到第最后一个连续的且与其差值不大于k的数,数一数期间一共有几个,然后取最大值。实现上先处理出连续的段,对于每一个数,找到对应的段,二分找出差值不大于
  • 2024-10-16[题解]NOIP2018模拟赛 plutotree
    题目描述给定一棵有\(n\)个节点的树,根节点为\(1\),节点\(i\)有权值\(w[i]\)。这棵树非常奇怪,它的每个叶子结点都有一条连向根节点的权值为\(0\)的边。给定\(q\)次询问,每次给定\(u,v\),请计算出一条\(u\)到\(v\)的路径(每条边最多经过\(1\)次),最小化该路径上的点权之和,并在其基础上最
  • 2024-10-16[题解]P3952 [NOIP2017 提高组] 时间复杂度
    P3952[NOIP2017提高组]时间复杂度我们把循环的嵌套关系看做树形结构,梳理一下\(3\)种情况:直接跳过当前子树:\(x,y\in\mathbb{N}\),且\(x>y\)。\(x=\tt{"n"},y\in\mathbb{N}\)。不跳过,并在处理完所有子节点后追加\(n\)的时间复杂度:\(x\in\mathbb{N},y=\tt{"n"}\)。
  • 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