- 博客(55)
- 收藏
- 关注
原创 小白Git极简9步入门
把想改的代码先fork到个人仓库先创建个空文件,git init声明是git管理把这个项目git clone到我的文件夹git status,git branch查看分支,该在哪改在哪改,git checkout该换分支换分支然后在这个文件夹内部进行修改,进行git;修改成功之后,先git status,再git add .再git commit -m “msg”提交本地仓库git remote add XXX,先添加远端仓库地址,不然你咋交到github呢。
2023-05-30 20:38:12
283
原创 22/23版idea没有JavaEE或Web Application解决方案
第二步:右键选择项目Add ProjectFrameWork 添加项目框架。第一步:正常创建项目。
2023-04-13 15:01:57
11123
6
原创 Pycharm根目录
如果你想在 PyCharm 中设置当前文件的根目录,可以在 PyCharm 的配置中指定一个 Working directory,该目录将作为项目的根目录。可以通过在菜单栏中选择 Run > Edit Configurations 并在打开的对话框中指定 Working directory 来设置。在 PyCharm 中,当前文件的根目录默认是包含该文件的项目目录。如果当前文件在项目目录的子目录中,那么该子目录就是当前文件的根目录。文件并运行它,那么它的根目录就是。如果你在 PyCharm 中打开。
2023-04-07 23:05:59
4129
原创 P3174 [HAOI2009] 毛毛虫
分析:很容易想到:f[u] 是 u 为当前子树根节点的毛毛虫头时子树内毛毛虫最大点数。但当时其实最大的疑问在于:如何选根节点 —— 假设选到了一个不在最终答案上的点座位根节点dfs,咋办?题意:给你一棵树,取出一根链和与链相邻的“脚”;问能取出的最大节点数是多少?但我们发现实际上维护每个当前点的【最大 + 次大】即可;点4显然不会在最终的链上。当时到这里就想不下去了。
2023-03-06 21:42:48
198
原创 P2831 [NOIP2016 提高组] 愤怒的小鸟
虽然但是:我n^2 * (2^n) 也过了 —— 确实 思考状压DP实际上的思路就是DFS的思路。
2023-03-05 15:51:06
200
原创 F. Dasha and Nightmares (异或hash
分析:线性枚举,统一算贡献,发现当枚举过去的时候,没后效性,所以只要算出枚举到当前情况之前的累计,发现没法直接查询,这里就要想到用 hash 压缩表示状态;然后对于每一个位置是空的要单独算;题意:给你 2e5 个字符串,总长不超过 5e6 ,输出多少对字符串两两组合之后,满足 1.长度是奇数 2.不同的字母恰好25个 3.每个字母出现次数都是奇数;
2023-03-03 17:15:46
163
原创 C. Serval and Toxel‘s Arrays(容斥+按值算贡献
分析:由于确保两两必然不同,很好想到这题的关键在于值而非位置,对于每个值算贡献 —— 因为同样的值,产生贡献的情况要不是 1 ,要不是 2,对于合并后数组内有两个相同值的贡献很好算 —— 就是。题意:一个 n 长的值成对不同数组,有 m 次变化,每次执行一次 p 位置,改为 v 值【保证每次改完的数组内的值成对不同】,计算所有 m + 1 的数组两两去重合并之后不同的数的个数的和;所以最终就是 总数减去重复计算的。
2023-02-26 00:25:02
453
原创 G2. Teleporters (Hard Version) 【二分
分析:首先发现每个点实际的贡献就是(min(a[i] + i, a[i] + n - i + 1)),但是不能直接排序算,因为我们必须从 0 号点出发,第一个位置是独立的,思考了一会没啥办法,无奈只能将这一维枚举,再考虑如何用 logn 的时间复杂度算出每个起点的最大个数,一开始想着用个堆维护一下,但复杂度太高,再想着离线,排序之后,再利用单调性二分再降复杂度,直接排序后前缀和处理好直接二分。然后再特判一下开头点是否在二分后的区间就好了。
2023-02-25 19:00:10
285
原创 D. Chat Program(22南京
分析:真的很惭愧,当时看到第 K 大,一眼数据结构,直接跑偏了,想了半天(明知不对就不能再硬想了)。本来这样就不是正确的思考方式。对于最大值,考虑二分,对于第K大,只要处理后区间>=mid的个数多于K个即可,正常做肯定是 nm 的,想着优化肯定就是要优化掉 等差数列 那个复杂度,思考一下就能知道,每个位置能直接算出覆盖区间,所以在枚举的时候直接算出左右端点,最后跑一遍前缀和即可;题意:给一个 n(2e5)长的数组,再给一个等差数列,问最多执行一次(添加等差数列)后的最大第 K 大是多少。
2023-02-24 11:04:07
619
原创 E. Explosions?(思维+单调队列
得明白两个事:预处理每个数减去坐标之后,只要不减就一定是能满足的,所以对队尾如果比当前的大,那么要减去长度*差值——使满足不减的性质【把山峰不断削平的一个过程】;然后还得处理队头,这里我有个一直想不明白的点:为啥只要处理队头就行了 —— 是因为如果有上一步的合并操作,有可能会使得长度超过他本身的最大长度(本身就是。分析:略加思考会想到实际上就是找一个最大的金字塔,两侧都是平原,但实际上并不完全是,因为两侧斜率可以不一样;,你有两种操作,一种花费 1 MP减少一个怪的一格血量,可以操作任意次;
2023-02-18 12:52:04
493
1
原创 D. Game on Axis 【思维(1900
如果点 1 可以走到终点 n+1,那么 1)不在 1 路径上的点随便怎么样都行,2)其他的点不能走到他的后继(这里我们发现从 n+1 反向建边,x+1个点,x条边,必然是一个树,所以反向树形DP一下,减去子树即可)如果 1 不能走到终点 n+1 ,分别思考 1 成链和成环 的情况,发现都可以总结为考虑 1 往前的路径的点,这些点1)要不超出本身,2)要不连到树上;分析:很好想到建图,把不在范围内的路径全连到 n+1 点上,然后分类讨论。,每次从1出发,可以执行一次操作(题意:n个数字,规定跳跃规则为。
2023-02-14 18:05:33
149
原创 E. The Harmonization of XOR(异或构造 2100
但是后面一下子就不知道如何构造了,所以解题的关键点还是要发现思考的方向,【问题的关键取决于最大能构造的个数】,同时我们也会发现如果第一个条件是满足的情况下,那么构造一个确切的个数只要把剩下的全部放在一起就行了(利用了异或的性质);开个桶就行,所以是利用异或性质贪心构造,一开始想偏了;题意:给你三个参数n,k,x;也就是n长的排列,要构造出k个序列满足不相交且异或值恰好为x,不满足输出NO。分析:当时马上就能想到首先这个不满足的条件之一就是根据奇偶性和1~n的所有异或值累异或,如果不等直接NO;
2023-02-14 10:39:30
242
原创 D. Tournament Countdown 【交互+分治优化(1800
但是这个不满足,考虑分治优化(个人思路,可以类比冒泡排序和归并排序的思路,线性可以分治优化,这个还是很妙的),发现如果当只剩两个的时候,直接一次询问即可,剩四次的时候,发现只要两次即可;个人按顺序就排列,两两进行锦标赛,每次可以询问两个人,然后可以知道谁赢的多(或者一样多)。分析:首先有个很直接简单的思路就是从1开始询问,不断的找出赢场最大的那个人,复杂度是。
2023-01-27 22:21:12
119
原创 E. Arithmetic Operations 根号分治
的,一维枚举起始位置,一维扫过去,发现暂时没法优化,所以转变思路,看能否换个枚举方式,转而枚举 d(差值),同时发现如果差值大的话,完全不需要枚举完整个数列。(我当时还想着是枚举位置,再枚举位置),但实际上,完全可以利用等差公式根据位置推到。感觉分块目前见到的有对序列分块,对值域分块,对询问分块。马上想到根号分治,对值域分治,对于大于根号 k 的差值,只需要枚举根号的长度即可,这里的复杂度是。的众数是多少,由于再加个 log 会 T,所以开个桶解决【对于小于根号的处理方式跟这题。
2023-01-20 21:58:20
896
1
原创 D. Time to Raid Cowavans(按数据分块
分析:还是很妙的很优雅的分块 —— 首先这个暴力肯定不行,想想怎么优化,发现如果存在相同的b,那么可以做一个后缀和优化,但是如果他全都不一样,这种极端情况也是可以卡成n2的,—— 但发现数据大的时候其实直接做即可,这里就要取一个优雅的平衡点 ——题意:3e5个数,3e5组询问,每组询问给(a,b)—— 问从a,a+b,a+2b,。一直到下标超过n为止所有下标的和是多少。PS:自从换成C++的写法突然感觉之前函数的写法有点丑hh。,大于根号的直接暴力,小于的用前缀和处理,复杂度最大时。
2023-01-16 23:13:22
132
原创 E. GukiZ and GukiZiana【分块(块内排序)
PS:今天终于学了分块,感觉数据结构现在才算把大的漏洞补完,个人感觉分块还是很厉害的,毕竟通用面更广;不过第一版代码的询问不知道为啥错了,wa32,一直想不明白。
2023-01-15 21:49:02
113
原创 L. Project Manager【思维+STL(2400
Problem - L - Codeforces应该这么想:要维护每天哪些人干哪些活,那我可以直接维护每天哪些人干了哪些项目吗,但题目有个条件,每个人都干优先级最高的事情,所以后面直接vector不好做,信息不能合在一起维护,所以拆开,一个维护,另一个维护——这样分开来维护就能实现当某个人完成一个任务的时候也能确定他完成的是哪个project了(因为后者用set维护);注意到需要维护的主体之间的关系是:工作——人,人——时间(枚举时间)到这里实际上主要的功能就结束了,接下来想如何维护刚才的两个东西——得有一
2022-12-04 19:23:14
117
原创 G. Count the Trains【思维(2000
结果正解压根就不需要修改这个区间的值——【为什么能想到:让我们想一个极端情况,每次都是修改头尾,实际上中间的压根对答案不产生贡献——也就是说我只要修改产生贡献的点就行了——什么样的点产生贡献呢,维护一个严格下降序列就行】当时是这么想的,修改某个点的贡献是看前一个是否小于,小于贡献+1,然后二分到后面第一个小于他的位置,删去这个区间的贡献,然后修改这个区间的值;其他都好说,但这个修改这个区间的值,实在不知道咋处理;(上图是一开始的错误思路;总之还是很值得再做的一道题。
2022-11-24 20:54:28
161
原创 B. Alyona and a tree 树上倍增+树上差分好题
正常做法对每个点讨论,对每个点所有子树的上的点都计算一遍他到当前根的距离,然后。当前这样复杂度是N2的,题目最多NlogN,想着如何优化:发现如果退化成一条链的话,一个点能被算很多次,(比如链上的最后一个点,光他一个点就能被算n次,大量重复计算一个点不如想能否只对每个点算log次,也就是能否转化为贡献)发现一个点的权值是固定的,所以一个点的覆盖范围是固定的,那一个点的贡献也就是他的父亲到他最远能覆盖的点这个区间,艾玛这个能做:暴力优化成倍增不就行了吗,树上区间操作优化成树上差分不就行了,所以这题就做完了;
2022-10-09 15:36:21
242
原创 P5838 [USACO19DEC]Milk Visits G(树剖+主席树
P5838 [USACO19DEC]Milk Visits G(树剖+主席树
2022-10-02 19:59:40
171
原创 P4137 Rmq Problem / mex
ps这题其实完全不需要离散化,主席树尽可能的开大,我一开始开了16倍,结果显示我wa了4个点,开32倍就过了。然后不能被前缀和的思想束缚——这题就是直接查第R棵树的情况。怎么说呢 这种跟区间不同个数相关的题,如之和维护前缀和呢?经典套路操作就是维护某个数最后出现的位置。
2022-09-06 14:14:38
89
原创 Codeforces Round #792 (Div. 1 + Div. 2)
D.Trap自认为挺好的题题目大意就是说:有n个陷阱,你可以最多跳k次。选择跳过去可以免疫伤害,但代价就是后面的所有伤害+1,不断累加,问怎么跳最优。个人思路:从贡献+贪心的角度去想,首先可以直接贪心吗?显然不行,那为什么不行?原因也很简单,是因为评分的维度不止一个,你跳过去了,但是后面的分数还要累加。那怎么才能贪心呢?自然可以想到,得找个办法能合并两种评分——变为一种;这里我选择现预处理出一个成本数组:即当前伤害值-后面累加起来的伤害(n-i);然后再贪心的选择就行了! 当然还要注意一
2022-05-21 15:52:56
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人