<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dark_Modest</title><description>Blog</description><link>https://darkmodest.github.io/</link><language>zh_CN</language><item><title>Hyperframes 使用心得</title><link>https://darkmodest.github.io/posts/hyperframes/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/hyperframes/</guid><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><content:encoded/></item><item><title>PRINCIPLES - RAY DALIO</title><link>https://darkmodest.github.io/posts/principles/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/principles/</guid><description>瑞达利欧的《原则》摘抄。</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;我的历程&lt;/h1&gt;
&lt;h2&gt;概念&lt;/h2&gt;
&lt;h3&gt;回报流与多样化&lt;/h3&gt;
&lt;p&gt;回报流是指因为执行一个特定决策规则而获得的收益。可以想象它是一张图表上的多条曲线，随着时间推移反映&lt;strong&gt;一项投资的价值改变&lt;/strong&gt;以及出售与否的决定。&lt;/p&gt;
&lt;p&gt;因为人会犯错，如果要降低风险而不降低收益，关键在于&lt;strong&gt;合理的多样化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;打造一个&lt;strong&gt;充满高质量回报流&lt;/strong&gt;，并&lt;strong&gt;适度多样化&lt;/strong&gt;（相互补充、相互配合）的资产组合，可以提供更稳定、可靠的收益。&lt;/p&gt;
&lt;p&gt;多样化的回报流应当是良好、&lt;strong&gt;互不相关&lt;/strong&gt;的。&lt;/p&gt;
&lt;h2&gt;摘抄&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;独立思考并决定：你想要什么？事实是什么？面对事实，你如何实现自己的愿望？&lt;/p&gt;
&lt;p&gt;而且要保持谦逊和心胸开阔，以便能动用自己的最佳思维。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;知行合一。如果知行有矛盾，应当解释这些矛盾，最好把它写下来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成功的关键在于，既知道如何努力追求很多东西，也知道如何正确地失败。&lt;/p&gt;
&lt;p&gt;“正确地失败”是指，能够在经历痛苦的失败的过程中吸取重要的教训，从而避免“错误地失败”，即因为失败而被踢出局。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对不同人的观点进行加权，从而选择最好的观点，即，用可信度加权的方式做决定。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做决定时，仔细思考并写下自己的决策标准。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们天生有不同的思维能力，但不是天生就有决策能力。我们在接触现实的过程中学习决策能力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“如果一个人和同伴的步调不一致，也许因为他听到的是不同的鼓点。让他跟着他听到的音乐前行吧，不管节奏是迟缓还是激越。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尽管所有人都会估计未来和当下大同小异，但未来通常会和当下大相径庭。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;股价反映了人们的预期。……大多数人会因为近期的经验而产生偏见。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;冥想&lt;/strong&gt;可以更清晰、更有创造性地思考。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;……当时发生的一切事情，以前都发生过，而且符合逻辑的因果关系使这样的事态发展成为必然。&lt;/p&gt;
&lt;p&gt;“你最好弄明白其他时间、其他地点、其他人身上发生的事，否则你就不知道这些事情会不会发生在你身上，而且一旦发生在你身上，你将不知道如何应对。”（P16）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;确保任何一次押注，都不能使自己的损失超过可以接受的限度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用付出的金额（而不是购买的商品数量）衡量需求，考察买家和卖家分别是谁以及他们为什么买卖，是一种实用得多的（衡量供需）方式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有任何东西是确定的，&lt;strong&gt;你最好总是假设自己没有看到全部&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;拥有有意义的工作和有意义的人际关系。赚钱只是手段，金钱只是你需要的东西之一。最好思考它们的相对价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时机就是一切。看对但及早收手。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从认为“我是对的”变成问自己“我怎么知道我是对的”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成功的唯一途径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找到与我观点不同的最聪明的人，以便自己能够努力理解他们的推理。&lt;/li&gt;
&lt;li&gt;知道自己在什么时候不能有明确的意见，不急于下结论。&lt;/li&gt;
&lt;li&gt;逐步归纳永恒和普适的原则，对其进行测试，将其系统化。&lt;/li&gt;
&lt;li&gt;通过平衡风险来保持较大的回报，并降低下行波动。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只有承认甚至接受自身的弱点时，你才能做出对自身有益的改变。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成功的人经历惨痛失败能够得到教训，这些教训帮助他们走向成功。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;追求卓越就必须挑战自己的极限。可能会使你一蹶不振，这将造成很大的痛苦，但之后会迎来很多其他机会，你能做的就是总结教训，学会谦逊和极度开明的心态，从而增加你成功的概率，然后继续挑战极限。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想要拥有很多优势，而又不暴露于不可接受的劣势之下最稳妥的方式是&lt;strong&gt;做出一系列良好的、互不相关的押注&lt;/strong&gt;，彼此平衡，彼此补充。（P60）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;把错误看成学习和改进的机会。告诉大家我们不能容忍错误只会促使其他人隐藏错误，这将导致更大、代价更高的错误。&lt;/p&gt;
&lt;p&gt;用一套程序确保问题会摆在桌面上，同时确保问题根源会得到剖析，这样才能实现持续的改进。但这种文化会造成很多不适和冲突，尤其是在深入讨论人们的弱点时，会爆发矛盾。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当面对两种你都需要但看起来矛盾的选择时，你需要耐心思考如何尽最大可能兼顾二者。&lt;strong&gt;几乎总有一条道路是存在但你还没有找到的&lt;/strong&gt;，所以你应该努力寻找直到找到，而不是凑合着接受那个看起来明显的选择。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在人际关系中，人们应当把各自的相处原则说得极为清楚。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个集体决策体系要有效，该体系的使用者必须相信它是公平的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个人的大脑都有两个部分——层次较高的逻辑部分与层次较低的情绪部分。它们会争夺对于一个人的控制权。&lt;/p&gt;
&lt;p&gt;管理这一冲突的方式，是我们行为最重要的驱动因素。&lt;/p&gt;
&lt;p&gt;大脑的逻辑部分可以轻易理解了解自身弱点是一件好事（因为这是克服弱点的第一步），但大脑的情绪部分通常讨厌这么做。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Templates</title><link>https://darkmodest.github.io/posts/templates/note/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/templates/note/</guid><description>Useful Templates for Writing Notes, Guides, and Troubleshooting Posts.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;[错误代码/错误现象] 修复记录&lt;/h1&gt;
&lt;h2&gt;1. 元数据（Metadata）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;：2026-07-03 | &lt;strong&gt;环境&lt;/strong&gt;：Win11 / Python 3.10 / Docker | &lt;strong&gt;严重级&lt;/strong&gt;：P0&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;2. 现象与复现（What）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预期结果&lt;/strong&gt;：（系统正常应输出什么）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实际结果&lt;/strong&gt;：（贴报错截图或Log日志，重点用 &lt;code&gt;[ERROR]&lt;/code&gt; 标出）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复现步骤&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;执行 &lt;code&gt;npm run build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;观察控制台...&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;3. 根因分析（Why）—— 对应你的“原因”&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;直接原因&lt;/strong&gt;：依赖包 &lt;code&gt;axios&lt;/code&gt; 版本从 v1.5 升级到 v1.6 导致 API 参数校验失效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深层原因&lt;/strong&gt;：（技术债/文档缺失/并发冲突）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;排查过程&lt;/strong&gt;：（简述二分法定位或关键Debug日志）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4. 原理剖析（How）—— 对应你的“概念”&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;（此处解释涉及的核心机制，比如HTTP Keep-Alive、JVM内存模型、React Fiber等）&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;为什么 v1.6 会报错？因为官方修改了默认 &lt;code&gt;transitional&lt;/code&gt; 配置...&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;5. 解决方案（What）—— 对应你的“解决方法”&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;临时方案&lt;/strong&gt;：（回滚版本 / 重启）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最终方案&lt;/strong&gt;：（修改 &lt;code&gt;axios.defaults.transitional&lt;/code&gt; 配置，贴Diff代码）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证结果&lt;/strong&gt;：（贴测试通过的截图）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;6. 经验教训与Checklist&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] 后续升级第三方库前，务必阅读 &lt;strong&gt;Breaking Changes&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;[ ] 增加单元测试覆盖该边界Case。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;[技术名称] 学习笔记：核心特性&lt;/h1&gt;
&lt;h2&gt;1. 为什么需要它？（痛点）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;旧方案（如同步IO）在并发高时阻塞线程。&lt;/li&gt;
&lt;li&gt;该技术承诺解决：&lt;strong&gt;高吞吐、低延迟&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2. 核心概念（核心理念）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：它是什么？（一句话说清）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构图&lt;/strong&gt;：
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;graph LR; Client--&amp;gt;Proxy--&amp;gt;Backend
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键术语表&lt;/strong&gt;：（如：持久化、哨兵模式、集群分片）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;3. 核心原理（深入浅出）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;工作流程&lt;/strong&gt;：数据写入后，底层发生了哪几步？（如：写AOF -&amp;gt; 更新内存 -&amp;gt; 返回ACK）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键源码/配置解读&lt;/strong&gt;：（只记最难懂的那个参数，如 &lt;code&gt;maxmemory-policy&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4. 快速上手（Hello World）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;环境搭建指令（Docker 一键启动）&lt;/li&gt;
&lt;li&gt;最常用 API 示例（附输出结果）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;5. 踩坑指南（Troubleshooting）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;坑点1&lt;/strong&gt;：默认配置不适用于生产环境 -&amp;gt; 解决方法。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;[场景] 常用指令速查&lt;/h1&gt;
&lt;h2&gt;场景：日志太大，需要切割&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;命令&lt;/strong&gt;：&lt;code&gt;split -b 100m access.log log_part_&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回显解释&lt;/strong&gt;：生成 log_part_aa, ab...&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;场景：Git 误提交大文件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;步骤&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;git filter-branch ...&lt;/code&gt; （强制改写历史）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git push --force-with-lease&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：团队协作时禁用，除非全员知晓。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>政治选必一 35 条速记</title><link>https://darkmodest.github.io/posts/politics/xb1/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/politics/xb1/</guid><pubDate>Mon, 21 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;from https://www.bilibili.com/video/BV1nC411J71E&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;一. 政治多极化&lt;/h1&gt;
&lt;h2&gt;主题关系决国力&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【主题】&lt;/strong&gt; 符合和平与发展时代主题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【关系】&lt;/strong&gt; 国家利益和国家实力是影响国际关系的决定性因素(共同利益；利益冲突)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【决国力】&lt;/strong&gt; 当今国际竞争实质是以经济，军事和科技实力为基础的综合国力的较量&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;两化一挑有障碍&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【两化】&lt;/strong&gt; 顺应世界多极化趋势，经济全球化趋势（相互依存程度日益加深）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【一挑】&lt;/strong&gt; 面临全球性挑战，问题，危机，风险（协调合作，共同应对）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【有障碍】&lt;/strong&gt; 反对霸权主义，强权政治，冷战思维，零和博弈，孤立单边主义，推定国际关系民主化&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;中方发展新秩序&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【中方】&lt;/strong&gt; 中国方案，中国智慧，中国力量（负责任大国形象）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【发展】&lt;/strong&gt; 提升发展中国家在国际事务中的话语权，代表性（维护正当利益）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【新秩序】&lt;/strong&gt; 推定全球治理体系变革，构建更加公平合理的国际新秩序&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;思想新型共命运&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【思想】&lt;/strong&gt; 坚持习近平外交思想、中国特色大国外交&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【新型】&lt;/strong&gt; 相互尊重、公平正义、合作共赢的新型国际关系&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【共命运】&lt;/strong&gt; 构建人类命运共同体&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;联合责任和字头&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【联合国】&lt;/strong&gt; 遵循《联合国宪章》的宗旨和原则&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【责任】&lt;/strong&gt; 中国始终以负责任大国姿态参加国际事务，积极承担责任体现负责任大国形象&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【和字头】&lt;/strong&gt; 走和平发展道路，独立自主的和平外交政策、和平共处五项原则、外交宗旨、外交基本目标&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;二. 经济全球化&lt;/h1&gt;
&lt;h2&gt;开放转型全球化&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【开放型】&lt;/strong&gt; 建设更高水平开放型经济新体制、更高层次的开放型经济、高水平对外开放&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【转型】&lt;/strong&gt; 转变对外经济发展方式，培养以技术、品牌、质量、服务为核心的出口竞争新优势（引进来&amp;amp;走出去）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【全球化】&lt;/strong&gt; 经济全球化是不可逆转的大势、符合经济发展规律+共同利益、我国深度融入经济全球化（受益者、推动者）+更加积极主动参与经济全球化进程、顺应经济全球化趋势+推动经济全球化向开放、包容、普惠、平衡、共赢方向发展&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;分工贸易双循环&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【分工】&lt;/strong&gt; 提高在全球分工、全球产业链的地位&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【贸易】&lt;/strong&gt; 推动贸易投资自由化便利化，多边自由贸易投资，优化营商环境&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【双循环】&lt;/strong&gt; 加快构建国内大循环为主体，国内国际双循环相互促进新发展格局，调动国内国外两个市场、两种资源，引进来走出去相结合&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;自力更生一带路&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【自力更生】&lt;/strong&gt; 坚持独立自主自力更生原则，牢牢掌握发展主动权，维护经济安全（关键领域核心技术、粮食能源安全）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【一带一路】&lt;/strong&gt; 一带一路高质量发展，坚持共商共建共享，互联互通，发挥比较优势，推动国际产能合作，与沿线各国共享机遇（中国：产业升级，扩大市场）&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;三. 国际组织&lt;/h1&gt;
&lt;h2&gt;国际组织和中国&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【国际组织】&lt;/strong&gt; 国际组织是国际社会的重要成员，国际组织在政治、经济、文化等领域开展协调合作，调停和解决国际冲突和经济纠纷，促进世界和平与发展&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【中国和国际组织】&lt;/strong&gt; 参与创建、广泛参加国际组织，积极参与多边事务，支持…组织发挥作用，推动变革&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;联合宪章金砖＋&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【联合国地位】&lt;/strong&gt; 联合国是当今世界最具普遍性、代表性和权威性的政府间国际组织，当今国际秩序的核心，在维护世界和平、推动共同发展、促进人类文明发展等方面发挥着重要作用；联合国是实践多边主义的最佳场所，集体应对各种威胁和挑战的有效平台&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【联合国宪章】&lt;/strong&gt; 各国支持符合《联合国宪章》宗旨原则的决议，推动联合国改革&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【金砖国家】&lt;/strong&gt; 金砖国家是新兴市场和发展中国家加强团结互助、维护共同利益的重要平台；弘扬开放包容、合作共赢的金砖精神；金砖扩员顺应发展中国家崛起大势，南南合作&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;四. 各具特色的国家&lt;/h1&gt;
&lt;h2&gt;国体政体政党利&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【国体】&lt;/strong&gt; 即国家性质，反映社会各阶级在国家中的地位，它是由统治阶级的性质决定的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【政体】&lt;/strong&gt; 国体决定政体，政体体现国体，一定的政体服务于一定的国体&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;国家元首世袭产生：君主立宪制；国家元首选举产生：民主共和制&lt;/p&gt;
&lt;p&gt;立法机关和行政机关：议会制、总统制，半总统制&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【政党】&lt;/strong&gt; 是阶级的领导者，以执政（掌握政权统治国家）为主要目标、手段为参加选举；&lt;/p&gt;
&lt;p&gt;一党制、两党制、多党制&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【利益集团】&lt;/strong&gt; 具有共同利益，向政府或社会提出诉求，或以合法手段施加压力，借以影响公共政策，以争取其集团利益及其成员利益&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;主权单一加联邦&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【主权】&lt;/strong&gt; 一个国家无论采取什么样的国家结构形式，人口、领土、政权和主权始终是国家存在和发展的基本条件，维护国家主权、安全和领土完整是国家的核心利益；主权是一个国家对其管辖区域所拥有的至高无上的、排他性的政治权利&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【单一】&lt;/strong&gt; 全国只有一个中央政权、一部宪法、一种法律体系，中央享有最高权力，地方政权被置于中央政权的统一领导下，只能在宪法和法律规定的全县范围内行使职权&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【联邦】&lt;/strong&gt; 中央和地方在各自范围内享有最高权力并直接行使与人民，相互间不得任意干涉&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>法条</title><link>https://darkmodest.github.io/posts/politics/fatiao/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/politics/fatiao/</guid><pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;第七课 做个明白的劳动者&lt;/h1&gt;
&lt;h2&gt;7.1 立足职场有法宝&lt;/h2&gt;
&lt;h3&gt;一、法律守护劳动者&lt;/h3&gt;
&lt;h4&gt;1. 法律对劳动者权利与义务的保障&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;宪法规定与国家职能&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公民有劳动的权利和义务。国家通过各种途径，创造劳动就业条件，加强劳动保护，改善劳动条件，并在发展生产的基础上，提高劳动报酬和福利待遇。&lt;/li&gt;
&lt;li&gt;国家对就业前的公民进行必要的劳动就业训练。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;劳动法与劳动者&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;劳动法&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：主要调整劳动者与用人单位在劳动过程中发生的社会关系，即劳动关系。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;意义&lt;/strong&gt;：有助于健全劳动关系协调机制，构建和谐劳动关系，促进广大劳动者实现体面劳动、全面发展。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;劳动者&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：指具有劳动能力、以从事某种社会劳动获得收入为主要生活来源、在用人单位的管理下从事劳动并获取劳动报酬的人。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要求&lt;/strong&gt;：应当达到法定就业年龄，除特殊情况外，禁止用人单位招用未满十六周岁的未成年人。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. 劳动法基本原则&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;保护劳动者合法权益&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;地位&lt;/strong&gt;：劳动法的首要原则。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;意义&lt;/strong&gt;：保护劳动者合法权益，可以提升劳动者的获得感、幸福感和安全感。劳动法就是劳动者权益保护法。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;劳动者平等竞争的原则&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;内涵&lt;/strong&gt;：劳动者享有平等就业和选择职业的权利；劳动者就业，不因民族、种族、性别、宗教信仰不同而受歧视。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要求&lt;/strong&gt;：坚决防止和纠正就业歧视，营造公平就业制度环境。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;特殊劳动保护的原则&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;表现&lt;/strong&gt;：除对劳动者的权利进行倾斜保护外，劳动法还注重对未成年工、残疾劳动者等特殊劳动者的劳动保护，切实保障劳动者的合法权益。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;意义&lt;/strong&gt;：显示了国家对劳动者的关怀，也是社会进步的标志。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;二、劳动也要签合同&lt;/h3&gt;
&lt;h4&gt;1. 劳动合同&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：是劳动者与用人单位确立劳动关系、明确双方权利和义务的协议。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;意义&lt;/strong&gt;：有了劳动合同，劳动者维权有据，可以更好地保护自己的合法权益，构建和发展和谐稳定的劳动关系。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内容&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;必备条款&lt;/strong&gt;：劳动合同期限，工作内容和工作地点，工作时间和休息休假，劳动报酬，社会保险，劳动保护、劳动条件和职业危害防护等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可备条款&lt;/strong&gt;：试用期、培训、保守秘密、补充保险和福利待遇等条款。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要求&lt;/strong&gt;：建立劳动关系应当订立书面劳动合同。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. 劳动合同订立&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;原则&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;合法&lt;/strong&gt;：劳动合同的主体、形式和内容必须符合法律、法规的规定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;公平&lt;/strong&gt;：劳动合同的内容应当公平、合理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平等自愿&lt;/strong&gt;：双方当事人的法律地位平等，劳动合同的订立完全出于当事人的意愿。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协商一致&lt;/strong&gt;：劳动者和用人单位在双方意思表示达成一致的基础上订立劳动合同。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;诚实信用&lt;/strong&gt;：用人单位和劳动者在订立劳动合同时应诚实，恪守信用。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;有效劳动合同及其法律效力&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;劳动合同一旦由双方当事人签字或者盖章，即对双方形成约束力，当事人应当依法履行，不得随意变更。&lt;/li&gt;
&lt;li&gt;用人单位必须按照合同约定履行对劳动者的各项义务，并且不得随意解除劳动合同。&lt;/li&gt;
&lt;li&gt;劳动者则必须按照合同约定完成工作，并遵守用人单位的各项规章制度。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;劳动合同无效或者部分无效的情形&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以欺诈、胁迫的手段或者乘人之危，使对方在违背真实意思的情况下订立或者变更劳动合同的。&lt;/li&gt;
&lt;li&gt;用人单位免除自己的法定责任、排除劳动者权利的。&lt;/li&gt;
&lt;li&gt;违反法律、行政法规强制性规定的。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;7.2 心中有数上职场&lt;/h2&gt;
&lt;h3&gt;一、明明白白工作&lt;/h3&gt;
&lt;h4&gt;1. 劳动者的权利&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;取得劳动报酬的权利&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：劳动报酬就是人们常说的工资。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;形式&lt;/strong&gt;：计时工资、计件工资、奖金、津贴和补贴、延长工作时间的工资报酬以及特殊情况下支付的工资等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;休息休假的权利&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;职工每日工作八小时、每周工作四十小时。&lt;/li&gt;
&lt;li&gt;我国实行带薪年休假制度，单位应当保证职工享受年休假。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;获得劳动安全卫生保护的权利&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用人单位必须建立、健全劳动安全卫生制度，并为劳动者提供符合国家规定的劳动安全卫生条件。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;享受社会保险和福利的权利&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;必要性&lt;/strong&gt;：劳动者在职业生涯中可能暂时或永久丧失劳动能力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要求&lt;/strong&gt;：国家和社会为劳动者提供必要的物质帮助。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;其他权利&lt;/strong&gt;：平等就业和选择职业的权利、接受职业技能培训的权利、依法参加和组织工会的权利等。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. 劳动者要承担的义务&lt;/h4&gt;
&lt;p&gt;完成劳动任务，提高职业技能，执行劳动安全卫生规程，遵守劳动纪律和职业道德。&lt;/p&gt;
&lt;h3&gt;二、清清楚楚维权&lt;/h3&gt;
&lt;h4&gt;1. 劳动争议&lt;/h4&gt;
&lt;p&gt;用人单位和劳动者因履行劳动合同发生纠纷。&lt;/p&gt;
&lt;h4&gt;2. 劳动争议解决方式&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;协商与和解&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;劳动者可以与用人单位协商，或请工会或第三方共同协商。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;申请调解&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当事人可以向劳动争议调解委员会申请调解。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;劳动仲裁&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：由劳动争议仲裁委员会以第三方的身份居中进行裁决的活动。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;条件&lt;/strong&gt;：当事人不愿意协商或调解、协商或调解不成等情况下，可以申请仲裁。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效力&lt;/strong&gt;：仲裁裁决具有法律约束力。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;提起诉讼&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;仲裁申请不予受理或对仲裁裁决不服的，可以向人民法院提起诉讼。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>[WIP]政治必修二《经济与社会》知识点</title><link>https://darkmodest.github.io/posts/politics/b2/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/politics/b2/</guid><description>Work in progress.</description><pubDate>Thu, 12 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;知识点&lt;/h1&gt;
&lt;h2&gt;第一单元 生产资料所有制与经济体制&lt;/h2&gt;
&lt;h4&gt;公有制主体地位的体现&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;公有资产在社会资总产中占优势；&lt;/li&gt;
&lt;li&gt;国有经济控制国民经济命脉，对经济发展起主导作用。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;毫不动摇巩固和发展公有制经济&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;必须发展壮大国有经济。&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;加快国有经济布局优化和结构调整。&lt;/li&gt;
&lt;li&gt;深化国资国企改革。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;必须发展壮大农村集体经济。&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;深化农村土地改革，赋予农民更加充分的财产权益。&lt;/li&gt;
&lt;li&gt;巩固和完善农村基本经营制度，发展新型农村集体经济，发展新型农村经营主体和农业社会化服务，发展农业适度规模经营。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;企业成功经营的因素&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;制定正确的经营战略。&lt;/li&gt;
&lt;li&gt;提高自主创新能力，依靠科技进步、科学管理等手段，形成自己的竞争优势。&lt;/li&gt;
&lt;li&gt;诚信经营，树立良好的信誉和企业形象。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;如何构建高标准市场体系&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;强化市场基础制度规则统一。&lt;/li&gt;
&lt;li&gt;完善主要由市场决定价格的机制&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;社会主义市场经济体制特征&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;坚持党的领导，发展党总揽全局、协调各方的领导核心作用。&lt;/li&gt;
&lt;li&gt;把社会主义制度和市场经济有机结合。&lt;/li&gt;
&lt;li&gt;促进全体人民实现共同富裕。（根本目标）&lt;/li&gt;
&lt;li&gt;科学的宏观调控、有效的政府治理。（优势的内在要求）&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;我国政府经济职能和作用&lt;/h4&gt;
&lt;p&gt;宏观调控：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;实施&lt;strong&gt;国家重大发展战略和中长期经济社会发展规划制度&lt;/strong&gt;，实现经济社会发展目标。&lt;/li&gt;
&lt;li&gt;实施&lt;strong&gt;宏观经济政策&lt;/strong&gt;，保持宏观经济稳定。&lt;/li&gt;
&lt;li&gt;实施&lt;strong&gt;产业政策&lt;/strong&gt;，促进产业结构不断优化升级，增强国民经济竞争力。&lt;/li&gt;
&lt;li&gt;实施&lt;strong&gt;区域政策和环境政策&lt;/strong&gt;，推动区域经济协调发展和可持续发展。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;市场监督：**市场监管、质量监管、安全监管，**规范市场秩序，保障公平竞争，弥补市场缺陷。&lt;/p&gt;
&lt;p&gt;公共服务：&lt;strong&gt;加强和优化公共服务，保障社会公平正义，促进共同富裕。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;第二单元 经济发展与社会进步&lt;/h2&gt;
&lt;h4&gt;如何推动高质量发展&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;推动高质量发展，要加快&lt;strong&gt;构建以国内大循环为主体、国内国际双循环相互促进的新发展格局。&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;坚持&lt;strong&gt;扩大内需&lt;/strong&gt;这个战略基点，使生产、分配、流通、消费更多依托国内市场，形成国民经济良性循环。&lt;/li&gt;
&lt;li&gt;把实施&lt;strong&gt;扩大内需战略&lt;/strong&gt;同&lt;strong&gt;深化供给侧改革&lt;/strong&gt;有机结合，增强国内大循环内生动力和可靠性，提升国际循环质量和水平，加快建设&lt;strong&gt;现代化经济体系&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;建设现代化工业体系，全面推进乡村振兴，促进区域协调发展，推进高水平对外开放。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;必须完整、准确全面贯彻新发展理念，以推动高质量发展为主题，加快构建新发展格局，以教育、科技人才为基础性、战略性支撑，全面建设社会主义现代化国家。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;完善社会保障体系的措施&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;对待每个公民并确保其享受相应的社会保障权益。&lt;/li&gt;
&lt;li&gt;既要尽力而为，又要量力而行，要坚持社会保障水平与经济社会发展相适应。&lt;/li&gt;
&lt;li&gt;做到权责清晰。&lt;/li&gt;
&lt;li&gt;总之，健全多层次社会保障体系，要坚持应保尽保原则，按照兜底线、织密网、建机制的要求，加快健全覆盖全民、统筹城乡、公平统一、安全规范、可持续的多层次社会保障体系。&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>YZZX 集训笔记 Day7</title><link>https://darkmodest.github.io/posts/yzzxjixun/day7/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/yzzxjixun/day7/</guid><pubDate>Thu, 28 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P10277&quot;&gt;P10277 [USACO24OPEN] Bessie&apos;s Interview S&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;因为每头牛所面试的农夫可能不同，但是开始时间和结束时间必定相同，所以我们先记录 Bessie 前每头奶牛的结束时间。结束时间的最大值即为第一问答案。 使用优先队列 。&lt;/p&gt;
&lt;p&gt;第二问，需要我们在用优先队列的过程中记录每头奶牛的开始和结束时间。然后用 Bessie 的开始时间找前一头奶牛的结束时间，再向前寻找，最终找到 编号 $1$ 到 $k$ 的奶牛，确定农夫。&lt;/p&gt;
&lt;p&gt;可以 &lt;code&gt;set&lt;/code&gt;维护。遍历到一个奶牛时，如果这个奶牛的结束时间正好是我们要找的，就把它的开始时间放入&lt;code&gt;set&lt;/code&gt;。如果 $i &amp;lt;= k$ 即可记录答案。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;
const int N = 3e5+5;
#define pii pair&amp;lt;int,int&amp;gt;
int n, k, a[N], vis[N], ans;
int st[N], e[N];
priority_queue&amp;lt;int,vector&amp;lt;int&amp;gt;,greater&amp;lt;int&amp;gt; &amp;gt; q;
set&amp;lt;int&amp;gt; s;
signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	// freopen(&quot;interview.in&quot;, &quot;r&quot;, stdin);
    // freopen(&quot;interview.out&quot;, &quot;w&quot;, stdout);
    cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;
    for(int i = 1; i &amp;lt;= n; i++) cin &amp;gt;&amp;gt; a[i];
	for(int i = 1; i &amp;lt;= k; i++) {
        e[i] = a[i];
        q.push(e[i]);
    }
	for(int i = k + 1; i &amp;lt;= n; i++){
		int fro = q.top();
        q.pop();
        st[i] = fro, fro += a[i], e[i] = fro;
        q.push(fro);
	}
    cout &amp;lt;&amp;lt; q.top() &amp;lt;&amp;lt; endl;
    s.insert(q.top());
    for(int i = n; i &amp;gt;= 1; i--){
        if(s.find(e[i]) != s.end()){
            s.insert(st[i]);
            if(i &amp;lt;= k) vis[i] = 1;
        }
    }
	for(int i = 1; i &amp;lt;= k; i++) cout &amp;lt;&amp;lt; vis[i];
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P10192&quot;&gt;P10192 [USACO24FEB] Moorbles S&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;
const int N = 3e5+5;
int t, n, m, k;
int a[5];
int e[N], o[N], w[N];
signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin &amp;gt;&amp;gt; t;
    while(t--){
        cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m &amp;gt;&amp;gt; k;
        memset(o, 0x3f, sizeof(o)), memset(e, 0x3f, sizeof(e));
        for(int i = 1; i &amp;lt;= m; i++){
            for(int j = 1; j &amp;lt;= k; j++){
                cin &amp;gt;&amp;gt; a[j];
                if(a[j] &amp;amp; 1)
                    o[i] = min(o[i], a[j]), e[i] = min(e[i], -a[j]);
                else
                    o[i] = min(o[i], -a[j]), e[i] = min(e[i], a[j]);
            }
            w[i] = max(e[i], o[i]);
        }
        w[m + 1] = 0;
        for(int i = m; i &amp;gt;= 1; i--)
            w[i] = min(w[i] + w[i + 1], 0ll);
        if(n + w[1] &amp;lt;= 0){
            cout &amp;lt;&amp;lt; -1 &amp;lt;&amp;lt; endl;
            continue;
        }
        for(int i = 1; i &amp;lt;= m; i++){
            n += max(e[i], o[i]);
            if(e[i] &amp;gt;= o[i]) cout &amp;lt;&amp;lt; &quot;Even &quot;; // L34: n += e[i]
            else if(n - o[i] + e[i] + w[i + 1] &amp;gt; 0) //L34: n += o[i] 先亏后赚
                cout &amp;lt;&amp;lt; &quot;Even &quot;, n = n - o[i] + e[i];
            else cout &amp;lt;&amp;lt; &quot;Odd &quot;;
            assert(n &amp;gt; 0);
        }
        cout &amp;lt;&amp;lt; endl;
    }
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>YZZX 集训笔记 Day4</title><link>https://darkmodest.github.io/posts/yzzxjixun/day4/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/yzzxjixun/day4/</guid><pubDate>Mon, 25 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;模拟赛&lt;/h1&gt;
&lt;h2&gt;植物收集&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/ds/monotonous-stack/#%E5%BA%94%E7%94%A8&quot;&gt;单调栈 - 洛谷专栏&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/topic/rmq/&quot;&gt;RMQ - OI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;最美子序列&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/math/combinatorics/inclusion-exclusion-principle/&quot;&gt;容斥原理 - OI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;子序列问题 怎么样不记重复？&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cnblogs.com/hzy1/p/16878663.html&quot;&gt;对求本质不同子序列个数的一点理解 - hzy1 - 博客园&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cnblogs.com/Xing-Ling/p/11594147.html&quot;&gt;辰星凌的博客QAQ&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;字符序列&lt;/h2&gt;
&lt;h2&gt;网络攻防&lt;/h2&gt;
&lt;h1&gt;杂题选讲&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P5664&quot;&gt;P5664 [CSP-S2019] Emiya 家今天的饭&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P1578&quot;&gt;P1578 奶牛浴场 - 洛谷 | 计算机科学教育新生态&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;极大子矩形问题。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3275&quot;&gt;P3275 [SCOI2011] 糖果&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3628&quot;&gt;P3628 [APIO2010] 特别行动队&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;算法 &amp;amp; 数据结构&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/ds/monotonous-queue/&quot;&gt;单调队列 - OI Wiki &lt;/a&gt; |  &lt;a href=&quot;https://www.luogu.com.cn/problem/P1886&quot;&gt;P1886 滑动窗口 /【模板】单调队列&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const int N = 1e6+5;
int n, k;
int a[N];
deque&amp;lt;int&amp;gt; q;
signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;
    for(int i = 1; i &amp;lt;= n; i++){
        cin &amp;gt;&amp;gt; a[i];
    }
    for(int i = 1; i &amp;lt;= n; i++){
        while(!q.empty() &amp;amp;&amp;amp; a[q.back()] &amp;gt;= a[i]) q.pop_back();
        q.push_back(i);
        if(i &amp;gt;= k){
            while(q.front() &amp;lt;= i - k) q.pop_front();
            cout &amp;lt;&amp;lt; a[q.front()] &amp;lt;&amp;lt; &quot; &quot;;
        }
    }
    cout &amp;lt;&amp;lt; endl;
    while(!q.empty()) q.pop_front();
    for(int i = 1; i &amp;lt;= n; i++){
        while(!q.empty() &amp;amp;&amp;amp; a[q.back()] &amp;lt;= a[i]) q.pop_back();
        q.push_back(i);
        if(i &amp;gt;= k){
            while(q.front() &amp;lt;= i - k) q.pop_front();
            cout &amp;lt;&amp;lt; a[q.front()] &amp;lt;&amp;lt; &quot; &quot;;
        }
    }
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>YZZX 集训笔记 Day3</title><link>https://darkmodest.github.io/posts/yzzxjixun/day3/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/yzzxjixun/day3/</guid><pubDate>Sun, 24 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;树上问题&lt;/h1&gt;
&lt;h2&gt;树的直径&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;树上两节点之间最长的简单路径是树的直径。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;求法一：两次 DFS&lt;/p&gt;
&lt;p&gt;从任意节点开始进行第一次 DFS，记录最远节点 $z$；再从节点 $z$ 开始进行第二次 DFS，记录最远节点 $z&apos;$。$z$ 和 $z&apos;$ 的最短路径即为树的直径。&lt;/p&gt;
&lt;p&gt;如果有负权则无法使用两次 DFS 求树的直径，而需要使用树形 DP。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190885544&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;求法二：树形 DP&lt;/p&gt;
&lt;p&gt;对于树的直径，实际上是可以通过枚举从某个节点出发不同的两条路径相加的最大值求出。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190897020&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;树的中心&lt;/h2&gt;
&lt;h2&gt;树的重心&lt;/h2&gt;
&lt;h1&gt;树上算法&lt;/h1&gt;
&lt;h2&gt;最近公共祖先 LCA&lt;/h2&gt;
&lt;h3&gt;朴素算法&lt;/h3&gt;
&lt;p&gt;每次找深度较大的那个点，使其向上跳。这样，两个点会交替上行，最终相遇，相遇位置即为 LCA。或者，先调整深度较大的那个点，将两个点深度统一之后一起向上跳，最终也会相遇。&lt;/p&gt;
&lt;h3&gt;倍增优化&lt;/h3&gt;
&lt;p&gt;倍增算法可以用于改进朴素 LCA。&lt;/p&gt;
&lt;p&gt;首先我们需要一个&lt;code&gt;lowbit(n)&lt;/code&gt;函数。 它是一个用于&lt;strong&gt;获取一个数的二进制表示中最低位的1及其后所有0构成的数值&lt;/strong&gt;的函数。例如，$lowbit(20) = lowbit(10100)_2 = 100_2 = 4$。实现方法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int lowbit(x){
    return x &amp;amp; -x;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;建立&lt;code&gt;fa[][]&lt;/code&gt;数组。&lt;code&gt;fa[x][i]&lt;/code&gt;表示点 $x$ 的第 $2^i$ 个祖先。可以通过 DFS 预处理。&lt;/p&gt;
&lt;h2&gt;树上差分&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3128&quot;&gt;P3128 [USACO15DEC] Max Flow P&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;树上贪心&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/AT_abc333_d&quot;&gt;[ABC333D] Erase Leaves&lt;/a&gt; &lt;a href=&quot;https://www.luogu.com.cn/record/191121844&quot;&gt;Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;树形 DP&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P2014&quot;&gt;P2014 [CTSC1997] 选课&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P1122&quot;&gt;P1122 最大子树和&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P1352&quot;&gt;P1352 没有上司的舞会&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;模板：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int dfs(int u){
    vis[u] = 1;
    //初始化
    for(int i = head[u]; i; i = e[i].nxt){
        int to = e[i].to;
        if(vis[to]) continue;
        dfs(to);
        //孩子-&amp;gt;父亲，转移状态
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;换根DP&lt;/h2&gt;
&lt;p&gt;又叫二次扫描。&lt;/p&gt;
&lt;p&gt;相比于一般的树形 DP：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以树上不同点为根，其解不同。&lt;/li&gt;
&lt;li&gt;求解答案需要求解每个节点的信息。&lt;/li&gt;
&lt;li&gt;无法通过一次搜索完成答案求解。&lt;/li&gt;
&lt;li&gt;难度比一般树形 DP 要高。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3478&quot;&gt;P3478 [POI2008] STA-Station&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;给定一个 $n$ 个点的无根树，问以树上哪个节点为根时，其所有节点的深度之和最大？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果以每个节点为根依次搜索一遍，时间复杂度为 $O(n^2)$。&lt;/p&gt;
&lt;p&gt;考虑在第二次搜索时完成所有答案的统计。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;第一次搜索，假设根节点为 $1$ 号节点，则此时只有 $1$ 号节点的答案已知。搜索过程中也需要&lt;strong&gt;统计出所有子树的大小&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二次搜索，依然从 $1$ 号节点出发，如果 $1$ 号节点与 $x$ 节点相连，则考虑能否通过 $1$ 号节点的答案推出 $x$ 节点的答案。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设此时根节点&lt;strong&gt;换&lt;/strong&gt;为节点 $x$，此时子树由两部分构成，第一部分是原子树，第二部分是 $1$ 号节点的其它子树。&lt;img src=&quot;https://pic3.zhimg.com/v2-0f457add2a7272028a19d640ba073058_1440w.jpg&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根节点从 $1$ 号节点变为节点 $x$ 的过程中，可以发现，第一部分深度降低了 $1$，第二部分深度增大了 $1$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;现在，可以通过第一次搜索得到的节点数量得出递推公式：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;$$ans[to] = ans[u] - siz[to] + (siz[1] - siz[to]), fa[to] = u$$&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;void dfs(int u, int fa){
    dep[u] = dep[fa] + 1;
    dis[u]++;
    for(int i = head[u]; i; i = e[i].nxt){
        int to = e[i].to;
        if(to == fa) continue;
        dfs(to, u);
        dis[u] += dis[to];
    }
}
void dfs2(int u, int fa){
    for(int i = head[u]; i; i = e[i].nxt){
        int to = e[i].to;
        if(to == fa) continue;
        ans[to] = ans[u] - dis[to] + (dis[1] - dis[to]);
        dfs2(to, u);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;最长上升子序列 LIS&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P1020&quot;&gt;P1020 [NOIP1999 提高组] 导弹拦截&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;模拟赛 树专项&lt;/h1&gt;
&lt;h2&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/AT_abc165_f&quot;&gt;[ABC165F] LIS on Tree&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;树上LIS，用二分答案优化。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190942546&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/AT_abc348_e&quot;&gt;[ABC348E] Minimize Sum of Distances&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;换根DP。&lt;/p&gt;
&lt;p&gt;要求求最大直径最小，用二分答案求直径。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;记录数组 $dp_u$ 表示在 $u$ 号点，其子树中所有点到达 $u$ 号点的最大链长。转移时，考虑其和子树之间的关系。&lt;/p&gt;
&lt;p&gt;可以发现，$u$ 号点就类似于一个 LCA，两个最长的儿子拼起来的最长链就是这棵子树的最大直径。注意，这里的 $dp_v$ 中所存最长链均已保证子树内部合法。&lt;/p&gt;
&lt;p&gt;接着考虑子树中直径超过二分的上限怎么办？贪心地想，我们肯定是要断掉最长的那条链，保留次长的。因为这样可以使得我们的总长度尽可能小，从而达到最优次数。 最后，如果必须断边的次数大于上限 $s$, 则不合格，应该调大区间，否则&lt;strong&gt;一定合格&lt;/strong&gt;。想一想为什么。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;void dfs(int u, int fa, int lim){
    int maxn = 0;
    for(int i = head[u]; i; i = e[i].nxt){
        int to = e[i].to;
        if(to == fa) continue;
        dfs(to, u, lim);
        if(dp[to] + maxn &amp;gt; lim){
            sum ++;
            maxn = min(maxn, dp[to]);
        } else maxn = max(maxn, dp[to]);
    }
    dp[u] = maxn + 1;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190956093&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3000&quot;&gt;P3000 [USACO10DEC] Cow Calisthenics G&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;树上二分&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P6869&quot;&gt;P6869 [COCI2019-2020#5] Putovanje&lt;/a&gt;&lt;/h2&gt;
&lt;h1&gt;参考&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/graph/tree-diameter/&quot;&gt;树的直径 - OI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/article/ny50jzze&quot;&gt;题解 P3000 [USACO10DEC]Cow Calisthenics G - 青鸟_Blue_Bird&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/348349531&quot;&gt;【朝夕的ACM笔记】动态规划-换根DP - 知乎&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>YZZX 集训笔记 Day2</title><link>https://darkmodest.github.io/posts/yzzxjixun/day2/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/yzzxjixun/day2/</guid><pubDate>Sat, 23 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;算法&lt;/h1&gt;
&lt;h2&gt;最小生成树 MST&lt;/h2&gt;
&lt;p&gt;最小生成树，即&lt;strong&gt;边权和最小的生成树&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;&lt;s&gt;Prim&lt;/s&gt;&lt;/h3&gt;
&lt;p&gt;时间紧迫，先不学了。&lt;/p&gt;
&lt;h3&gt;Kruskal&lt;/h3&gt;
&lt;p&gt;为了造出一棵最小生成树，我们从最小边权的边开始，按边权从小到大依次加入，如果某次加边产生了环，就扔掉这条边，直到加入了 $n - 1$ 条边，即形成了一棵树。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3366&quot;&gt;P3366 【模板】最小生成树&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;void kruskal(){
	sort(e + 1, e + m + 1, cmp); //按边权排序
	for(int i = 1; i &amp;lt;= m; i++){
		int u = f(e[i].u), v = f(e[i].v); 
		if(u == v) continue; //如果连通则不对最小生成树产生贡献，忽略
		ans += e[i].w; 
		unity(u, v); //并入同一集合
		cnt++;
		if(cnt == n - 1) break;
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;例一 &lt;a href=&quot;https://acm.hdu.edu.cn/showproblem.php?pid=7226&quot;&gt;HDU7226&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;边的上界小于 $n$。&lt;/p&gt;
&lt;p&gt;建图，最小生成树。&lt;/p&gt;
&lt;p&gt;边权值域小，可以使用桶排去掉 $log(n)$。复杂度 $O(n)$。&lt;/p&gt;
&lt;h4&gt;例二 &lt;a href=&quot;https://www.luogu.com.cn/problem/P2245&quot;&gt;P2245 星际导航&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;找一条路径上边权的最大值。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;用 Kruskal 建最小生成树。对于每个询问跑 LCA 。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kruskal 重构树&lt;/strong&gt; 可以维护最小生成树上&lt;strong&gt;最大边权&lt;/strong&gt;的问题。&lt;/p&gt;
&lt;p&gt;首先将所有边按边权从大到小排序。&lt;/p&gt;
&lt;p&gt;从最小边开始。如果这条边的两个邻接点在同一个集合中，跳过；否则，建立一个虚点作为这两个点共同的祖先，让这个虚点的点权等于这条边的边权。&lt;/p&gt;
&lt;p&gt;如此操作 $n - 1$ 次，就可以得到一个恰好有 $n$ 个叶子的二叉树，每个非叶子节点刚好有两个儿子。这棵树就是 Kruskal 重构树。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./image-20241123170958104.png&quot; alt=&quot;由P2245样例得到的Kruskal重构树&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;例三 &lt;a href=&quot;https://www.luogu.com.cn/problem/P2619&quot;&gt;P2619 [国家集训队] Tree I&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;一种假解法：朴素贪心。对全部边进行排序，有白选白，直接选择 $need$ 条白边。这样选择的话，生成树权值不为最小，会漏选更小权值的黑边。&lt;/p&gt;
&lt;p&gt;正解：带权二分。&lt;/p&gt;
&lt;h4&gt;例四 &lt;a href=&quot;https://www.luogu.com.cn/problem/P4180&quot;&gt;P4180 [BJWC2010] 严格次小生成树&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;用 LCA 维护最小值和次大值。&lt;/p&gt;
&lt;h4&gt;例五 &lt;a href=&quot;http://poj.org/problem?id=2728&quot;&gt;POJ2728 Desert King&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;最优比率生成树。&lt;/p&gt;
&lt;p&gt;给定 $n$ 个点的一个无向图，图中每对顶点间的边 $e$ 有一个收益 $C_e$ 和一个成本 $R_e$。求该图的一个生成树 $T$。$n &amp;lt;= 1000$。&lt;/p&gt;
&lt;p&gt;0-1分数规划问题。&lt;a href=&quot;https://oi-wiki.org/misc/frac-programming/&quot;&gt;分数规划 - OI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以用二分答案解决。&lt;/p&gt;
&lt;h2&gt;连通性问题 Tarjan算法&lt;/h2&gt;
&lt;h4&gt;例一 &lt;a href=&quot;https://www.luogu.com.cn/problem/P1656&quot;&gt;P1656 炸铁路&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;struct ANS{
	int a, b;
} ans[N];
int anscnt;
int dfn[N], low[N], dfsclock;
void tarjan(int x, int diff){
	low[x] = dfn[x] = ++dfsclock;
	for(int i = head[x]; i; i = edge[i].next){
		if(i == (diff ^ 1)) continue;
		int y = edge[i].to;
		if(!dfn[y]){
			tarjan(y, i);
			low[x] = min(low[x], low[y]);
			if(low[y] &amp;gt; dfn[x]){
				ans[++anscnt].a = x;
				ans[anscnt].b = y;
			}
		} else low[x] = min(low[x], dfn[y]); //这里的 dfn[y] 可以换成 low[y]
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;例二 &lt;a href=&quot;https://www.luogu.com.cn/problem/P2227&quot;&gt;P2227 [HNOI2001] 洗牌机&lt;/a&gt;&lt;/h4&gt;
&lt;h2&gt;并查集&lt;/h2&gt;
&lt;p&gt;例题 &lt;a href=&quot;https://www.luogu.com.cn/problem/P1536&quot;&gt;P1536 村村通&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;并查集是一种树型数据结构，用来处理一些不相交集合的&lt;strong&gt;合并和查询&lt;/strong&gt;问题。可以用来判断一个森林里有几棵树、某个节点是否属于某个数，等等。&lt;/p&gt;
&lt;p&gt;代码实现：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int fa[N], n, m, x, y;
//find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。
int find(int x){
	if(x != fa[x])
		fa[x] = find(fa[x]); // 路径压缩，使祖先下的子节点尽可能多，优化find速度
	return fa[x]; //返回祖先
}
//unity:将两个子集合并成一个集合。
void unity(int x, int y){
	int r1 = find(x);
	int r2 = find(y);
	fa[r1] = r2; //合并祖先
}
int main(){
    cin &amp;gt;&amp;gt; n;
    cin &amp;gt;&amp;gt; m;
    for(int i = 1; i &amp;lt;= n; i++) //init
    	fa[i] = i;
    for(int i = 1; i &amp;lt;= m; i++){
    	cin &amp;gt;&amp;gt; x &amp;gt;&amp;gt; y;
    	unity(x, y);
	}
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;另一种 &lt;code&gt;find()&lt;/code&gt; 的写法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int find(int x) {
    return x == fa[x] ? x : fa[x] = find(fa[x]);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;模拟赛 图论专项（二）&lt;/h1&gt;
&lt;p&gt;$$10 /400$$&lt;/p&gt;
&lt;h2&gt;T1 &lt;a href=&quot;https://www.luogu.com.cn/problem/P7991&quot;&gt;P7991 [USACO21DEC] Connecting Two Barns S&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;用&lt;strong&gt;并查集&lt;/strong&gt;维护不加边时会有几个连通块、每个点在哪一个连通块。用 $f_i$ 来表示 $i$ 所在的连通块的代表点。代表点即为这个连通块在并查集中的祖先。&lt;/p&gt;
&lt;p&gt;如果只有一个连通块，那么&lt;code&gt;ans = 0&lt;/code&gt;；如果有两个连通块，那么&lt;code&gt;ans = 1&lt;/code&gt;；&lt;/p&gt;
&lt;p&gt;如果有大于两个连通块，那么题目将被转化为，通过除了 $f_i$ 和 $f_n$ 的某一个连通块来连接。对于每一个连通块 $f_i$，计算其最小代价，维护 &lt;code&gt;ans&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;可以用二分答案优化。对于每一个点 $i$，&lt;code&gt;upper_bound&lt;/code&gt; 查找 $f_1$ 与 $f_n$ 中离点 $i$ 最近的点，然后分别遍历连通块中的点，维护最小值。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190698478&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;T2 &lt;a href=&quot;https://www.luogu.com.cn/problem/P8191&quot;&gt;P8191 [USACO22FEB] Moo Network G&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;观察到 $1 &amp;lt;= y &amp;lt;= 10$，暴力建边 + Kruskal。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190726088&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;T3 &lt;a href=&quot;https://www.luogu.com.cn/problem/P7528&quot;&gt;P7528 [USACO21OPEN] Portals G&lt;/a&gt;&lt;/h2&gt;
&lt;h2&gt;T4 &lt;a href=&quot;https://www.luogu.com.cn/problem/P8328&quot;&gt;P8328 [COCI2021-2022#5] Usmjeravanje&lt;/a&gt;&lt;/h2&gt;
&lt;h1&gt;参考&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cnblogs.com/qwq-123/p/16596066.html&quot;&gt;hdu7226 - qwq_123&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/graph/mst/&quot;&gt;最小生成树 - OI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;https://blog.csdn.net/u011815404/article/details/84070642&quot;&gt;图论 —— 生成树 - Alex_McAvoy&lt;/a&gt;](https://blog.csdn.net/u011815404/article/details/88625346)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/article/5xh6mqw6&quot;&gt;P7991 [USACO21DEC] Connecting Two Barns S题解 - 洛谷专栏 (luogu.com.cn)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/article/gk8grpa9&quot;&gt;洛谷P7991题解 - Ginger_he&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/ds/dsu/&quot;&gt;并查集 - OI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/the_zed/article/details/105126583&quot;&gt;【算法与数据结构】—— 并查集 - theSerein&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/article/dvxfc9qa&quot;&gt;题解 P1536 【村村通】 - Strong_Jelly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/article/ohcq9kwt&quot;&gt;P7991 题解 - 望月Asta&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>YZZX 集训笔记 Day1</title><link>https://darkmodest.github.io/posts/yzzxjixun/day1/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/yzzxjixun/day1/</guid><pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;模拟赛 - 图论专项（一）&lt;/h1&gt;
&lt;p&gt;$$ 10 / 400 $$&lt;/p&gt;
&lt;h2&gt;T1 机器人擂台赛 (ranking, &lt;a href=&quot;https://www.luogu.com.cn/problem/CF645D&quot;&gt;CF645D&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;拓扑序唯一性。即，在拓扑排序过程中，不能出现多个入度为 $0$ 的节点，否则无法判断机器人级别。&lt;/p&gt;
&lt;p&gt;二分答案，当&lt;code&gt;q.size() &amp;gt; 1&lt;/code&gt;时，拓扑序不唯一，缩小范围，直到找到唯一拓扑序为止，否则输出 &lt;code&gt;-1&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;待补。&lt;/p&gt;
&lt;h2&gt;T2 最近奇偶数对 (parity, &lt;a href=&quot;https://www.luogu.com.cn/problem/CF1272E&quot;&gt;CF1272E&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;BFS，反向建图。&lt;/p&gt;
&lt;p&gt;待补。&lt;/p&gt;
&lt;h2&gt;T3 逃离螺旋迷宫 (maze, COCI2008, &lt;a href=&quot;https://www.luogu.com.cn/problem/P6399&quot;&gt;P6399&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;建图，
$a$，跑 Dijkstra。
待补。&lt;/p&gt;
&lt;h2&gt;T4 最优星际贸易 (COCI2012/2013 Final, HIPERPROSTOR)&lt;/h2&gt;
&lt;p&gt;关于 SPFA，它死了。因此不补。&lt;/p&gt;
&lt;h1&gt;算法&lt;/h1&gt;
&lt;h2&gt;广度优先搜索 BFS&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;因为种种原因之前没有学习BFS，今天被模拟题重创才开始恶补。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;例题 &lt;a href=&quot;https://www.luogu.com.cn/problem/P5318&quot;&gt;P5318  查找文献&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;核心思想：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;将起点先入队。此时&lt;code&gt;q.front()&lt;/code&gt;为起点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重复以下操作：&lt;br /&gt;
取出队列最前端的点，遍历所有与它相邻的点。如果没有访问过，打标记并入队。遍历结束后弹出最前端的点。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;//链式前向星存图
void bfs(int u){
	queue&amp;lt;int&amp;gt; q;
	q.push(u);
	v[u] = 1;
	ans2.push_back(u); //存储路径
	while(!q.empty()){
		int fro = q.front();
		for(int i = head[fro]; i; i = e[i].nxt){
			int to = e[i].to;
			if(!v[to]){
				q.push(to);
				v[to] = 1;
				ans2.push_back(to);
			}
		}
		q.pop();
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190382151&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;拓扑排序 (Topological Sort, Kahn)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;例题 &lt;a href=&quot;https://www.luogu.com.cn/problem/P4017&quot;&gt;P4017  最大食物链计数&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;BFS的变种。仅适用于 DAG (有向无环图)，否则会在环中打转，陷入死循环。&lt;/p&gt;
&lt;p&gt;“事实上，拓扑排序就是将一个图变化为一个线性序列的过程。故，我愿称之为降维打击。” ——&lt;a href=&quot;https://www.luogu.com.cn/user/212283&quot;&gt;Aw顿顿&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;核心思想：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在建边的时候维护每个点的入度。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;for(int i = 1; i &amp;lt;= m; i++){
    int u, v;
    cin &amp;gt;&amp;gt; u &amp;gt;&amp;gt; v;
    add(u, v);
    ind[v]++;
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;扫一遍点，找到入度为 $0$ 的点。入队。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重复操作：&lt;/p&gt;
&lt;p&gt;取出此点并出队，将其放入拓扑序数组，遍历此点的相邻点并将它们的入度 $-1$。
(直观地说，就是删除此点)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当队列为空时，说明所有节点都已进入拓扑序数组。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;bool topsort() {
    queue&amp;lt;int&amp;gt; q;
    int cnt = 0;  //输出顶点的个数
    for (int i = 1; i &amp;lt;= n; i++)
        if (ind[i] == 0) q.push(i);
    while (!q.empty()) {
        int x = q.front();
        q.pop();
        A[++cnt] = x;
        for (int i = 0; i &amp;lt; G[x].size(); i++) {
            int y = G[x][i];
            ind[y]--;
            if (ind[y] == 0) q.push(y);
        }
    }
    return cnt == n; //true:无环  false:有环
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;时间复杂度 $O(E + V)$。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/190436728&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Dijkstra 单源最短路&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;例题 &lt;a href=&quot;https://www.luogu.com.cn/problem/P4779&quot;&gt;P4779 【模板】单源最短路径（标准版）&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一种贪心算法，求带&lt;strong&gt;正&lt;/strong&gt;权图中单源点到其他所有节点的最短路。&lt;/p&gt;
&lt;p&gt;核心思想：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;初始化 &lt;code&gt;dis[s] = 0&lt;/code&gt;，其余顶点的 &lt;code&gt;dis&lt;/code&gt;均为&lt;code&gt;inf&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在所有未标记顶点中找出 &lt;code&gt;dis&lt;/code&gt; 值最小的顶点 &lt;code&gt;x&lt;/code&gt; ，并标记。&lt;/li&gt;
&lt;li&gt;对 &lt;code&gt;x&lt;/code&gt; 的所有未标记邻接点 &lt;code&gt;y&lt;/code&gt; 进行松弛操作。&lt;/li&gt;
&lt;li&gt;重复 2、3 操作 $n$ 次 ，直至所有顶点都被标记。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;void Dijkstra(){
    for(int i = 1; i &amp;lt;= n; i++)
        dis[i] = inf;
    dis[s] = 0;
    d.v = s, d.w = 0; q.push(d);
    while(!q.empty()){
        int u = q.top().v;
        q.pop();
        if(vis[u]) continue;
        vis[u] = 1;
        for(int i = head[u]; i; i = e[i].next){
            if(dis[e[i].to] &amp;gt; (long long)dis[u] + e[i].val){
                dis[e[i].to] = dis[u] + e[i].val;
                d.v = e[i].to, d.w = dis[e[i].to]; q.push(d);
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/184872324&quot;&gt;Complete Code&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Atcoder Beginner Contest 381&lt;/h1&gt;
&lt;p&gt;很特殊的一场比赛，A B C D E F全是和&lt;code&gt;1122&lt;/code&gt;有关的。&lt;/p&gt;
&lt;p&gt;很不幸，我 C 又爆了，赛时 WA 两个点，赛后看题解觉得自己是个SB。&lt;/p&gt;
&lt;h1&gt;总结&lt;/h1&gt;
&lt;p&gt;图论，得学。&lt;/p&gt;
&lt;h1&gt;参考&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/training/42933&quot;&gt;【图论】拓扑排序专题训练 - Aw顿顿&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://oi-wiki.org/graph/topo/&quot;&gt;拓扑排序 - OI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;超超的课件&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>什么是开源协议？</title><link>https://darkmodest.github.io/posts/licensing/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/licensing/</guid><description>Introduction to Open source licensing.</description><pubDate>Mon, 11 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;WIP&lt;/h1&gt;
</content:encoded></item><item><title>Minecraft与中华文化 模组开发企划</title><link>https://darkmodest.github.io/posts/minecraft_feiyi_mod/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/minecraft_feiyi_mod/</guid><description>The Plan of Minecraft and Chinese culture Mod.</description><pubDate>Mon, 11 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;WIP&lt;/h1&gt;
</content:encoded></item><item><title>ABC367 E - Permute K times 题解</title><link>https://darkmodest.github.io/posts/solutions/abc367e/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/solutions/abc367e/</guid><description>First E Accepted; Binary Lifting Classic Problem.</description><pubDate>Sun, 18 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://atcoder.jp/contests/abc367/tasks/abc367_e&quot;&gt;Atcoder Beginner Contest 367 E - Permute K times&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://atcoder.jp/contests/abc367/submissions/56848064&quot;&gt;AC Record&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;题目翻译&lt;/h1&gt;
&lt;h3&gt;问题陈述&lt;/h3&gt;
&lt;p&gt;给定一个长度为 $N$ 的序列 $X$ ，其中每个元素介于 $1$ 和 $N$ 之间（含两个元素），以及一个长度为 $N$ 的序列 $A$ 。&lt;/p&gt;
&lt;p&gt;打印对 $A$ 执行以下操作 $K$ 次的结果。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将 $A$ 替换为 $B$ ，使得 $B_i = A_{X_i}$ 。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;数据范围&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;所有输入值均为整数。&lt;/li&gt;
&lt;li&gt;$1 \le N \le 2 \times 10^5$&lt;/li&gt;
&lt;li&gt;$0 \le K \le 10^{18}$&lt;/li&gt;
&lt;li&gt;$1 \le X _ i \le N$&lt;/li&gt;
&lt;li&gt;$1 \le A _ i \le 2 \times 10^5$&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;解题思路&lt;/h1&gt;
&lt;p&gt;对于这类进行&lt;strong&gt;单一重复操作&lt;/strong&gt;且&lt;strong&gt;数据范围异常大&lt;/strong&gt; $(0 \le K \le 10^{18})$ 的题目，我们可以考虑倍增。&lt;/p&gt;
&lt;p&gt;以 $Testcase$ $1$ 为例。&lt;/p&gt;
&lt;p&gt;原输入为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;7 3
5 2 6 3 1 4 6
1 2 3 5 7 9 11
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我们先模拟 $1$ 次操作：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;7 2 9 3 1 5 9
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在上面的基础上再模拟 $1$ 次：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1 2 5 9 7 3 5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样，我们就可以将两步合并为一步，跳过第 $1$ 次的模拟，只需要 $\dfrac k 2$ 次操作即可获得我们需要的数组。&lt;/p&gt;
&lt;p&gt;继续进行合并，$4$ 步、 $8$ 步、 $16$ 步、 $32$ 步…… $k$ 次操作便能很快完成。&lt;/p&gt;
&lt;p&gt;如果 $k$ 为奇数，需要先操作一次将其转换为偶数再进行倍增。&lt;/p&gt;
&lt;p&gt;时间复杂度：$O(n\log _k)$。&lt;/p&gt;
&lt;p&gt;倍增思想在快速幂算法、求 $LCA$ (最近公共祖先) 中均有应用，可以大大降低重复操作的时间复杂度。&lt;/p&gt;
&lt;p&gt;此外，本题还有时间复杂度为 $O(n)$ 的图论做法，可自行阅读&lt;a href=&quot;https://atcoder.jp/contests/abc367/editorial/10719&quot;&gt;官方题解&lt;/a&gt;。&lt;/p&gt;
&lt;h1&gt;完整代码&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;#include&amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;
int n, k;

signed main(){
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); //cin cout 优化
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;
	vector&amp;lt;int&amp;gt; x(n);
	vector&amp;lt;int&amp;gt; y(n);
	for(int i = 0; i &amp;lt; n; i++){
		cin &amp;gt;&amp;gt; x[i];
		x[i]--; //下标从0开始
	}
	iota(y.begin(), y.end(), 0); //将 y 赋值为0 ~ n-1
	while(k &amp;gt; 0){
		if(k % 2 == 1){ //k为奇数则操作一次
			for(int i = 0; i &amp;lt; n; i++){
				y[i] = x[y[i]]; 
			}
		}
		
		vector&amp;lt;int&amp;gt; tmp(n);
		for(int i = 0; i &amp;lt; n; i++){
			tmp[i] = x[x[i]];
		}
		x = move(tmp); //将tmp直接覆盖到x上，时间复杂度 O(1)
		k /= 2; //倍增
	}
	vector&amp;lt;int&amp;gt; a(n);
	vector&amp;lt;int&amp;gt; b(n);
	for(int i = 0; i &amp;lt; n; i++){
		cin &amp;gt;&amp;gt; a[i];
	}
	for(int i = 0; i &amp;lt; n; i++){
		b[i] = a[y[i]];
		cout &amp;lt;&amp;lt; b[i] &amp;lt;&amp;lt; &quot; \n&quot;[i == N - 1];
	}
	return 0;
}

&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;参考&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://atcoder.jp/contests/abc367/submissions/56848064&quot;&gt;Submission #56848064 - jiangly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://atcoder.jp/contests/abc367/editorial/10707&quot;&gt;E - Permute K times Editorial - physics0523&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=DwvywXofusc&quot;&gt;3分でAtCoder Beginner Contest 367 A-E - evima lab&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Codeforces Round 964 (Div. 4) E 题解</title><link>https://darkmodest.github.io/posts/solutions/cf1999e/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/solutions/cf1999e/</guid><description>Triple Operations</description><pubDate>Thu, 08 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://codeforces.com/contest/1999/problem/E&quot;&gt;Codeforces Round 964 (Div. 4) E - Triple Operations&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;题目翻译&lt;/h1&gt;
&lt;p&gt;Ivy 在黑板上写下了从 $l$ 到 $r$ 的所有整数(包含 $l$, $r$)。&lt;/p&gt;
&lt;p&gt;她执行以下操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在黑板上选择两个数字 $x$ 和 $y$ ，擦除它们，并在它们的位置写上数字 $3x$ 和 $\lfloor \frac{y}{3} \rfloor$ (此处 $\lfloor \bullet \rfloor$ 表示向下舍入到最接近的整数)。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ivy 需要的最少操作数是多少才能使黑板上的所有数字相等 $0$？ 我们有一个证明，这总是可能的。&lt;/p&gt;
&lt;p&gt;样例数量 $t$ ($1 \leq t \leq 10^4$)， $1 \leq l &amp;lt; r \leq 2 \cdot 10^5$。&lt;/p&gt;
&lt;h1&gt;解题思路&lt;/h1&gt;
&lt;p&gt;不难发现，想要将其全部变为 0，首先需要 $x$ 总是等于 $0$ 。 于是子问题变为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如何最快获得一个 $0$？&lt;/li&gt;
&lt;li&gt;在完成第一步后，在 $x = 0$ 的情况下， 最快全部变为 0 需要 &lt;code&gt;y /= 3&lt;/code&gt; 多少次？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于数据范围为 $1 \leq l &amp;lt; r \leq 2 \cdot 10^5$， 我们可以预处理每一个数循环除以 $3$ 变为 $0$ 的次数 $d_i$，再求出前缀和数组&lt;code&gt;sum&lt;/code&gt;，便可以通过 &lt;code&gt;sum[b] - sum[a - 1]&lt;/code&gt; 求出全部变为 0 的次数。&lt;/p&gt;
&lt;p&gt;在获取第一个 $0$ 的过程中，$y$ 会被 &lt;code&gt;y *= 3&lt;/code&gt; $d_l$ 次，最终需要把它除回去，答案应当加上 $d_l$ 。&lt;/p&gt;
&lt;p&gt;时间复杂度 $O(2e5)$。&lt;/p&gt;
&lt;h1&gt;完整代码&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;
const int N = 2e5+5;
int d[N], sum[N];

int gd(int x){
    int cnt = 0;
    while(x){
        cnt++;
        x /= 3;
    }
    return cnt;
}

signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    for(int i = 1; i &amp;lt;= N - 1; i++){
        d[i] = gd(i);
        sum[i] = sum[i - 1] + d[i];
    }

    int cases;
    cin &amp;gt;&amp;gt; cases;
    for(int ii = 1; ii &amp;lt;= cases; ii++){
        sum[0] = 0;
        int l, r;
        cin &amp;gt;&amp;gt; l &amp;gt;&amp;gt; r;
        cout &amp;lt;&amp;lt; sum[r] - sum[l - 1] + d[l] &amp;lt;&amp;lt; endl;
    }
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;参考&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=51N63T9j7-Y&amp;amp;t=3125s&quot;&gt;Codeforces Round 964 (Div 4) - Solution Discussion - Shayan&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>[WIP]政治必修一《中国特色社会主义》知识点</title><link>https://darkmodest.github.io/posts/politics/b1/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/politics/b1/</guid><description>Work in progress.</description><pubDate>Fri, 21 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;课题总览&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;社会主义从空想到科学、从理论到实践的发展
&lt;ol&gt;
&lt;li&gt;原始社会的解体和阶级社会的演进&lt;/li&gt;
&lt;li&gt;科学社会主义的理论和实践&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;只有社会主义才能救中国
&lt;ol&gt;
&lt;li&gt;新民主主义革命的胜利&lt;/li&gt;
&lt;li&gt;社会主义制度在中国的确立&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;只有中国特色社会主义才能发展中国
&lt;ol&gt;
&lt;li&gt;伟大的改革开放&lt;/li&gt;
&lt;li&gt;中国特色社会主义的创立、发展和完善&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;只有坚持和发展中国特色社会主义才能实现中华民族伟大复兴
&lt;ol&gt;
&lt;li&gt;中国特色社会主义进入新时代&lt;/li&gt;
&lt;li&gt;实现中华民族伟大复兴的中国梦&lt;/li&gt;
&lt;li&gt;习近平新时代中国特色社会主义思想&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;关键知识点&lt;/h1&gt;
&lt;h2&gt;社会主义从空想到科学、从理论到实践的发展&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;人类社会的基本矛盾&lt;/strong&gt;: 生产力与生产关系的矛盾、经济基础与上层建筑的矛盾。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;人类社会发展的基本规律&lt;/strong&gt;: 生产关系一定要适应生产力状况，上层建筑一定要适应经济基础状况。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生产力&lt;/strong&gt;: 人类改造自然使其适应社会需要的客观物质力量。生产方式中最革命、最活跃的因素，是社会发展的最终决定力量。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基本要素: 劳动者、劳动对象、生产资料。
&lt;ul&gt;
&lt;li&gt;劳动者: 生产力的主体，在生产力发展中起主导作用。&lt;/li&gt;
&lt;li&gt;劳动对象: 劳动过程中被加工改造的物。&lt;/li&gt;
&lt;li&gt;劳动资料: 劳动资料中起决定作用的是生产工具，生产工具是生产力发展水平的重要标志。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生产关系&lt;/strong&gt;: 人们在物质资料生产过程中形成的不以人的意志为转移的社会关系。包括:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生产资料所有制关系: 公有制、私有制。&lt;/li&gt;
&lt;li&gt;生产中人与人的关系: 剥削与被剥削、平等互助。&lt;/li&gt;
&lt;li&gt;产品分配关系: 按劳分配、按需分配、平均分配。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生产资料所有制在生产关系中起决定性作用，是生产关系的核心，是经济制度的基础。占支配地位的生产资料所有制决定着一个社会的基本性质发展方向。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;经济基础&lt;/strong&gt;: 由社会发展一定阶段的生产力决定的占统治地位的生产关系的总和。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;上层建筑&lt;/strong&gt;: 建立在一定经济基础之上的意识形态以及相应的制度、组织和设施。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;社会形态&lt;/strong&gt;: 人类社会可以分为原始社会、奴隶社会、封建社会、资本主义社会、共产主义社会五种社会形态。社会主义社会是共产主义社会的第一阶段。&amp;lt;br&amp;gt;
一种社会形态代替另一种社会形态，究竟是历史的进步还是倒退，判断的主要标准，是看生产关系是否适应生产力的发展要求，是否符合人类社会发展的总趋势。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;原始社会的解体和阶级社会的演进&lt;/h3&gt;
&lt;h3&gt;科学社会主义的理论和实践&lt;/h3&gt;
&lt;h2&gt;只有社会主义才能救中国&lt;/h2&gt;
&lt;h3&gt;新民主主义革命的胜利&lt;/h3&gt;
&lt;h3&gt;社会主义制度在中国的确立&lt;/h3&gt;
&lt;h2&gt;只有中国特色社会主义才能发展中国&lt;/h2&gt;
&lt;h3&gt;伟大的改革开放&lt;/h3&gt;
&lt;h3&gt;中国特色社会主义的创立、发展和完善&lt;/h3&gt;
&lt;h2&gt;只有坚持和发展中国特色社会主义才能实现中华民族伟大复兴&lt;/h2&gt;
&lt;h3&gt;中国特色社会主义进入新时代&lt;/h3&gt;
&lt;h3&gt;实现中华民族伟大复兴的中国梦&lt;/h3&gt;
&lt;h3&gt;习近平新时代中国特色社会主义思想&lt;/h3&gt;
</content:encoded></item><item><title>ABC354 C - Atcoder Magics 题解</title><link>https://darkmodest.github.io/posts/solutions/abc354c/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/solutions/abc354c/</guid><description>First solution published on Luogu OJ.</description><pubDate>Sun, 19 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;ABC354 C - Atcoder Magics&lt;/h1&gt;
&lt;h2&gt;题目翻译&lt;/h2&gt;
&lt;h3&gt;问题陈述&lt;/h3&gt;
&lt;p&gt;高桥有纸牌游戏 &quot;AtCoder Magics&quot;中的 $N$ 张卡片。其中的第 $i$ 张卡片将被称为 卡片 $i$ 。每张卡片都有两个参数：强度和成本。卡片 $i$ 的强度为 $A_i$ ，成本为 $C_i$ 。&lt;/p&gt;
&lt;p&gt;他不喜欢弱牌，所以他会弃掉它们。具体来说，他会重复下面的操作，直到无法再进行为止：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择两张卡片 $x$ 和 $y$ ，即 $A_x &amp;gt; A_y$ 和 $C_x &amp;lt; C_y$ 。弃牌 $y$ 。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以证明，当无法再进行这些操作时，剩余卡片的集合是唯一确定的。请找出这组卡片。&lt;/p&gt;
&lt;h3&gt;限制因素&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;$2 \leq N \leq 2 \times 10^5$&lt;/li&gt;
&lt;li&gt;$1 \leq A _ i, C _ i \leq 10^9$&lt;/li&gt;
&lt;li&gt;$A _ 1, A _ 2, \dots ,A _ N$ 都是不同的。&lt;/li&gt;
&lt;li&gt;$C _ 1, C _ 2, \dots ,C _ N$ 都是不同的。&lt;/li&gt;
&lt;li&gt;所有输入值均为整数。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;输出&lt;/h4&gt;
&lt;p&gt;剩下的卡片有 $m$ 张，按&lt;strong&gt;升序&lt;/strong&gt;排列为 $i _ 1, i _ 2, \dots, i _ m$ 张。按以下格式打印：&lt;/p&gt;
&lt;p&gt;$m$&lt;br /&gt;
$i_1$ $i_2$ $\cdots$ $i_m$&lt;/p&gt;
&lt;h2&gt;解题思路&lt;/h2&gt;
&lt;p&gt;定义一个结构体，存储卡片的编号、强度、成本，并以强度大小的顺序将结构体排序。&lt;br /&gt;
枚举比较成本。若 $C_i$ 小于它前面所有卡片的成本的最低值，不满足 $A_x &amp;gt; A_y$ 且 $C_x &amp;lt; C_y$，没有卡片能弃掉卡片 $i$ ，便存入答案数组。&lt;br /&gt;
遍历后能得到剩余卡片的集合。升序排序后输出。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;考察对结构体排序的应用。&lt;br /&gt;
&lt;a href=&quot;https://www.luogu.com.cn/article/b3bjhytg&quot;&gt;sort cmp函数与结构体排序应用 - Dark_Modest&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;示例代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;

const int N = 2e5+5;
int minn = 1e9+1;
struct card{
    int id;
    int a;
    int c;
} m[N];
int n;
vector&amp;lt;int&amp;gt; ans;

bool cmp(card x, card y){
    return x.a &amp;gt; y.a;
}

signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    cin &amp;gt;&amp;gt; n;
    for(int i = 1; i &amp;lt;= n; i++){
        cin &amp;gt;&amp;gt; m[i].a &amp;gt;&amp;gt; m[i].c;
        m[i].id = i;
    }
    sort(m + 1, m + n + 1, cmp);
    for(int i = 1; i &amp;lt;= n; i++){
        if(minn &amp;gt; m[i].c){
            minn = m[i].c;
            ans.push_back(m[i].id);
        }
    }
    sort(ans.begin(), ans.end());
    cout &amp;lt;&amp;lt; ans.size() &amp;lt;&amp;lt; endl;
    for(int i = 0; i &amp;lt; ans.size(); i++){
        cout &amp;lt;&amp;lt; ans[i] &amp;lt;&amp;lt; &quot; &quot;;
    }
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>记高一下校务&amp;烹饪实践</title><link>https://darkmodest.github.io/posts/202405cooking/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/202405cooking/</guid><description>宫保鸡丁&amp;西红柿蛋汤</description><pubDate>Thu, 16 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;课前&lt;/h1&gt;
&lt;p&gt;天气晴。&lt;br /&gt;
&lt;strong&gt;7:30&lt;/strong&gt; 早操，后与高一(15)、高二(13)(14)一同留在操场重做。奇怪的评判标准。&lt;br /&gt;
&lt;strong&gt;8:00&lt;/strong&gt; 刚好到班，第一节语文课。课前演讲主题理想主义，戴秀琴老师讲《答司马谏议书》，略过。&lt;/p&gt;
&lt;h1&gt;校务实践&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;8:45&lt;/strong&gt; 下课，出门前往男生宿舍。适逢主任视察，有幸看到宿管双面切换自如的精彩表演。后清扫一楼11间宿舍，右手酸痛。戴耳机，边听着Gracie Abrams边干活还挺快乐的。&lt;br /&gt;
&lt;strong&gt;9:40&lt;/strong&gt; 离宿。&lt;/p&gt;
&lt;h1&gt;烹饪实践&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;9:50&lt;/strong&gt; 进实训室，发现同学们都在备菜，以为自己来迟了，便着急忙慌开始切鸡胸肉，后发现根本没开始。&lt;br /&gt;
师傅先展示刀工，切鸡胸、彩椒、蒜、葱、番茄，叹为观止；后开火下菜，过程没看，但大抵是噼里啪啦、精彩绝伦，无需多表。&lt;br /&gt;
接着我拿刀开切。每种食材都是一回生二回熟，总体上自我感觉刀工还算不错。这时H同学发动他的“观望者”技能：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;H：“你这刀工也太差了吧，切的什么玩意。”&lt;br /&gt;
我：（递刀）“你来？”&lt;br /&gt;
H：“不会。”&lt;br /&gt;
....&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;期间为自己片的第二块鸡肉厚度非常完美感到欣喜。&lt;br /&gt;
组长多带了豆皮，D同学认为不该切小：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;D：豆皮大的菜好吃，我们家里都不切的，一人一大坨。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;但我还是把豆皮切小了。后来的结果证明切小了也挺好吃。&lt;br /&gt;
&lt;strong&gt;10:30&lt;/strong&gt; 备菜完成，交与助教处理。助教没说什么话，只是做菜。&lt;br /&gt;
&lt;strong&gt;10:45&lt;/strong&gt; 宫保鸡丁出锅。刚装盘时观察成色，再和别的组的相对比，感觉我们的似乎很不同，颜色深得多；花椒油也多。尝了一口：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我：我去，真他妈好吃！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;10:50&lt;/strong&gt; 开饭。&lt;br /&gt;
&lt;strong&gt;11:05&lt;/strong&gt; 饭后与D同学聊天，被班主任催：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;班主任：吃完了快点回去收拾东西啊！怎么还在这里聊天？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;无可奈何，只得暗骂着捧腹回实训室。&lt;br /&gt;
&lt;strong&gt;11:15&lt;/strong&gt; 整理完发现T同学组的宫保鸡丁还剩一大盘，于是拿了两个碗盛出来放在桌上，附纸条：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;做多了，请品尝&lt;br /&gt;
——高一(9)班&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;后，回宿。&lt;/p&gt;
&lt;h1&gt;课后&lt;/h1&gt;
&lt;p&gt;现在是12:18，写完后仍在回味。&lt;/p&gt;
&lt;p&gt;附照片：
&lt;img src=&quot;./IMG20240516103802.jpg&quot; alt=&quot;image&quot; title=&quot;dishes&quot; /&gt;
&lt;img src=&quot;./IMG20240516110616.jpg&quot; alt=&quot;image&quot; title=&quot;kitchen&quot; /&gt;
&lt;em&gt;The End.&lt;/em&gt;&lt;/p&gt;
</content:encoded></item><item><title>sort cmp函数与结构体排序应用</title><link>https://darkmodest.github.io/posts/sort/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/sort/</guid><description>First blog published on Luogu OJ.</description><pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;!--最完整的front matter. 可以当做模板--&amp;gt;&lt;/p&gt;
&lt;h1&gt;起因&lt;/h1&gt;
&lt;p&gt;补&lt;a href=&quot;https://www.luogu.com.cn/problem/AT_abc348_c&quot;&gt;ABC348C&lt;/a&gt;中，发现：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;开二维数组空间时间双爆;&lt;/li&gt;
&lt;li&gt;vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt;操作过于麻烦。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;于是翻题解，发现此知识漏洞，遂记录。&lt;/p&gt;
&lt;h1&gt;正文&lt;/h1&gt;
&lt;h2&gt;sort中的cmp函数&lt;/h2&gt;
&lt;p&gt;sort函数在不使用cmp函数下，&lt;strong&gt;默认&lt;/strong&gt;使用升序排序的cmp函数。我们需要对cmp函数稍加定义，即可实现&lt;strong&gt;自定义排序&lt;/strong&gt;。&lt;br /&gt;
以下面的&lt;strong&gt;降序&lt;/strong&gt;排序为例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;

bool cmp(int left, int right){
    return left &amp;gt; right;
}

signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    int a[8] = {1, 3, 2, 4, 6, 5, 7, 8};
    sort(a, a + 8, cmp);
    for(int i = 0; i &amp;lt; 8; i++)
        cout &amp;lt;&amp;lt; a[i] &amp;lt;&amp;lt; &quot; &quot;;
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以得到输出结果为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;8 7 6 5 4 3 2 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;结构体排序(分级排序)&lt;/h2&gt;
&lt;p&gt;直接使用&lt;strong&gt;sort函数&lt;/strong&gt;对结构体进行&lt;strong&gt;升序排序&lt;/strong&gt;往往在算法竞赛中无法满足解题需求。&lt;strong&gt;cmp函数&lt;/strong&gt;能够弥补这一问题。&lt;br /&gt;
以&lt;a href=&quot;https://www.luogu.com.cn/problem/AT_abc348_c&quot;&gt;ABC348C&lt;/a&gt;为例。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;

const int N = 2e5 + 5;
struct d{ //定义结构体
    int a, c;
} b[N];
int n;
int ans = 0;

bool cmp(d x, d y){ //cmp函数
    if(x.c == y.c) return x.a &amp;lt; y.a; //颜色相同,按照美味度升序排序
    else return x.c &amp;lt; y.c; //颜色不同,按照颜色升序排序
}

signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    //输入
    cin &amp;gt;&amp;gt; n;
    for(int i = 1; i &amp;lt;= n; i++)
        cin &amp;gt;&amp;gt; b[i].a &amp;gt;&amp;gt; b[i].c;

    sort(b + 1, b + n + 1, cmp); //排序
    for(int i = 1; i &amp;lt;= n; i++){
        if(b[i].c != b[i - 1].c) //如果颜色改变,此时b[i].a为颜色为b[i].c的豆子的最小美味度
            ans = max(ans, b[i].a); //记录所有豆子中最大的最小美味度
    }
    cout &amp;lt;&amp;lt; ans &amp;lt;&amp;lt; endl;
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://atcoder.jp/contests/abc348/submissions/53218546&quot;&gt;AC Record&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
另一道例题(&lt;a href=&quot;https://www.luogu.com.cn/problem/P1104&quot;&gt;P1104 生日&lt;/a&gt;)。&lt;br /&gt;
通过&lt;strong&gt;年、月、日、输入顺序&lt;/strong&gt;的四层排序，能够非常简单地解决这一题。&lt;br /&gt;
其中cmp函数的if语句嵌套需要以&lt;strong&gt;符合自己的逻辑顺序&lt;/strong&gt;的方法书写，否则容易&lt;strong&gt;思路打结&lt;/strong&gt;。&lt;br /&gt;
AC Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define int long long
#define endl &apos;\n&apos;

int n;
const int N = 105;
struct b{
    int id; 
    string s;
    int y;
    int m;
    int d;
} a[N];

bool cmp(b left, b right){ //以年、月、日、输入顺序的顺序依次排序
    if(left.y == right.y){ //年份相等则进入下一层比较，不相等则得出比较顺序。月、日同理
        if(left.m == right.m){
            if(left.d == right.d){
                return left.id &amp;gt; right.id; //年月日全部相同，比较输入顺序
            } else {
                return left.d &amp;lt; right.d;
            }
        } else {
            return left.m &amp;lt; right.m;
        }
    } else {
        return left.y &amp;lt; right.y;
    }
}

signed main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    cin &amp;gt;&amp;gt; n;
    for(int i = 1; i &amp;lt;= n; i++){
        cin &amp;gt;&amp;gt; a[i].s &amp;gt;&amp;gt; a[i].y &amp;gt;&amp;gt; a[i].m &amp;gt;&amp;gt; a[i].d;
        a[i].id = i; //输入顺序需要手动标记
    }
    sort(a + 1,a + n + 1, cmp); //排序
    for(int i = 1; i &amp;lt;= n; i++){
        cout &amp;lt;&amp;lt; a[i].s &amp;lt;&amp;lt; endl;
    }
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/record/158606587&quot;&gt;AC Record&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;引用&amp;amp;参考&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/article/q3rswefa&quot;&gt;题解：AT_abc348_c [ABC348C] Colorful Beans - klyj1&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://blog.csdn.net/thlzzz/article/details/109695582&quot;&gt;sort函数中的cmp函数使用 - thlzzz, CSDN&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://blog.csdn.net/m0_52410356/article/details/113802527&quot;&gt;C++/C sort函数用法（详细),cmp的构造--一学就会，一用就对 - 渣渣高不会写Java， CSDN&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Changelog&lt;/h2&gt;
&lt;p&gt;2024/5/10： 添加第二条例题&lt;/p&gt;
</content:encoded></item><item><title>Expressive Code Example</title><link>https://darkmodest.github.io/posts/guide/expressive-code/</link><guid isPermaLink="true">https://darkmodest.github.io/posts/guide/expressive-code/</guid><description>How code blocks look in Markdown using Expressive Code.</description><pubDate>Wed, 10 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here, we&apos;ll explore how code blocks look using &lt;a href=&quot;https://expressive-code.com/&quot;&gt;Expressive Code&lt;/a&gt;. The provided examples are based on the official documentation, which you can refer to for further details.&lt;/p&gt;
&lt;h2&gt;Expressive Code&lt;/h2&gt;
&lt;h3&gt;Syntax Highlighting&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/syntax-highlighting/&quot;&gt;Syntax Highlighting&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Regular syntax highlighting&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;This code is syntax highlighted!&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Rendering ANSI escape sequences&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ANSI colors:
- Regular: [31mRed[0m [32mGreen[0m [33mYellow[0m [34mBlue[0m [35mMagenta[0m [36mCyan[0m
- Bold:    [1;31mRed[0m [1;32mGreen[0m [1;33mYellow[0m [1;34mBlue[0m [1;35mMagenta[0m [1;36mCyan[0m
- Dimmed:  [2;31mRed[0m [2;32mGreen[0m [2;33mYellow[0m [2;34mBlue[0m [2;35mMagenta[0m [2;36mCyan[0m

256 colors (showing colors 160-177):
[38;5;160m160 [38;5;161m161 [38;5;162m162 [38;5;163m163 [38;5;164m164 [38;5;165m165[0m
[38;5;166m166 [38;5;167m167 [38;5;168m168 [38;5;169m169 [38;5;170m170 [38;5;171m171[0m
[38;5;172m172 [38;5;173m173 [38;5;174m174 [38;5;175m175 [38;5;176m176 [38;5;177m177[0m

Full RGB colors:
[38;2;34;139;34mForestGreen - RGB(34, 139, 34)[0m

Text formatting: [1mBold[0m [2mDimmed[0m [3mItalic[0m [4mUnderline[0m
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Editor &amp;amp; Terminal Frames&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/frames/&quot;&gt;Editor &amp;amp; Terminal Frames&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Code editor frames&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;Title attribute example&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- src/content/index.html --&amp;gt;
&amp;lt;div&amp;gt;File name comment example&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Terminal frames&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;This terminal frame has no title&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Write-Output &quot;This one has a title!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Overriding frame types&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;Look ma, no frame!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;# Without overriding, this would be a terminal frame
function Watch-Tail { Get-Content -Tail 20 -Wait $args }
New-Alias tail Watch-Tail
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Text &amp;amp; Line Markers&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/text-markers/&quot;&gt;Text &amp;amp; Line Markers&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Marking full lines &amp;amp; line ranges&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// Line 1 - targeted by line number
// Line 2
// Line 3
// Line 4 - targeted by line number
// Line 5
// Line 6
// Line 7 - targeted by range &quot;7-8&quot;
// Line 8 - targeted by range &quot;7-8&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Selecting line marker types (mark, ins, del)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&apos;this line is marked as deleted&apos;)
  // This line and the next one are marked as inserted
  console.log(&apos;this is the second inserted line&apos;)

  return &apos;this line uses the neutral default marker type&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Adding labels to line markers&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}
  value={value}
  className={buttonClassName}
  disabled={disabled}
  active={active}
&amp;gt;
  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &apos;string&apos; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Adding long labels on their own lines&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}

  value={value}
  className={buttonClassName}

  disabled={disabled}
  active={active}
&amp;gt;

  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &apos;string&apos; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Using diff-like syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;+this line will be marked as inserted
-this line will be marked as deleted
this is a regular line
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+this is an actual diff file
-all contents will remain unmodified
 no whitespace will be removed either
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Combining syntax highlighting with diff-like syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;  function thisIsJavaScript() {
    // This entire block gets highlighted as JavaScript,
    // and we can still add diff markers to it!
-   console.log(&apos;Old code to be removed&apos;)
+   console.log(&apos;New and shiny code!&apos;)
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Marking individual text inside lines&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  // Mark any given text inside lines
  return &apos;Multiple matches of the given text are supported&apos;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Regular expressions&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;The words yes and yep will be marked.&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Escaping forward slashes&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;Test&quot; &amp;gt; /home/test.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Selecting inline marker types (mark, ins, del)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&apos;These are inserted and deleted marker types&apos;);
  // The return statement uses the default marker type
  return true;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Word Wrap&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/word-wrap/&quot;&gt;Word Wrap&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Configuring word wrap per block&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// Example with wrap
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// Example with wrap=false
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Configuring indentation of wrapped lines&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// Example with preserveIndent (enabled by default)
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// Example with preserveIndent=false
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Collapsible Sections&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/collapsible-sections/&quot;&gt;Collapsible Sections&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// All this boilerplate setup code will be collapsed
import { someBoilerplateEngine } from &apos;@example/some-boilerplate&apos;
import { evenMoreBoilerplate } from &apos;@example/even-more-boilerplate&apos;

const engine = someBoilerplateEngine(evenMoreBoilerplate())

// This part of the code will be visible by default
engine.doSomething(1, 2, 3, calcFn)

function calcFn() {
  // You can have multiple collapsed sections
  const a = 1
  const b = 2
  const c = a + b

  // This will remain visible
  console.log(`Calculation result: ${a} + ${b} = ${c}`)
  return c
}

// All this code until the end of the block will be collapsed again
engine.closeConnection()
engine.freeMemory()
engine.shutdown({ reason: &apos;End of example boilerplate code&apos; })
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Line Numbers&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/line-numbers/&quot;&gt;Line Numbers&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Displaying line numbers per block&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// This code block will show line numbers
console.log(&apos;Greetings from line 2!&apos;)
console.log(&apos;I am on line 3&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// Line numbers are disabled for this block
console.log(&apos;Hello?&apos;)
console.log(&apos;Sorry, do you know what line I am on?&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Changing the starting line number&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;Greetings from line 5!&apos;)
console.log(&apos;I am on line 6&apos;)
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item></channel></rss>