- 博客(11)
- 收藏
- 关注
原创 CF35C题解
原题传送门思路这道题,我一开始还以为是数学方法,结果一看数据范围:The first input line contains two integersN,MN,M(1<=N,M<=20001<=N,M<=2000)N,MN,M ( 1<=N,M<=20001<=N,M<=2000 )N,MN,M(1<=N,M<=20001<=N,M<=2000)好吧,BFS 模板题。前置芝士BFS 方法,如果您还不会,可以参考这里(应
2021-08-10 18:07:17
96
原创 AT5252题解
注意:这篇题解写给萌新看的,非常详细哦QaQo( ̄▽ ̄)ブ。题目解释从 aaa 数组中中找到 aia_iai、aja_jaj、aka_kak,满足{ai+aj=akai+ak=ajaj+ak=ai\begin{cases}a_i+a_j=a_k\\a_i+a_k=a_j\\a_j+a_k=a_i \end{cases}⎩⎪⎨⎪⎧ai+aj=akai+ak=ajaj+ak=ai中的任意一条。前置芝士:lower_boundlower_bound 是c++自带的二分的函数
2021-08-06 14:39:52
108
原创 CF1025A题解
题目传送门题目翻译给定一个长度为n的小写字母串。你可以将出现次数大于等于2的字母全部变成另一个小写字母。问你最后能否将该小写字母串的所有字母变成同一个字母。如果可以,输出"Yes",否则输出"No"。思路模拟,题目中说你可以将出现次数大于等于2的字母全部变成另一个小写字母。那么,我们一旦遇到两个相同字母,就可以输出Yes了,具体看下面:abaa→bbbbabaa \rightarrow bbbbabaa→bbbbabca→bbcb→bbcaabca \rightarrow bbcb
2021-08-06 10:26:20
109
原创 CF16D题解
CF16D Logging 原题讲解这道题大体思路是:先不断读入,为了节省空间(当然这可以不需要),我们可以直接在读入后进行操作,输入可以用 scanf(更方便),但我给的代码就直接使用 cin。接着就进行直接判断,可以先将时,分转化成目前离当日 00:0000:0000:00 过去了多长时间,这要好计算,再判断大小,要是之前时间 >>> 现在时间,则时光倒流了又过了一天。切记,还要有一个计数器,初值为一,如果之前时间===现在时间,则计数器 +1+1+1 ,否则计数器变为 1
2021-08-06 10:25:25
81
原创 CF792B题解
水题。前置芝士:dequedeque是STL的一个容器,全名为双端队列容器,具体定义方式和vector等相似。有两个重要函数,pushpushpush_ back()back()back() , poppoppop_ front()front()front(),前者可以向队尾插入元素,后者可以弹出(删除)队头元素。正题我们可以通过向队尾插入队头元素后弹出(删除)队头元素,从而实现换一个人,即将这个‘圈’转一格。用deque代码实现就是:a.push_back(a.front());a.po
2021-08-06 10:24:46
106
原创 CF431B题解
题目传送门前置芝士:next_permutation函数next_permutation可以产生一个数组(vector)的下一个排列,具体使用方法为:数组版:next_permutation(a,a+n);vector版:next_permutation(a.begin(),a.end());其作用是可以对一个已排序的数组(vector)做全排列,模板如下:sort(a,a+n);do{//内容}while(next_permutation(a/*a.begin()*/,a+n/
2021-08-06 10:23:56
69
原创 UVA12554题解
题目传送门我是个蒟蒻,有错请多多包含。这道题目是一道不错的数组练习题。【题意】:津津RujiaRujiaRujia过生日了,有TTT个人为他唱生日歌,其中,每个人唱一个词,若人数>>>歌词数161616,则重复唱,直到唱完为止。歌词为:Happy birth day to you //不输出标点哦!Happy birth day to youHappy birth day to Rujia //是Rujia哦!Happy birth day to you唱歌时不许
2021-08-06 10:22:52
66
原创 洛谷P1322题解
题目传送门这道题是一道很好的递归题。(当然模拟也可以做)首先我们看题:在次题中,logo有3个关键词:1.FD(向前);2.BK(向后);3.REPEAT(重复)。这些关键词语法分别为:1.FD n 表示向前移动n步;2.BK n 表示向后移动n步;3.REPEAT n[…(代码)]表示重复执行中括号里面的代码n次。好,我们的题意讲完了。(终于讲完了)现在,我们正式开始讲解题目:首先的首先,再声明一下,我用的是递归做法。(别告诉我您不会递归)首先来看你们最爱的coding:重要
2021-08-06 10:21:47
240
原创 CF977B题解
原题传送门一道模拟题,然鹅我调了好久,是set锅思路1直接暴力,遇到每一个子串,都重新遍历一遍,判断其数量,再和已有的max比较,时间复杂度O(n2)\mathcal O (n^2)O(n2),由于字符串长度最长100,此解能过得去。(这里就不放代码了)思路2利用map和vector(数组也行),用map储存每个子串的数量,vector储存每个子串,vector<string> v;map<string,int> mp;然后再遍历字符串以获取每个子串以及和它相同
2021-08-06 10:21:05
92
原创 CF550C题解
原题传送门一道模拟题。前置芝士(写给小学生看的)结论8 的整除特征:若末三位为 8 的倍数,则整个数为 8 的倍数。推导设 nnn 是 ≥1000\geq1000≥1000 的整数。n=1000a+bn = 1000a+bn=1000a+b∵n≡1000a+b(mod8) 且 8∣1000a\because n\equiv1000a+b\pmod{8 } \ \texttt{且} \ 8\mid 1000a∵n≡1000a+b(mod8) 且 8∣10
2021-08-06 10:19:22
121
原创 CF937B题解
原题传送门solution 1看到题目,我是一开始想(我太弱了)先预处理出 2∼p2\sim p2∼p 的倍数中所有 ⩽y\leqslant \text{y}⩽y 的数,但时间复杂度是 O(py)\mathcal O (py)O(py),最差 O((109)2)=O(1018)\mathcal O ((10^9)^2) = \mathcal O (10^{18})O((109)2)=O(1018) 明显超时。。。for(int i=2;i<p;i++){ for(int j=i;
2021-08-06 10:17:37
66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人