- 博客(6)
- 收藏
- 关注
原创 C++STL容器.size()返回值注意点
今天写代码时,有个点卡了我很久,最后一步步输出才发现问题出在.size()返回值上,记录一下。先看代码int cnt=-1;vector<int> v(5);if(cnt>=v.size()) cout<<"yes";else cout<<"no";之前我认为输出应该是“no”,但是其结果应该是“yes”!!!这是因为.size()的返回值,是一个unsigned 类型,-1与其相比就会将-1看做4294967295 (unsigned(-1)
2022-04-27 14:58:38 2662
原创 数组和链表的顺序遍历的时间比较
数组和链表的顺序遍历的时间比较结论:数组顺序遍历快于链表原因:CPU每次取数据时都不是只取一个数据,而是将那连续的一块一起取, 而因为数组的地址空间是连续的,所以下几次要访问的元素也一起被 放入缓存中了,减少了对内存的访问(访问速度:缓存 快于 内存)。 由于链表的元素是离散的放在内存中的,所以遍历每个元素的都需要 对内存进行访问,导致顺序访问效率不如数组。//采用vector<>和list<>来分别代表数组和链表#include<bits/
2022-04-16 17:19:04 2147
原创 Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2) C、D题解
C. Complex Market Analysis**题意:**给定数列a,求出满足以下条件的数列的个数**思路:**我们可以从每个数的贡献来考虑。因为要求数列乘积为素数,那么只有素数才能对答案有所贡献,且与其相乘的数必定都为1且连续,只有这样数列乘积才是素数。因为从ai开始每次下标都增加e,那么下标index%e不相同的数一定互不影响,所以我们可以将index%e相同的数放在一起考虑,每次只考虑index%e相同的一组即可。我们定义l[maxn]表示:i节点左边连续1的个数,r[maxn]表示:i
2021-11-29 16:10:54 885
原创 Codeforces Round #756 (Div. 3) D - Weights Assignment For Tree Edges
D - Weights Assignment For Tree Edges题意给定b[],含义是i的父节点是b[i];给定p[],要求最后构建出来的树,节点到root的距离从小到大,排列顺序与p[]的顺序相同。思路:定义两个数组,dp[maxn]:i到root的距离为dp[i] ,ans[maxn]:i到其父节点的距离为ans[i],最后要输出的答案就是ans数组。从1到n遍历p[],维护更新dp[]和ans[]即可。ans[p[i]]=(dp[p[i-1]]+x)-dp[b[p[i
2021-11-27 20:17:22 307
原创 Codeforces Round #756 (Div. 3) E1 - Escape The Maze (easy version)
E1 - Escape The Maze (easy version)bfs+剪枝具体思路看代码/* Codeforces Round #756 (Div. 3) bfs+剪枝 考虑点1到其他节点的最短距离a,然后再比较friends点到其他点的距离b,如果a<b那么friends 在这个点就追不到。若存在叶子节点a<b,则YES 做一个剪枝优化时间复杂度, friends的每次bfs只更新对结果可能有影响的点即可, 做一个剪枝优化时间复杂度,如:当前节点a&
2021-11-26 22:59:33 550 2
原创 Educational Codeforces Round 112 (Rated for Div. 2)
A. PizzaForces: 题意:给定三种类型的披萨分别为:6片花费15分钟、8片花费20分钟、10片花费25分钟,给出需要n片,求的最少花费时间。 思路:计算可知每种披萨单件都是2.5,即对披萨种类的选择没有优先的区别。问题转变为用6、8、10凑n,使得花费最小。且6、8、10能刚好凑到大于10的所有偶数,所以如果n是奇数,考虑n+1后的花费;如果n是偶数,花费为n*2.5。最后特判一下<=10的情况即可。#include<bits/stdc++....
2021-07-31 01:04:25 103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人