• 2024-10-26ABC372
    D题目大意:\(n\)座建筑排成一排,每座建筑的高度为\(h_i\)。\(\foralli\in[1,n]\),找出满足下面条件的\(j\)的数量:在建筑\(i\)到\(j\)中,没有建筑比\(j\)高的\(j\in[i+1,n]\)\(n\leq2\times10^5\),\({h}\)是\(1\)到\(n\)的排列。分析:考虑\(i\)不好处理,我们改为考虑每个
  • 2024-10-23SCP-S总结
    没交代码啊,肯定没交蛤。这是不好的,下次尽量。T1P11188「KDOI-10」商店砍价是不是不太好想?没事,后面看数据范围,有惊天秘密你什么$v_i$这么小,才1e5?一般不都有1e9吗其实破题的关键就在这里了,算是一种比较另类的考虑方式(我太菜了)就是您去想想最极端的情况,就算全部都单删
  • 2024-10-18[ABC373E] How to Win the Election
    [ABC373E]HowtoWintheElection思路比较难调的二分。将\(A\)数组排序,很容易想到对于每个\(i\)二分\(X\)。检查\(X\)是否成立可以贪心。一开始\(A_j>A_i+X\)的人要先算进满足人数,剩下的人可以二分,对于第\(x\simy\)人要满足\(A_x,A_{x+1}\cdotsA_y>A_i+X\)所
  • 2024-10-03Codeforces Round 976 (Div. 2) 题解
    CodeforcesRound976(Div.2)题解2020B一个常见的想法:开关灯=异或,虽然在这道题里没啥用注意到,第i盏灯的按钮被按的次数就是i的除它本身以外的因子个数而完全平方数的因子数为奇数,其他数的因子数为偶数点击查看更多信息#include<bits/stdc++.h>usingnamespacestd;voi
  • 2024-10-02P2336
    好久没发博客了(因为在家)看到大家都是用后缀数组+莫队的,于是模仿题解搞了一搞#include<bits/stdc++.h>usingnamespacestd;intblk[200005];structques{ intl,r,id; inlinefriendbooloperator<(quesA,quesB){ returnblk[A.l]^blk[B.l]?blk[A.l]<blk[B.l]:(blk
  • 2024-09-23最大双子段和
    一个正向取前缀和,一个反向取,最后枚举断点。#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintn,sum;inta[200005];intfront[200005];intback[200005];intmain(){ios::sync_with_stdio(false); cin>>n; for(inti=1;i<=n;i++){ cin&
  • 2024-09-09E. Klee's SUPER DUPER LARGE Array!!!
    原题链接题解发现随着\(i\)越大,绝对符号内的值越大,因此具有单调性,可以应用二分查找找离0最近的\(i\)而值可以用等差数列求和公式快速求出code#include<bits/stdc++.h>usingnamespacestd;/*mt19937_64rnd(time(0));#definedoublelongdouble#definelowbit(x)
  • 2024-09-07CF2009G. Yunli's Subarray Queries 题解
    G1题目要求,对于一个子区间$a_{l\siml+k-1}$,最少要进行多少次单点修改,才能使$\forall\l<i\leql+k-1,a_i=a_{i-1}+1$,其中$k$是固定的。对于这种问题,我们通常有一个trick:将$a_i$变为$a_i-i$。这样的话,我们要求的答案就变为了$k$减去变化后的$a_{l\siml+k-1}$
  • 2024-09-06F. Color Rows and Columns
    原题链接题意每个矩形变成删除若干个行和列,每少一行或少一列就加一分,问加\(k\)分最少要删除几个格子?分析抽象开来,最后的答案的样子一定是第\(i\)个矩形加了\(s_i\)分因此,我们只需要求出每个矩形加\(s_i\in[0,a+b]\)分时最少需要删除几个格子,然后就可以背包型动态规
  • 2024-09-06D. Sakurako's Hobby
    原题链接题意每个数要么黑色,要么白色,每个数都有跳往下一个数,请问你最多能得到几个黑色数?分析前往下一个数具有很强的指示性,所以我们可以画一个有向图出来那么问题就变成了一个有向图,问图中的每个点最多能到达几个黑色的点?(只有一个出边)但是注意本题,由于是排列,每个点最多只有
  • 2024-09-06C. The Legend of Freya the Frog
    原题链接题意交替向上向右走,可以不走,请问到给定点需要走几次?分析由于可以走0步,所以向上走和向右走是相互独立的,只需要求出他们的最大值即可如果最后一步是向右跳,由于此时已经跳完了,所以接下来就不用向上跳了提醒走0步的移动也要统计在内!!code#include<bits/stdc++.h>usin
  • 2024-09-03AtCoder ABC 369题解
    前言本题解部分思路来源于网络,仅供参考!A-369题目大意给定\(A\),\(B\)两个整数,求有多少个整数\(x\)使得可以通过某种排列使得\(A\),\(B\),\(x\)为等差数列。解题思路稍加分析即可得到:如果\(A=B\)则结果为\(1\)。如果\(A=B\)但\((A+B)\bmod
  • 2024-08-31ABC369
    Alink判断\(A\),\(B\)之间可不可以放一个数,如果可以就是\(3\)个,不行就是\(2\)个(左右),但是如果\(A\),\(B\)相等就只有一个。点击查看代码#include<bits/stdc++.h>usingnamespacestd;signedmain(){ inta,b; cin>>a>>b; intx=b-a; if(x!=0){ if(x%2==0
  • 2024-08-29NOI2024
    阅读理解题如果你发现签到题的代码难以实现,那往往是因为你理解错题意了即使你考0分,只要大家都考0分,你仍然可以成为第一名呀——虽然这很反常识点击查看代码#include<iostream>usingnamespacestd;inta[200005],b[200005];intmain(){ios::sync_with_stdio(fal
  • 2024-08-28E - Permute K times
    原题链接启发式思考替换的过程,可以看成数组\(A\)内部的流动,既然是流动,我们可以用图来表示这种流动经过样例测试发现,这样的图,每个节点最多有一个入度,但可以有多个出度,很像树,但是又存在环感知一下,每一次替换,都是父节点的值赋给子节点,因此,k次替换后,该节点的值就是第\(k\)个祖
  • 2024-08-26cats 的数据结构
    相信OI美学点击查看代码#include<bits/stdc++.h>usingnamespacestd;vector<int>a[200005];intf[200005],s[200005],ansa[200005],ansb[200005];voiddp(intn1){s[n1]=1;f[n1]=n1;for(inti=0;i<a[n1].size();i++){dp(a[n1][
  • 2024-08-25AtCoder ABC 368题解
    前言本题解部分思路来自于网络。A-Cut题目大意有\(n\)张卡片叠在一起,从上到下给出\(n\)卡片的编号,将\(k\)张卡片从牌堆底部放到顶部后,从上到下输出卡片的编号。解题思路按照题意模拟即可。code#include<bits/stdc++.h>usingnamespacestd;inta[105];intmai
  • 2024-08-24CodeForces - 1336A Linova and Kingdom
    CodeForces-1336A就差一点点,很可惜,少发现个很显而易见的结论就是一个点的价值,实际上就是(这个点的深度-之后的点的数目)就是\(depth_i-size_i\)然后只要用dfs维护就好了然后把一个点的价值用STL优先队列放在一起,贪心完成。但是可能也算不上什么贪心,因为是很朴素的东西
  • 2024-08-17[赛记] 暑假集训CSP提高模拟22 23
    连通块66pts老套路,删边改加边;但改完以后不知道怎么求最长路径了,当时也想到了维护直径,但不知道咋干;具体地,用并查集维护连通性,每次合并时需要维护新的直径,不难发现,新的直径的两个端点一定在原来的两个直径的四个端点中选;于是只有六种情况,枚举一下即可;我们要直径有啥用呢?当我们
  • 2024-08-16Codeforces Round 894 (Div. 3) D
    题目:E.KolyaandMovieTheatre题目链接:https://codeforces.com/contest/1862/problem/E思路:主要用优先队列存放大于0的元素,然后除了第一个数据后的每m个数据就可以存放到记录数组里面,最后遍历找价值最大的点击查看代码#include<bits/stdc++.h>#defineintlonglongusing
  • 2024-08-15D. Another Problem About Dividing Numbers
    原题链接题意有两个数\(a,b\)每次可以拿走其中一个数的若干个质因子,请问恰好\(k\)次操作后能否使\(a=b\)分析假设\(a,b\)最后到达的是\(c\),那么\(\frac{a}{c}\)的质因子个数加上\(\frac{b}{c}\)的质因子个数一定大于等于\(k\)(为什么可以大于?因为一次操作可以多
  • 2024-08-15[ABC351F] Double Sum
    原题链接题解方法一:双重循环,\(O(n^2)\)方法二:顺序遍历\(i\),然后查找目前所有比\(a_i\)小的数,这是一个比较经典的树状数组的运用时间复杂度\(P(n\logA)\)考虑优化,由于\(A\)可以达到\(1e8\),而\(n\)只有\(4e5\),所以我们可以对数据做离散化处理code#include<bi
  • 2024-08-15[ABC338E] Chords
    原题链接题解对于\(a_i,b_i\),如果存在一个\(j\),使得\(a_j\in[a_i,b_i],b_j\notin[a_i,b_i]\),则存在交叉点即对于\([a_i,b_i]\)这一匹配,其内部的点也必然一一匹配,否则存在一个匹配点在外面,会导致交叉有点像括号匹配,我们可以用栈解决在这个思路下,我们要确保\(a_i<b_i\)
  • 2024-08-13D. Taxes
    原题链接题解根据哥德巴赫猜想,任意大于2的偶数都可以表示为两个质数的和因此,对于大于二的偶数,总有办法拆成两个质数,也就是只需要交两元钱如果是质数,只用交一元钱如果一个数减二后是质数,也只需要交两元否则交三元code#include<bits/stdc++.h>usingnamespacestd;/*mt19
  • 2024-08-11D - Square Pair
    原题链接题解多想几种暴力1.遍历所有数对:\(O(n^2)\)2.求有多少数对其乘积为平方数\(\to\)求有多少平方数能被数对乘积:\(O(n^2)\)3.如果两个数的乘积为平方数,代表他们的质因数,要么都是奇数,要么都是偶数:\(O(?)\)4.如果\(a\timesb\)是完全平方数,代表\(a\timesb\)