wtpavssite

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2026春季下学期第三周

周一

今天学了
unordered_map
m/n向上取整的写法(m+n-1)/n
/的取整方向都是向0

晚上来补题,发现昨晚上的牛客周赛的第二题是要靠数学上的推到得出结论之后才好写,我最开始完全是暴力的模拟,结果超时了,然后重新看了题之后以为是必须是递增序列,就做了个预处理,结果题意根本不是这样,虽然预处理之后没有超时,但是答案错了,相比队里其他人,他们都观察到了这个点,着实让我有点自卑,不过也没有办法。然后看AI写的代码的时候学习了unordered_map的用法。然后跟着视频改D题,把D改了出来。D题有个特殊的地方是直接/操作是向0取整的,在负数的时候就可以直接用/,而正数就必须向上取整。但是时间有点紧,没能很完全的消化这道题

周二

今天学了
素数判断的6k优化代码如下

bool isprime(int x) {
	if(x < 2) return false;
	if(x == 2 || x == 3) return true;
	if(x % 2 == 0 || x % 3 == 0) return false;
	
	// 6k±1优化
	for(int i = 5; i * i <= x; i += 6) {
		if(x % i == 0 || x % (i + 2) == 0)
			return false;
	}
	return true;
}
原理是一个数一定可以写成6k+1,6k+2,6k+3,6k+4,6k+5的形式,在函数一开始的特殊判断里面,
我们已经把可以被2,3整除的数字去除掉,那么剩下的6k加减1就有可能是素数。
我们最开始检查是否是素数的原理就是判断小于根号x的数字是否有可以成为x的因子的数,如果有那么这个数字就不是素数,
这个时候我们在一开始就已经把x能被2和3整除的情况排除了,
那么我们在小于根号x的数字就只需要检查那么可以写成6k加减1的形式的数字了
这个时候我们把这些可以写成6k加减1的数字去看是否是x的因子,如果都不是那么x就是素数。

例如vector的size函数的返回值是无符号整型,如果在循环遍历的时候没有计算好大小可能会导致变成无符号的最大值

'\n'和endl的区别,endl每一次都会刷新缓冲区,而\n不会,他只会换行。此外cin的时候也会刷新缓冲区
cin.tie(0)可以做到每次cin的时候不会刷新cout的缓冲区
在输入较多的时候可以关闭同步,这样会更快。
二叉树的前序中序后序遍历,已经根据其中两个序列重建完整的二叉树
在输出空格间隔的数据时,如果要求行末没有空格,然后两行换行可以写成" \n"[i==mx](前提是i从1开始,最大是mx)。利用了字符串是个字符数组的特点,最后一个中括号里面的结果是0或者1,意思就是是0输出空格,1输出换行

下午打天梯赛做了11个题,错了三个,得了169,遗憾的是有个之前天梯赛1的原题,我之前没有补,所以我有个样例超时了,没得全分。还剩下七个题来补。第三个题错的原因就是看到太多数据了,然后有点被绕晕了,所以错了,第八题错的原因是第二个for循环那里的结束条件少减一个1,然后还有素数判断的优化不够。12题超时的原因是没有关闭同步,关闭就过了。
晚上的时候来补题,第十一题是比赛的时候没有做的,因为我看很少的人做了,题意是给出树的中序和后序,求出树的形状,然后用给出的新定义求出两个侧面的形状,确实用两个序求出原来的树我都忘了,所以去复习

周三

晚上来补牛客周赛的E题,跟着题解和AI的指导算是理解了这道题的思路,然后自己慢慢把代码写了出来,就是我还是不知道下一次比赛的时候如果遇到了这个题我应该怎么才能想到dp和解决思路。补完了牛客的周赛写了题解但是还差一个题没有写上去。

周四

下午来把题解全部写完了,然后去补了一道天梯赛的11题,发现我最开始的错误就是节点是int范围的,但是我数组最大太小了,所以会导致越界。然后今天本身时间不多,然后还抽出来时间学习强化学习的内容,所以只补了一个题,没什么新学到的知识。最后临走看了天梯赛的倒数第二道题的题解,发现这道题和我一开始想的经典的dp的思路并不一样,我最开始想的是dp记录每个试卷是否做了,而题解上的思路是要获得某个数量的金币所需要付出的最小的时间。

周五

*今天学了
数根,数根是一个数字的每位数字相加,直到这个数字变成个位数。
数根性质:一个数的数根一定和原本的数字直接mod9的结果是相同的。
埃斯筛的写法和6k±1的优化和埃斯筛的不同的使用情况

下午继续来补天梯赛的题,把14题做出来了,还是看石队的代码写的,但是我在自己写的时候发现我的边界会出现问题,原因在于我的dp数组只开了sum个,所以可能会导致dp[sum]本来代表得到sum个金币的最小的时间无法统计,然后我的内层的for循环同样因为dp开小了,导致循环无法遍历所有的dp[j],最后修改了数组的大小之后就过了。然后开始写这次天梯赛的题解,因为我不是很想补倒数第三题。

周六

*今天学了
小顶堆priority_queue<类型,容器>第三个参数可以不写默认大到小,写greater<类型>是小到大,这个模板的后面的部分是不一定按顺序的,但是top一定是最小或者最大值

下午来打成信大的天梯赛,发现自己把能做的都做了还是只做出来七个得分大概是88,自己太菜了,还不好补题。
晚上来打abc,做了四道题,第三题没看懂,前两道对了,第四道算法有点问题。用的小顶堆,算是复习了一下小顶堆,还学到了一个新的性质。

周天

下午打比赛之前做了两个码题集之前的错题,然后把天梯赛的题解写出来了。下午比赛做了六个题,做出来四个,封榜之前排名958,总人数2500的样子,虽然看这个数据还可以,但是还不知道我们学校其他参赛的人排名怎么样,比较关心这个

posted on 2026-03-16 20:14  wt_pav  阅读(9)  评论(0)    收藏  举报