C++ cout 格式化输出完全指南
1. 什么是 cout 格式化?
cout 是 C++ 的标准输出流,默认情况下它直接输出内容,比如:
cout << 123; // 输出:123
但有时候我们想让输出更整齐、更美观,比如:
让数字固定宽度(如 00123)
控制小数位数(如 3.14 而不是 3.1415926)
让 true 显示为 "是" 而不是 1
让数字右对齐,并用 * 填充空白
这些功能就是 cout 格式化,主要通过 <iomanip> 和 <ios> 头文件实现。
2. 最常用的格式化功能
(1) 设置输出宽度 setw(n)
作用:控制输出的最小宽度(如果内容不够宽,会补空格或指定字符)。
示例:
cout << setw(5) << 123; // 输出:" 123"(前面补 2 个空格)
setw(5) 表示“最少占 5 个字符”,123 只有 3 个字符,所以前面补 2 个空格。
(2) 设置填充字符 setfill('c')
作用:用指定字符填充空白 ...
C++赛制指南
信息学竞赛不仅是算法与编程能力的较量,更是策略、心态与体力的一场综合考验。而不同的赛制,直接决定了备赛策略和赛场上的战术安排。本文将系统梳理信息学奥林匹克竞赛中常见的几种赛制,帮助你透彻理解规则,从而更有效地进行训练和参赛。
一、OI赛制 (Olympiad in Informatics)
这是国内外信息学竞赛中最经典、最主流的赛制,广泛应用于NOIP(全国青少年信息学奥林匹克联赛)、NOI(全国青少年信息学奥林匹克竞赛)、省选以及众多国际赛事如IOI(国际信息学奥林匹克)。
核心特点:
全程无反馈: 选手在比赛期间提交的程序代码,不会得到任何关于得分情况的反馈。你无法知道提交的代码是得了满分、部分分还是0分。
赛后统一评测: 所有提交的代码会在比赛结束后,由评测系统使用预先准备好的测试数据进行统一评测。
多次提交: 通常允许对同一题目进行多次提交。在NOI系列赛中,通常以最后一次提交为准。
分点给分: 每道题都有多个测试点,每个测试点都有相应的分值。只有通过了所有测试点才能获得满分,否则将获得部分分数。
策略与技巧:
严谨至上: 由于没有即时反馈, ...
《童年》阅读笔记
一、家庭背景与早期生活
基本信息
姓名:阿廖沙・彼什科夫(高尔基的乳名)
出生时间:1868 年
家庭背景:出身于俄国下层社会家庭
早期经历
阿廖沙三岁时,父亲马克西姆因霍乱在阿斯特拉罕病逝。在埋葬父亲的过程中,年幼的阿廖沙还不完全理解死亡的含义,反而为一同埋入墓坑的青蛙感到悲伤。随后,阿廖沙跟随母亲瓦尔瓦拉和外祖母阿库林娜・伊凡诺夫娜前往尼日尼・诺夫哥罗德城的外祖父家生活。
二、外祖父家的生活环境
外祖父卡什林
身份:小染坊主,年轻时曾是纤夫
性格特点:
暴躁、乖戾、贪婪、自私
经常凶狠地毒打外祖母和孩子们
暗地里放高利贷,接受典当,甚至唆使徒工偷窃
随着家境衰败,性格变得越来越古怪和残暴
家庭环境特征
充满仇恨:家庭成员之间缺乏亲情,充满敌意
暴力频发:外祖父经常殴打家人,舅舅们也经常打骂妻子
财产争夺:两个舅舅为了家产和阿廖沙母亲的嫁妆不断争吵斗殴
道德沦丧:二舅雅科夫甚至打死了自己的妻子
三、重要人物关系
外祖母阿库林娜・伊凡诺夫娜
身份:阿廖沙的外祖母,出身底层,经历过贫穷 ...
C++ 贡献法与单调栈完全指南:从原理到实战,解决复杂问题的高效技巧
在算法竞赛和编程面试中,我们常常会遇到一些关于数组、序列的复杂问题,例如“寻找所有子数组的最小值之和”或“柱状图中的最大矩形”。暴力枚举虽然直观,但时间复杂度往往难以接受。这时,贡献法 与 单调栈 这两大“神器”的结合,便能为我们提供一种高效而优雅的解决方案。
本指南将带你深入理解这两种思想,并通过C++代码示例,让你彻底掌握这一强大工具组合。
第一部分:理解核心概念
1.1 什么是贡献法?
贡献法 是一种逆向思维。它不直接求解最终答案,而是思考:数组中的每个元素,对最终答案贡献了多少?
传统思路:枚举所有子数组(或子序列),然后计算每个子数组的某个属性(如最小值),最后求和。
贡献法思路:固定一个元素 arr[i],确定它在哪些子数组中作为最小值(或其他特定角色),然后将这些子数组的数量乘以 arr[i],即为 arr[i] 对总和的贡献。最后,将所有元素的贡献相加,得到最终答案。
核心思想:化整为零,分而治之。
1.2 什么是单调栈?
单调栈 是一种特殊的栈,其栈内元素始终保持单调性(递增或递减)。它 ...
一、巴什博奕(Bash Game)类
例题1(基础)
有21颗石子,两人轮流取,每次取1~4颗,取到最后一颗者胜。问先手必胜策略。
解析:
可控和 m+1=5m+1 = 5m+1=5。
21÷5=4⋯121 \div 5 = 4 \cdots 121÷5=4⋯1,余数1。
先手取1颗,剩余20(5的倍数),之后对方取aaa颗,我方取5−a5-a5−a颗。
必胜。
例题2(取最后一颗输)
30颗石子,每次取1~3颗,取到最后一颗的人输。问先手策略。
解析:
取最后一颗输 ⇒ 转化为29颗石子取最后一颗胜。
29÷4=7⋯129 \div 4 = 7 \cdots 129÷4=7⋯1。
先手取1颗,剩余28(4的倍数),之后对方取aaa颗,我方取4−a4-a4−a颗,最后对方取最后一颗输。
必胜。
二、威佐夫博奕(Wythoff Game)
例题3
两堆石子,一堆10个,一堆15个,两人轮流取,可以:
从一堆取任意个;
从两堆同时取相同个数。
取到最后一颗者胜。问先手策略。
解析:
威佐夫博奕:必败态为 (ak,bk)(a_k, b_k)(ak,bk) ...
在 C++ 中,auto&& 是一个转发引用(forwarding reference),它有两个主要作用:
1. 通用引用
auto&& 可以绑定到任何类型的值:
左值 (lvalue)
右值 (rvalue)
const/非const
auto&& x1 = 42; // 绑定到右值int y = 10;auto&& x2 = y; // 绑定到左值const int z = 20;auto&& x3 = z; // 绑定到const左值
2. 在递归 lambda 中的特殊作用
在你的代码中:
auto solve = [&](auto&& self, i64 i, i64 j) -> i64 { // ... dp[i][j] = self(self, i - 1, j); // ...};
这里的 auto&& self 允许:
完美转发:保持参数的值类别( ...
🌳 线段树完全指南:从原理到实战
一、什么是线段树?
线段树是一种二叉树数据结构,专门用于高效处理数组区间操作。它将数组分成多个区间,每个树节点存储一个区间的聚合信息(如求和、最大值、最小值等)。
核心优势:将区间查询的时间复杂度从O(n)优化到O(log n)!
直观理解
想象一下,如果你需要频繁计算一个很长数组的各个区间和,每次都遍历整个区间会很慢。线段树就像是一个"预计算专家",它提前计算出各个区间的和并存储起来,当你需要查询时,它只需要组合几个预先计算好的结果就能快速给出答案。
现实比喻:就像一本书的目录,不需要逐页翻阅就能快速找到各个章节的位置。
二、基础线段树实现(区间求和)
#include <iostream>#include <vector>#include <algorithm>#include <climits>using namespace std;// 基础线段树(区间求和)struct SegmentTree { vector<int> tree; // 线段树数组 vect ...
CSP竞赛中freopen的标准用法指南
在CSP等算法竞赛中,freopen是处理文件输入输出的标准方式。以下是竞赛专用写法:
竞赛标准模板
#include <bits/stdc++.h>int main() { // CSP竞赛标准写法 - 无需检查返回值,题目保证文件存在 freopen("题目名称(英文名).in", "r", stdin); freopen("题目名称(英文名).out", "w", stdout); // 你的竞赛代码 int a, b; cin >> a >> b; cout << a + b << "\n"; // 竞赛中通常不需要关闭文件 return 0;}
竞赛特点说明
无需错误检查:竞赛题目保证输入文件存在且格式正确
无需恢复标准流:程序结束后系统会自动处理
无需fclose:减少代码量 ...
C++
未读 C++ 原根知识详解
前言:为什么要学原根?
可能你会问,“原根” 听起来这么陌生,学它有啥用?其实它在生活中藏得很深 —— 比如你手机支付时的加密、网上传输文件的安全保障,背后都有原根的影子。而且它
像看起来那么难,就像学骑自行车,一开始觉得复杂,掌握规律后就很简单。这篇文章会用大白话,从最基础的内容讲起,让你轻松搞懂原根。
一、先搞懂两个 “预备知识”
在说原根之前,得先明白两个简单概念,不然就像学数学没学过加减,直接学乘法一样费劲。
1.1 什么是 “互质”?
“互质” 就是两个数的 “最大公约数只有 1”。比如:
3 和 7:它们的公约数只有 1,所以互质;不
4 和 6:公约数有 1、2,最大公约数是 2,所以不互质。
你可以这么记:两个数除了 1 之外,没有其他 “共同的除数”,就是互质。
1.2 什么是 “欧拉函数 φ(m)”?
欧拉函数 φ(m)(读作 “斐 (m)”),简单说就是 “小于 m 且和 m 互质的正整数的个数”。举几个例子:
当 m=7 时:小于 7 的正整数是 1、2、3、4、5、6,这些数都和 7 互质(因为 7 是质数,除了 ...






















