- 博客(65)
- 收藏
- 关注
原创 多项式回归初探及实践
根据 2000~2021年的人口数量,估计22年的人口数。换言之,就是给你一部分的训练数据,需要拟合出一个曲线,以此来测试另外的数据。利用多项式回归,拟合出曲线。
2023-03-15 17:53:25
553
2
原创 [Ynoi2016] 镜中的昆虫——浅谈区间种类数问题
这里给出另一种常见的做法:通过将询问离线,把询问挂到区间右端点上,再通过记录每个元素上一次出现的位置,扫一遍序列的同时,用树状数组维护每个左端点到当前右端点。那么想要求区间种类数,一个常见的套路是:区间中所有相同的元素,只有区间中最左边的位置做贡献。个点,一个赋值操作,最多能增加三个点(因为有可能把原本是一段的点,割开了),且每个点最多只能删除一次,那么。的矩形中有多少个点,天哪,多么经典的二维数点问题!那么这个问题中的颜色相同的一段 等于 上个问题中的一个点,从上面的证明我们知道,这是十分经典的问题;
2022-09-19 10:32:49
569
2
原创 Python 爬取高考各学校各专业录取分数线
通过简单的网页分析,得到请求的接口,然后模拟这个过程即可。下学期有个 个人项目,高考志愿填报系统,需要高考不同学校不同专业的录取分数线。
2022-08-09 18:14:14
4120
5
原创 “蔚来杯“2022牛客暑期多校训练营4 E - Jobs (Hard Version)
然后插入一个点或者删除一个点就在二维树状数组上进行加减,当然不是在当前点的所有右上角进行加减,而是需要求出当前这个点和单调序列的前驱、后继夹出来的特有矩形,在这上面执行操作。这几天,也不知道自己在纠结什么,不知道是后悔还是不甘,也不知道自己喜欢acm是因为做出题的愉悦,还是因为自己打的还算不错的底子,抑或是这两年在集训队的点滴。如果没有公司的限制,只是要求每个人能够在几个岗位任职,就是简单的三维偏序问题,直接。因为求的是种类数,将同种类的岗位放在一起看,可以发现,对于两个不同的岗位。......
2022-07-31 09:10:11
276
原创 Segment tree beats~
Segment tree beats!旨在练习 吉老师线段树,并且存个板子~#576 (Div. 2) D. Welfare State区间取 maxmaxmax 的裸题,对于取 maxmaxmax 操作,维护最小值、次小值、最小值次数,通过加标记的方式就能维护 取 maxmaxmax 操作了;区间取 minminmin 的操作 与之类似。#include<bits/stdc++.h>using namespace std;inline int qread(){ int
2022-07-15 08:59:41
287
原创 2012-2013 NEERC, Moscow Subregional Contest D题 & 2021 ICPC Shenyang Regional M 题
M. String Problem题意:给一个串,对于每个前缀求字典序最大的后缀。n<=1e6n<=1e6n<=1e6思路:D. Darkwing Duck题意:给一个串,区间询问字典序最大后缀,可以离线。n<=5e5,q<=5e5n<=5e5,q<=5e5n<=5e5,q<=5e5......
2022-07-15 08:58:37
258
原创 CF1083C Max Mex
CF1083C Max Mex题意:对于一个非负整数集合 SSS,定义 mex(S)mex(S)mex(S) 为没有在集合 SSS 中出现的最小非负整数。例如,对于非负整数集合 S={0,1,3}S = \{0, 1, 3\}S={0,1,3},没有在集合 SSS 中出现的最小非负整数为 222,因此 mex({0,1,3})=2mex(\{0, 1, 3\}) = 2mex({0,1,3})=2。给定一棵包含 nnn 个结点的树,每个结点对应着一个非负整数 pip_ipi,你需要实现 qqq 次
2022-07-15 08:58:26
263
原创 2021 Jiangsu Collegiate Programming Contest F. Jumping Monkey II 树剖+线段树
F. Jumping Monkey II题意:给你n=2e5n=2e5n=2e5的一棵树,每个点有点权 a[i]<=1e9a[i]<=1e9a[i]<=1e9,对于每个点,求以这个点出发,并且以自己为 LISLISLIS 的起点 的 最长 LISLISLIS的长度。思路:首先假设一号结点为根,然后每个点作为LIS的起点有三种可能:标注ststst的结点为 LISLISLIS的起点,直线向上代表走父亲,向下代表走子树。圆圈的点,是在 LISLISLIS上的点,不在 LISLIS
2022-07-15 08:58:11
415
原创 CDQ分治与整体二分 学习笔记
Stars经典二维偏序分治的时候,记一下原位置的下标,debug了很久#include<bits/stdc++.h>using namespace std;#define ll long long int n,m;struct node{ int x,id;}s[15050],tmp[15050];int ans[15050];int cnt[15050];void CDQ(int l,int r){ if(l==r)return; int mid=l+r>&
2022-07-15 08:57:47
240
原创 Codeforces Round #100 E. New Year Garland & 2021 CCPC Subpermutation
Codeforces Round #100 E. New Year Garland & 2021 CCPC Subpermutation
2022-07-15 08:57:15
263
原创 [CQOI2012]局部极小值 & Mike and Foam
[CQOI2012]局部极小值题意:有一个nnn行mmm列的整数矩阵,其中111到n∗mn*mn∗m之间的每个整数恰好出现一次。如果一个格子比所有相邻格子(相邻是指有公共边或公共顶点)都小,我们说这个格子是局部极小值。给出所有局部极小值的位置,你的任务是判断有多少个可能的矩阵。(n<=4,m<=7)(n<=4,m<=7)(n<=4,m<=7)思路:对于确定极小值点的方案,可以通过dpdpdp来解决,dp[i][j]dp[i][j]dp[i][j],代表当前枚举
2022-07-15 08:56:49
323
2
原创 2022浙江省赛、ICPC昆明区域赛 游·寄
前夜周六打的浙江省赛、周日昆明区域赛,周五平常作息,早上和爸妈聊天 我说道 金华疫情情况还好,还能出校吃饭,没想到 噩耗马上就来了。金华突然有了几例阳性,其中有一位还是滴滴司机。线上教学的消息已发出来,超市就被洗劫一空。好在 机房没有被封,还能继续打省赛,晚上进行完环境配置 就回寝室休息了。省赛当天早上十点睁眼,看到通知 要全员核酸检测,预计是早上八点半检测,但是我们学院的医护人员以及设备 一直没有准备好,十一点二十左右大家才检测好 回机房准备登录 (疲惫++);中午十二点 省赛开始,前几道签到题
2022-04-17 20:58:57
1675
8
原创 G. Xor-MST Trie树分治
G. Xor-MST题意:给你 2e52e52e5 个点,每个点 的权值小于等于 1e91e91e9;每两个点之间都有连边,边权是 两点权值的异或值,求最小生成树;思路:本来莽了一发 Boruvka,可能是写法问题 MLE了,换了一种分治的写法。考虑将所有点权排序,找到最高位的 使得把 集合分成两个部分,两个部分的集合 分治处理,两个集合 之间的连边 可以用字典树 处理出来,就AC了原理是基于 异或的高位贪心,不仔细讲了吧……#include<bits/stdc++.h>usi
2022-04-08 10:33:31
191
原创 2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest I. Tetris
I. Tetris题意:设定俄罗斯方块的界面大小是 1e9∗k1e9*k1e9∗k的, k<=10k<=10k<=10,有 n<=5000n<=5000n<=5000 个 高度为1的长方条,每个能覆盖 l[i],r[i]l[i],r[i]l[i],r[i] 的区间,每个长方条 有个价值 w[i]w[i]w[i],问不超出界面,最多能得到多少价值。思路:考虑网络流,将每个 lll 和 rrr 离线下来 当作点,每个点按照顺序,向下一个点,连接一条 容量为 kkk,费
2022-03-28 23:21:05
803
原创 2021 ICPC Southeastern Europe Regional Contest E. Replace Sort
E. Replace Sort题意:给你长度为N<=5e5N<=5e5N<=5e5的序列AAA,和大小为5e55e55e5的集合BBB,可以用一次操作 将集合BBB 中的一个元素 覆盖 序列 AAA上一个位置的元素,即 让 A[i]=B[j]A[i]=B[j]A[i]=B[j];问 最小的操作次数,使得 序列AAA变成严格升序。思路:考虑一个很显然的 DPDPDP,dp1[i]dp1[i]dp1[i]表示,最终序列第 iii 位是 A[i]A[i]A[i] 时的最小操作次数;dp
2022-03-28 20:34:18
885
原创 GSS2 - Can you answer these queries II
GSS2 - Can you answer these queries II题意:给你1e51e51e5 的序列,每次询问区间l到rl到rl到r,每个相同的数只算一次的最大子段和。思路:乍一眼看上去,是不是没有头绪。对于这种数据结构题,如果在线维护很麻烦的话,可以想想离线的做法!将所有区间离线下来,并按照 rrr 升序排序。那么就可以一个个地加数,考虑维护 一个值DP[l]DP[l]DP[l] 即以lll为左端点到 当前位置的 最大子段和,可以发现,不断地往里面加数字,那么最大字段和,其实就是
2022-03-23 20:39:56
1954
原创 Educational Codeforces Round 125 (Rated for Div. 2) E. Star MST
E. Star MST题意:定义一个无向完全图是 美丽的,当且仅当,每条边的边权 在 1到k1到k1到k 之间,且与 111号点连接的边权和 等于 整张图最小生成树的权值和。n<=250,k<=250n<=250,k<=250n<=250,k<=250思路:既然题目涉及了 最小生成树,那肯定会想 克鲁斯卡尔算法,想象克鲁斯卡尔算法的过程 就是按照边权从小到大 加入边,直到所有点都联通。那么不妨加一个条件,当边权相同时,优先加入和 111号点相连的边。那么可以推断
2022-03-23 18:46:28
511
原创 #515. 【UR #19】前进四
#515. 【UR #19】前进四题意:给定 1e61e61e6 的序列 aaa,和 1e61e61e6 的操作:第一种操作,将 a[x]a[x]a[x] 改为 bbb;第二种操作,询问 x到nx到nx到n 有多少种后缀最小值。思路:本题有在线的 O(nlog2n)O(nlog^2n)O(nlog2n) 的做法,即维护一种类似DP的东西,然后通过递归线段树 来获得答案,但本文讲的不是这种方法。因为题目中询问的是 后缀最小值,不是区间最小值,所以考虑离线的做法:我们用从序列尾到头的一条扫描线,
2022-03-22 22:03:26
564
原创 19 南京区域赛 F. Paper Grading
F. Paper Grading题意:有2e52e52e5个字符串和2e52e52e5个操作;第一种操作是 交换两个字符串;第二种是 给你 l,r,kl,r,kl,r,k 和一个字符串 sss ,询问 区间 l到rl到rl到r 中有多少个字符串的前 kkk个字符 和 sss的前kkk个字符相同。思路:先将所有字符串建成一颗 trietrietrie树,在字符串的结尾位置打个标记。然后 询问下标 l到rl到rl到r之间有多少个字符串 和 sss的前 kkk 个字符相同,就转换成了 询问 trie
2022-03-19 11:54:56
1088
2
原创 18th 省赛 B. Restore Atlantis
题意:有2000∗20002000*20002000∗2000 的二维平面,给你 100000100000100000 个矩形,有 1e51e51e5个询问,每次询问 给你 l和rl和rl和r ,问去掉这个区间的矩形之后,平面中被矩形覆盖的点数。思路1:用扫描线思想,并且用 优先队列的线段树,处理出 二维平面上 所有点,被覆盖的最左边的矩形 和 最右边的矩形。(听说用set会T,可能优先队列的常熟小吧)因为题目的时限只有1s,考虑离线的算法,用树状数组来维护。将所有的询问离线,并按照 rrr升序排序
2022-03-09 22:55:37
439
1
原创 2021 ICPC Asia Taipei Regional Programming Contest C、F
C、Community Service题意:有一个0到1e60到1e60到1e6的数轴,有2e52e52e5次操作:操作一:增加一条 从l到rl到rl到r的线段,每条线段有名字;操作二:给定一个区间SSS 以及范围 l到rl到rl到r,求和SSS有交集的 最近一个被加入的线段TTT,并将TTT从线段集中删去。思路1:如果没有删除线段的操作,那么这道题就是 线段树区间赋值维护最大值,并且区间求最大值。但是有删除操作之后,线段之间的关系就是相互覆盖,很容易想到 可持久化相关的数据结构。我的想法是
2022-03-06 12:37:54
2117
4
原创 Codeforces Round #762 (Div. 3) H Permutation and Queries
H Permutation and Queries题意:给你一个 n(1≤n≤105)n(1≤n≤10^5)n(1≤n≤105) 个数的排列 p,你需要维护以下两种操作:1xy1 x y1xy :交换 pxp_xpx 和 pyp_ypy。2ik2 i k2ik :令 i=pii=p_ii=pi,kkk次后输出iii 。操作数量小于等于 10510^5105。思路:首先分析题目,考虑 从iii 向 pip_ipi 连接一条边,因为数组是排列,所以每个点 只有一条出边和一条入边,那么构成的
2022-02-24 15:18:36
171
原创 Codeforces Round #760 (Div. 3) G. Trader Problem
Codeforces Round #760 (Div. 3) G题意:你手里有nnn个物品,第iii个价值为aia_iai。另外mmm个物品,第iii个价值为bib_ibi。你可以把你手里的价值为xxx的物品与不属于你的价值不超过x+kx + kx+k的物品进行交换,交换后原本属于你的物品不再属于你并且可以在新的交换中被换回来,而作为交换,原本不属于你的那个物品现在属于你并且可以被用于新的交换中。现在有qqq次询问,给定kkk,求经过任意次数交换后属于你的物品的价值的最大值。思路一: 自己想的复杂
2022-02-23 21:22:04
408
原创 P3573 [POI2014]RAJ-Rally
P3573 [POI2014]RAJ-Rally题意:给定一个N个点M条边的有向无环图,每条边长度都是1。请找到一个点,使得删掉这个点后剩余的图中的最长路径最短。N,M(2<=N<=500000,1<=M<=1000000)N,M(2<=N<=500 000,1<=M<=1 000 000)N,M(2<=N<=500000,1<=M<=1000000)思路:转化一下问题,给定 一张DAG,对于每个点计算,删除该点,图上的最长
2022-02-16 16:33:59
369
原创 牛客练习赛 93 D (带权并查集+珂朵莉树)
牛客练习赛 93 D题意:带权并查集+珂朵莉树。可以发现,对于第一次操作就是类似,删除原本的这一段区间,再把这一段区间赋一个值。这个操作用珂朵莉树可以很好的实现,毕竟号称 区间赋值小能手。给区间设定四个状态,分别是区间左端点、区间右端点、区间每个位置的兵力、区间所属的单位。对于第一个操作,我们遍历原先在lll ~ rrr内的区间,把原本区间属于的祖先减去这个区间的兵力,再让当前的 ididid 加上这段增援后的兵力。对于占领的情况,只需要在遍历的时候,判断区间的祖先的家是否在 lll ~ rrr
2021-12-12 11:11:43
339
1
原创 2021 ICPC 南京站 游·寄
前夜因为疫情原因,今年ICPC全是线上(大二选手想壮年出去旅游!!!。南京名单发下来都惊了,这不是逆十字吗,这不是重生菜狗吗,这不是超长宕机吗,这不是……好家伙,名牌一队都来了啊。好像有人整理过,来的出线队就有40只?那不是金区溢出,原本的金牌队被挤到银牌区,拿银希望−−--−−。网传 今年南京站是 ICPC全明星,心理压力++++++,不过我当然相信自己队伍的实力啦,拿牌还是十拿九稳的。热身赛热身赛前半个小时才理好了后缀数组的模板,毕竟今年第一场 ICPC,想着多点一个技能就多一种题目可以做。可是这
2021-12-04 22:28:07
1047
原创 后缀数组 实现+经典trick+例题应用
后缀数组字符串入门算法,碰到过好多次了,一直没学,今天来拾掇一下。实现这里不赘述实现原理,想知道的可以去看 罗穗骞的论文 后缀数组——处理字符串的有力工具一、倍增实现 O(nlogn)O(nlogn)O(nlogn)#include<bits/stdc++.h>using namespace std;//sa[i]表示排名为i的后缀suffix(id),rk[i]表示后缀suffix(i)的排名//ht[i]表示排名为i和i-1的后缀的lcp长度const int N=200
2021-12-03 17:55:14
398
1
原创 克鲁斯卡尔重构树
克鲁斯卡尔重构树用途用来维护图上两点,uuu到vvv的路径中,最大边权的最小值(或最小边权的最大值)实现像克鲁斯卡尔一样,先把边权排序,然后用并查集 建出一颗重构树,点权就是当前边的边权,然后再用树链剖分dfs两次,方便之后求lcalcalca;如果原图不是连通图,那么建出的就是重构森林,以每个连通块最后加入的点为根;如果原图是连通图,那么最后加入的节点,就是重构树的根。代码void work(){ cnt=n; for(int i=1;i<=n;i++)ff[i]=i; sort
2021-12-02 21:04:37
298
原创 SPOJ 10707 Count on a tree II
SPOJ 10707 Count on a tree II题意:给定 nnn 个结点的树,每个结点有一种颜色。mmm 次询问,每次询问给出 uuu,vvv 回答 uuu,vvv 之间的路径上的结点的不同颜色数。n<=4e4n<=4e4n<=4e4,m<=1e5m<=1e5m<=1e5,颜色是不超过 2e92e92e9 的非负整数。思路一:因为是允许离线的,我们考虑暴力——树上莫队。利用树上欧拉序的特点,我们可以用莫队来跑欧拉序,和普通莫队相似。但是需要特判
2021-11-09 23:01:13
309
原创 CCPC长春2020 复现报告
签到:A、D铜牌题:F银牌:J、KA - Krypton思路:题目会有一个误区,很容易让人去想贪心(毕竟首充大的,奖励大嘛有一种情况就是,我如果拿了尽可能大的,就没钱去买小的了,但是如果把小的全买了,奖励是更多的。所以就枚举所有情况,二进制枚举,买哪些喽;#include<bits/stdc++.h>using namespace std;#define ll long longint s[]={1,6,28,88,198,328,648};int a[]={8,
2021-11-04 13:16:24
195
1
原创 树上分治算法 + 路径剖分
树上分治算法 + 路径剖分感谢qzc大佬的论文上个学期就听说了点分治,但是一直没学过,看了da lao的论文后,醍醐灌顶。我们熟悉的分治 是 线性的分治(参考归并排序)。树上分治就是把一个大的关于路径的问题,变成一个个小问题组成,大问题的答案可以由小问题的答案合并而来。点分治POJ1741点分治模板题,统计树上点对间距离小于等于K的对数。#include<cstdio>#include<algorithm>#include<vector>using n
2021-10-20 23:16:56
438
原创 Distance on the tree 树上主席树
Distance on the tree题意:给你一颗带边权的树,点数n<=1e5n<=1e5n<=1e5,询问1e51e51e5次,每次询问两个点之间的简单路径,有多少条边权小于等于 K 。思路:第一反应,树剖啊,但是不能加线段树,那么什么能支持区间查询小于等于K的数呢,当然是主席树!复杂度就是O(nlog2nnlog^2nnlog2n)。但是有更好的写法:树上主席树!参考线性主席树利用前缀和的想法,树上主席树也是前缀和的一种, 我们把自己的权值并上父亲的权值,变成一个新的
2021-10-19 20:41:30
168
原创 FFT专题
FFT最近在学一个叫做FFT的东西(多项式我来啦黑暗爆炸 - 4503模板字符串匹配,卷一下就好啦#include<bits/stdc++.h>using namespace std;#define ll long longconst int maxn=3e5+10; const double pi=acos(-1.0);ll n,m;char ch[maxn];struct comp{ double x,y; comp(double xx=0,doub
2021-10-17 17:14:19
146
1
原创 2021-10-06 组队赛——2019-icpc-Seoul-题解
Problem K Washer题意:给你三维平面上的n<=100n<=100n<=100个点,将他们最多分成k<=2k<=2k<=2类。每一类的价值是,要求使所有类的价值和 最小,输出最小值。任意三点不共线,任意四点不共面。思路一:这个价值函数类似于方差,就是要让分出的类,尽可能地聚合。考虑用K-means算法。1)考虑先随机k个聚合点,2) 然后每次把其他点,归属到距离最近的聚合点3) 把每个聚合点调整到 属于他的那个点集最靠近质心的点重复 第
2021-10-09 22:19:41
171
原创 [SDOI2016]游戏
[SDOI2016]游戏思路:树剖+李超线段树李超线段树模板题,把对一条链的操作变成李超线段树上一段区间的操作。维护李超就像普通的维护直线一样,但是每个区间加个标记,代表在自己下面的区间直线所出现的最小值,这样就保证了复杂度。把一条链拆成从sss到lcalcalca,从lcalcalca到ttt的两个线段。普普通通的AC吧;#include<bits/stdc++.h>using namespace std;#define ll long longint n,m;struc
2021-10-09 13:32:09
714
1
原创 二分图King
L:Fat题意:思路:二分图匹配。tips:对于这种垃圾题目,贪心不行,dp不能的题目。就想想图论吧,网络流从不会让你wa,最多只会T。#include<bits/stdc++.h>#define rep(i,n,m) for(int i=n;i<=m;i++)typedef long long ll;using namespace std;struct node{ ll x,y,v;}maxn[40005];node minn[40005];node b
2021-10-07 21:31:30
86
2
原创 Codeforces Round #744 (Div. 3) 解题报告
文章目录A. Casimir's String SolitaireB. Shifting SortC. TicksD - Productive MeetingA. Casimir’s String Solitaire题意:对于一个字符串,有两种操作:1、选择字符串中的一对‘A’和‘B’,删除他们;2、选择字符串中的一对‘B’和‘C’,删除他们;问能否通过一系列操作把字符串变成空串。思路:计三种字符的个数,只要’B’的个数是’A’和‘C’的个数和即可。代码:#include<bits
2021-09-29 22:02:36
296
1
原创 Educational Codeforces Round 114 (Rated for Div. 2) D
D. The Strongest Build题意:给你nnn个位置(n<=10n<=10n<=10),每个位置有cicici个备选的数(ci<=200000ci<=200000ci<=200000),然后有mmm个组合(m<=200000m<=200000m<=200000),求除了这些组合之外的 和最大的组合,输出最大和。思路:根据mmm个限制,建一颗字典树,然后遍历字典树,在当前点,保证取当前点到根的数,下面的位置贪心取,遍历完字典树之后的最
2021-09-29 12:41:57
155
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人