摘要: 首先来看这个代码 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) 编辑