信息学奥赛
未读
A. 字符串按照题意模拟即可,如果想要省掉代码量可以开个 std::vector<std::pair<char, int>> ve(n) 前一个记录字符,后一个记录当前的下标,直接进行升序排序,然后直接从k+1个开始输出。 提供排序的代码。
12345678910111213141516171819202122void clearlove13(void){ int n, k; std::cin >> n >> k; std::string s; std::cin >> s; std::vector<std::pair<char, int>> ve(n); for (int i = 0; i < n; i++) { ve[i] = std::make_pair(s[i], i); } std::sort(ve.begin(), ve.end()); std::vector<std::pair< ...
洛谷
未读![题解:P14702 [ICPC 2024 Tehran R] Boat](/img/2026/top_img1.webp)
题目传送门
贪心,细节较多。
思路分析先特判无解情况。
提示
如果某个重量大于最大载重量 $w$,输出 −1,结束。
如果最轻的两个人重量之和超过了 $w$,即无人可以当船夫,输出 −1,结束。
否则一定有解,尽量让两人配对上船,为了用最少次数,先 sort 从小到大排序,再让最轻的人作为船夫,分为两种情况:
如果 $a_i+a_1 \leq w$,可以和最轻的人一起上船,可载两人。这样运送要 $2$ 次,$ans \leftarrow ans+2$。
否则,不可以和最轻的人一起上船,只载一人。这样运送要 $4$ 次,$ans \leftarrow ans+4$。
最后船夫不回来,所以输出 $ans-1$。
代码按思路写即可,注意细节,这里不放了。
结语感谢您的阅读!
洛谷
未读![题解:P14731 [ICPC 2022 Seoul R] Parentheses Tree](/img/2026/top_img1.webp)
P14731 [ICPC 2022 Seoul R] Parentheses Tree
题目传送门
前置知识STL 中的 stack 容器提供了一众成员函数以供调用,其中较为常用的有:
定义
头文件 $\color{green}\textbf{}$。
元素访问
st.top() 返回栈顶。
修改
st.push() 插入传入的参数到栈顶。
st.pop() 弹出栈顶。
容量
st.empty() 返回是否为空。
st.size() 返回元素数量。
部分内容来自 栈 - OI Wiki。
总体分析核心:用栈匹配括号并在叶节点累加距离。
思路引导
提问
如何对左括号进行判断是否为叶节点?
成功
当 $s_i$ 为 ( 时,如果栈非空,将栈顶替换为 false,再将 true 入栈。
提问
如何将答案进行累加?
成功
当 $s_i$ 为 ) 时,如果栈顶 ( 是叶子节点,先累加栈内元素数量,再弹出栈顶。
警告
不开 long long 见祖宗。
...
生活
未读1111
居中内容。
追忆我常常追忆过去。
生命瞬间定格在脑海。我将背后的时间裁剪、折叠、蜷曲,揉捻成天上朵朵白云。
云朵之间亦有分别:积云厚重,而卷云飘渺。生命里震撼的场景掠过我的思绪便一生无法忘怀,而更为普通平常的记忆在时间的冲刷下只留下些许残骸。追忆宛如入梦,太过清楚则无法愉悦自己的幻想,过分模糊却又坠入虚无。只有薄雾间的山水,面纱下的女子,那恰到好处的朦胧,才能满足我对美的苛求。
追忆总在不经意间将我裹进泛黄的纸页里。分别又重聚的朋友,推倒又重建的街道,种种线索协助着我从一个具体的时刻出发沿时间的河逆流而上。曾经的日子无法重来,我只不过是一个过客。但我仍然渴望在每一次追忆之旅中留下闲暇时间,在一个场景前驻足,在岁月的朦胧里瞭望过去的自己,感受尽可能多的甜蜜。美好的时光曾流过我的身体,我便心满意足。
过去已经凝固,我带着回忆向前,只是时常疏于保管,回忆也在改变着各自的形态。这给我的追忆旅程带来些许挑战。
我该在哪里停留?我问我自己。
洛谷
未读![题解:P14730 [ICPC 2022 Seoul R] Palindrome Type](/img/2026/top_img1.webp)
纯享阅读区题目传送门
总体分析核心:修改字符串 $s$ 使其成为回文串,记最小次数为 $k$,如果 $k\leq3$,输出 $k$,否则输出 -1 。
因此,可以从 $k=0\sim3$ 依次进行 DFS 搜索,只要有一次成功,输出 $k$,结束。
思路引导提问如何 DFS 搜索修改过程算出 $k$?
DFS 函数使用 双指针。
当 $l<r$ 时:
如果左指针 $l$ 和右指针 $r$ 对应的 $s_l=s_r$,那么这部分已经是回文的,$l$ 向右移,$r$ 向左移。
否则:
如果剩余次数 $step=0$,无法继续修改,返回无法完成。
如果删除 $l+1$ 或 $r+1$ 可完成,返回可以完成。
否则返回无法完成。
返回无法完成。
警告如果 $k\leq 3$ 都不可以,最后输出 -1 。
核心代码12345678910111213bool dfs(int l, int r, int step){ while(l<r){ if(s[l]==s[r])l++,r--; else{ ...
洛谷
未读
AT_joi2024_yo1c_b 桁 (Digit)题解安利一下自己的博客
题目传送门
题目大意给出 $a,b$,求 $a+b$ 的位数。
思路引导
提问
如何统计 $a+b$ 的位数?
成功
我们将 $a+b$ 转化为字符串函数大法好,输出 $a+b$ 的长度即可。
核心代码123456789#include<bits/stdc++.h>using namespace std;int a,b;int main() { cin>>a>>b; cout<<to_string(a+b).size();//需使用洛谷IDE中C++14 (GCC 9)及以上版本,蓝C++会CE return 0;}//By _ruyingsuixing_(UID:1620655)
洛谷
未读
CF2139B Cake Collection安利一下博客 🥳🎆🎉祝大家 2026 新年快乐!
纯享阅读区
题意分析核心:用 $m$ 秒去拿 $n$ 个烤好的蛋糕,要拿的尽量多。用 贪心 算法。
思路引导
提问
如何保证能选到最好的方案?
成功
对数组 $a$ 从大到小进行排序,如果 $n \le m$,则可以把所有烤箱中的蛋糕都拿一遍,生产蛋糕越多的越晚拿,且后面会给出证明:早拿一次再晚拿一次和直接晚拿一次一样,不如直接晚拿一次简单。否则 $n>m$,就直接拿排序后最好($a_i$ 较大)的烤箱中的蛋糕,同样,生产蛋糕越多的越晚拿。
综上,取个 $\min {n,m}$ 即可。
Tip
从大到小进行排序不用手写 cmp 了!使用 greater<int>() 可以直接大到小进行排序。示例代码:
1sort(a+1,a+n+1,greater<int>());//对数组 a 从大到小进行排序
提问
如何证明早拿一次再晚拿一次同一个烤箱,和直接晚拿一次一样?
...
其他
未读博客迁移分流说明在我的第一个博客陪伴大家 $4$ 个月后,由于当时技术较差,不会使用 git 命令行和 node.js,所以不够美观,现决定将信息技术类文章迁移至此,将生活小记保留原博客,望周知。
谢谢你们的支持!
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
