摘要: 破环为链,并且将链延长一倍就不用考虑C>d了,并且题目说每个战士的奔袭区间都不被包含,所以以左端点排序后,注意到右端点必定单调,这就可以用贪心思想了,让下一个战士能尽可能远,只需要左端点尽可能远,不过要满足左端点在前一个战士的右端点前。第一个想法是暴力,显然会超时,就算用二分查找也会超时(别问我怎么 阅读全文
posted @ 2025-02-07 19:38 十柒* 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 一开始想到暴力,但显然超时,所以换一个思路,不是考虑这头奶牛需要仰望谁,考虑这头奶牛被谁仰望,于是就会想到维护一个单调递减的栈,将比栈首低的奶牛入栈,遇到比栈首高的就出栈,直到栈首比这头奶牛高为止,再将这头奶牛入栈,等所有奶牛都完成后,还剩在栈里的就是没有仰望对象的奶牛。 `#include<std 阅读全文
posted @ 2025-02-07 15:03 十柒* 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 约瑟夫环,用lst来表示环(已经编过号),flag来标记是否出队(0为在队中,-1为出队了),t表示报数,p来遍历环,ans来记录环中剩余人数,剩最后一人就退出循环,遍历一遍flag输出最后一人的编号 `#include<stdio.h> include include using namespac 阅读全文
posted @ 2025-02-07 14:56 十柒* 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 贪心思想,每次合并最小的两堆就能使总消耗最少,所以考虑优先对列,不过要从大到小。 `#include<stdio.h> include include using namespace std; int main(){ int n,a; priority_queue<int,vector,greate 阅读全文
posted @ 2025-02-07 14:50 十柒* 阅读(3) 评论(0) 推荐(0) 编辑
摘要: ST表模版题,用暴力显然超时,所以要采用倍增思想,把一个区间最大值转换成两个子区间的最大值,一直二分下去,直到变为单个值,这样维护一个dp[i][j],i为起始位置,j为2^j长度,这样每次查询的时间复杂度为O(1) `#include<stdio.h> include<stdlib.h> incl 阅读全文
posted @ 2025-02-07 14:48 十柒* 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 优先队列模版题,没什么好说的 `#include<stdio.h> include<stdlib.h> include<string.h> include<bits/stdc++.h> using namespace std; int main(){ priority_queue q; char a 阅读全文
posted @ 2025-02-07 14:22 十柒* 阅读(3) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示