- 2024-09-29Leetcode 887. 鸡蛋掉落
1.题目基本信息1.1.题目描述给你k枚相同的鸡蛋,并可以使用一栋从第1层到第n层共有n层楼的建筑。已知存在楼层f,满足0<=f<=n,任何从高于f的楼层落下的鸡蛋都会碎,从f楼层或比它低的楼层落下的鸡蛋都不会破。每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层
- 2024-02-10grep 中 \W和\w正则匹配的含义
\w ##匹配文字和数字字符,也就是[A-Za-z0-9],\W ##\w的反置形式,匹配一个或多个非单词字符,如点号句号等。 01、[root@PC1test1]#lsa.txt[root@PC1test1]#cata.txt##测试文本3432dsab45cdf887kkkkjjjjj,,;;;sdffffabc8888dddkk22,kk33kww
- 2023-12-29Codeforces Round 887 (Div. 1)
CodeforcesRound887(Div.1)A先来个二分。注意到这样一件事:考虑是\(a_i\)失效的最小时间\(t_i\),发现\(t\)有单调性。所以从大到小考虑\(a\),每次相当于将二分的值减去一个值,复杂度\(O(\sumn(\logn+\logk))\)。codeconstintN=2e5+10;intn;llk;lla
- 2023-11-11Codeforces Round 887 (Div. 2)
https://codeforces.com/contest/1853C题感觉很不好写的样子,首先通过打表发现最后答案每次都是+n,那么我们考虑前i个,假如当前的ans+i仍然小于a[i+1],则没有影响,我们依然可以直接往后跳,否则,我们越过了a[i+1],那么我们应当加上i+1,注意,这有可能会导致往后面继续跳,比如13567,我们跳
- 2023-08-28Codeforces Round 887 (Div. 1)C. Ina of the Mountain(数据结构,反悔贪心)
题目链接:https://codeforces.com/problemset/problem/1852/C 题意: 给定一个长度为n的序列和正整数k; 每次可以选取任意一个区间,将区间内每个数减1; 如果出现一个数变成0,那么那个数变成k; 问至少操作多少次可以使得每个数变成k; 分析: 将每个数值抽象为对应高度的
- 2023-08-021853 Round 887 (Div. 2)
Desorting定义一次操作为选定一个\(i\),令\(a_{1\simi}\)自增,\(a_{i+1\simn}\),自减,求使得整个序列无序的最小操作次数若序列一开始就无序,输出\(0\)否则找到相邻两数差值最小的位置,在这个位置不断使用操作,可以证明这是最优方案#include<bits/stdc++.h>usingna
- 2023-08-01Codeforces Round 887 (Div. 2)
CodeforcesRound887(Div.2)A.Desorting题目大意给出一个长度为\(n\)的数组\(a\),可以执行这个操作任意次。选择一下标\(i\),使得\(a_{1...i}\)加上\(1\),\(a_{i+1...n}\)减少\(1\)。问最少几次操作使得数组\(a\)无序。思路首先如果\(a\)原本就无序的
- 2023-08-01Codeforces Round 887 (Div. 2) 题解
A.Desorting题目的核心操作就是选定一个位置\(i\),使得:对于所有\(j\lei\),\(a_j\leftarrowa_j+1\)对于所有\(j>i\),\(a_j\leftarrowa_j-1\)这样一来,操作后\(a_{i+1}-a_i\)的值就会\(-2\)因为\(a_{i+1}-a_i<0\)时,也意味着\(a_i>a_{i+1}\),所以就达到了要求那么题
- 2023-07-31Codeforces Round 887 (Div. 2)
CodeforcesRound887(Div.2)A.Desorting题目大意给出一个长度为\(n\)的数组\(a\),可以执行这个操作任意次。选择一下标\(i\),使得\(a_{1...i}\)加上\(1\),\(a_{i+1...n}\)减少\(1\)。问最少几次操作使得数组\(a\)无序。思路首先如果\(a\)原本就无序的
- 2023-07-25Codeforces Round 887 (Div. 2) A-D
CodeforcesRound887(Div.2)A.Desorting题意:给出一个数组,可以进行任意次以下操作:选择一个i对于数组中的a[1],a[2],...,a[i]全部+1a[i+1]...a[n]全部-1,问最小使得数组变得无序的操作是多少次Solution直接找相邻的两个数的最小的差值即可voidsolve(){ intn;cin>>n
- 2023-07-24Codeforces Round #887 Div.2 A-E
CodeforcesRound#887Div.2一定要手玩哦前言:一定要手玩,一定要手玩!我今早一手玩发现C很TM简单,如果赛时我能切C说不定直接上1800.。。。时隔多年,我的CodeforcesRating(1718)再次超越了@cqbzlhy(1674)!!!赛时错误:B题出得太慢了->劣于pzj半小时。%%%pzjC没有手玩,瞪眼半天
- 2023-07-24Codeforces Round 887 (Div. 2)记录
A.Desorting如果有$a_1\leqa_2\leq\ldots\leqa_{n-1}\leqa_n$,则称长度为$n$的数组$a$已排序。Ntarsis有一个长度为$n$的数组$a$。他可以对数组进行一种操作(0次或多次):-选择一个索引$i$($1\leqi\leqn-1$)。-将$1$加到$a_1,a_2,\ldots,a_i$。-用$a_{
- 2023-07-24Codeforces Round 887(Div 2)(A-C)
A.Desorting题目里说的无序是指后面的一个数大于前面一个数,所以只要有一个a[i+1]-a[i]<0就说明已经符合题目的无序要求了,不需要改变即可,即输出0如果有该序列是非严格递增的根据题目所说的改变就只需要求出最小的差值即可,最后用最小的差值除以2(因为每次可以让选中的部分之前的
- 2023-07-24Codeforces Round 887 (Div. 1) 题解
https://codeforces.com/contest/1852/problemsA.Ntarsis'Sethttps://codeforces.com/contest/1852/problem/A感觉不是很一眼。\(n\)和\(k\)都是\(2\times10^5\),不能暴力,设当前集合为\({1,2,\dots,10^{1000}}\),那么被操作过一次的最小值就应该是\(\text{MEX}(0,
- 2023-07-24「题解」Codeforces Round 887 (Div. 2)
A.DesortingProblem题目Sol&Code若序列一开始无序答案为\(0\)若有序即\(a_1\leqa_2\leq\dots\leqa_n\)。若想让\(a_i>a_j(i<j)\),操作次数与两数差值\(d(d=a_j-a_i)\)相关为\(\lfloor\dfrac{d}{2}\rfloor+1\),差值越小操作次数越少,故枚举相邻两数取最少
- 2023-07-24Codeforces Round 887 (Div. 2)
C.Ntarsis'Set (\(1\leqn,k\leq2\cdot10^5\))题解:思维+二分我们不妨反向考虑由于答案最后一次一定在第一个位置所以答案上一轮一定在第一个空的位置,假设这个位置为\(x\)那么如果说要使得答案在位置\(x\),那么上上一轮答案一定在第\(x\)个空的位置我们可以
- 2023-07-24Codeforces Round 887 (Div 2) C. Ntarsis' Set
Ntarsis'Set题意是给你n个数,每次按照顺序删除位于a[i]位置的这n个数,问k次后最小的是多少参考这位大佬的题解CodeforcesRound887(Div2)A~C-知乎(zhihu.com)结合一个官方题解,进行一次操作后,由于前面删掉i个数,a[i]到a[i+1]间所有数的排名都要-=i,那么在a[i]到a[i+1]之间的