本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。
欢迎大家订阅我的专栏:算法题解:C++与Python实现!
附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总
【题目来源】
洛谷:AT_abc465_a [ABC465A] Supermajority
【题目描述】
给定正整数A AA和B BB。
如果A > B × 2 3 A > B \times \frac{2}{3}A>B×32,输出Yes;否则,输出No。
【输入】
输入由标准输入给出,格式如下:
A AAB BB
【输出】
输出答案。
【输入样例】
316 465【输出样例】
Yes【核心思想】
问题分析:给定正整数A AA和B BB,判断A > B × 2 3 A > B \times \frac{2}{3}A>B×32是否成立。这是一个整数比较 + 浮点避免问题,核心在于将分数不等式转化为整数乘法比较,消除浮点精度风险。
算法选择:
- 不等式变形:A > B × 2 3 ⇔ 3 A > 2 B A > B \times \frac{2}{3} \Leftrightarrow 3A > 2BA>B×32⇔3A>2B,通过交叉相乘将除法转化为乘法
关键步骤:
- 读入数据:读取A , B A, BA,B
- 整数比较:若3 × A > 2 × B 3 \times A > 2 \times B3×A>2×B,输出
Yes;否则输出No
时间/空间复杂度:
- 时间复杂度:O ( 1 ) O(1)O(1)
- 空间复杂度:O ( 1 ) O(1)O(1)
整数运算防浮点误差的核心思想:
- 交叉相乘等价变换:A > 2 B 3 ⇔ 3 A > 2 B A > \frac{2B}{3} \Leftrightarrow 3A > 2BA>32B⇔3A>2B,两边同乘分母3 33消去分数,完全避免浮点运算
- 精度保证:整数乘法精确无误,而浮点除法B × 2.0 / 3.0 B \times 2.0 / 3.0B×2.0/3.0可能因精度问题导致边界判断错误
- 边界安全:即使3 A = 2 B 3A = 2B3A=2B(恰好相等),整数比较也能正确判定为
No,符合严格大于的要求 - 适用于基础不等式判定、浮点精度敏感类入门问题
【算法标签】
#入门 #模拟
【代码详解】
#include<bits/stdc++.h>usingnamespacestd;inta,b;// a, b: 输入的两个正整数intmain(){cin>>a>>b;// 读入两个正整数 A 和 Bif(3*a>b*2)// 判断 A > B * 2/3,等价于 3A > 2B(避免浮点运算)cout<<"Yes"<<endl;// 条件成立,输出 Yeselsecout<<"No"<<endl;// 条件不成立,输出 Noreturn0;}【运行结果】
316 465 Yes