上一页 1 ··· 58 59 60 61 62 63 64 65 66 ··· 81 下一页
摘要: 设我们已经构造出来了最优树\(T_n\),他的叶子节点分别是\(w_1≤w_2...≤w_n\) 假设\(T_n\)的最长的一条路的倒数第二个节点(即这条路叶子节点的父亲)\(x\)只有一个儿子,那么我们删掉这个节点\(x\),让他的儿子代替他,答案会变得更优,矛盾,所以\(x\)一定有两个儿子。我 阅读全文
posted @ 2023-12-10 10:15 最爱丁珰 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 首先来看这个代码 int f(int *p) { int y=(*p)*2; (*p)++; return y; } int main() { int x=10; cout<<x+f(&x); return 0; } 这个代码输出的是31,感觉似乎f加了一个括号? 那再看看这个代码 int f(in 阅读全文
posted @ 2023-12-09 23:17 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 我只能说,别想得太复杂。。 right[]倒序求就好了 update 2024.7.27 这个堆的思想已经碰见多次了,这题和这道题目,所以可以记住 阅读全文
posted @ 2023-12-09 15:58 最爱丁珰 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 其实这个的时间复杂度是\(O(nklogn)\)的,但是由于题目说了保证答案在int范围内,我们加一个小优化就可以了,可以见洛谷代码 当然这道题目其实可以像筛法(或者“序列”这道题目)那个样子确定每一个丑数唯一的产生方式(这里就确定每一个数的最大质因数,从这个数产生新的数只能加入比这个数最大质因数更 阅读全文
posted @ 2023-12-09 15:37 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 这里主要讲一下模拟过程中遇到的问题和想法 首先,为了保证模拟正确,我们应该以时间为参考对象去模拟,这样比以即将进入的任务或者等待队列中的任务为参考对象讨论的情况更少,犯的错误更少,每到达一个新时间如果有任务进入或者有任务完成就可以进行处理 其次,这道题目的\(N\)非常大,所以我们不可能去模拟内存空 阅读全文
posted @ 2023-12-09 13:37 最爱丁珰 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 首先有一个比较错误的贪心思路,就是假设我们前面的操作是最优方案,对于当前的元素,能放第一个栈就放第一个栈;如果不行那么第一个栈的栈顶元素小于当前元素,此时如果能弹出这个栈顶元素就弹出这个栈顶元素,然后重新从最开始的位置开始考虑;否则尝试将当前元素放入第二个栈;如果不行则第二个栈的栈顶元素小于当前元素 阅读全文
posted @ 2023-12-09 11:11 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 见这篇文章 阅读全文
posted @ 2023-12-08 00:05 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 七夕祭其实告诉我们,对这种二维的任意的排列,我们一定可以找到一种方案,使得在不冲突的情况下(没有两个军人在同一个位置),我们一定可以通过最小的交换次数来达到目的 说一下\(x\)怎么搞 首先有一个显而易见的,对于一个坐标轴上的分布在各个点的许多人,如果要他们进行移动最后相邻,那么最后这个队列中,他们 阅读全文
posted @ 2023-12-07 17:32 最爱丁珰 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 我觉得这道题目如果只有第一个问题的话,排序方式是多种多样的,而且考虑的对象也可以是机器 比如我可以给机器按照\(y\)从小到大排序,然后依次考虑每个机器,对于每个机器,在能选择的任务中选择\(x\)最大的即可 但这个时候就没有办法保证价值最大了,所以这道题启发我们,如果一道题目有多维的因素需要考量( 阅读全文
posted @ 2023-12-07 15:33 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 这篇文章分析时间复杂度,假设最终分出来的序列的长度分别是\(len_1,len_2,...,len_k\) 一.普通倍增(指从大到小循环):,\(O(n^2logn)\) 在算\(len_i\)时,倍增倒序循环时,我们每次都会对新增的部分进行快速排序,时间复杂度为\(O(nlogn+\frac{n} 阅读全文
posted @ 2023-12-06 23:54 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
上一页 1 ··· 58 59 60 61 62 63 64 65 66 ··· 81 下一页