题解:CF1951D Buying Jewels
这个题目的大致意思大概是这样:
爱丽丝有
幸运的是,鲍勃知道爱丽丝是贪婪的购物者:她会先去第一个摊位,尽可能多地购买珠宝,然后去第二个摊位,再尽可能多地购买,以此类推,直到最后一个摊位。了解这一点后,鲍勃可以选择设立摊位的数量,并为每个摊位设置价格,以确保爱丽丝购买到恰好
请注意,爱丽丝不需要花光她所有的硬币。
完整题意戳这~
结合题意,是基本贪心。我们第一次只让爱丽丝能买一个物品,剩下的钱正好可以买
这道题的 AC 代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve() {
ll n, m;
cin >> n >> m;
if (n == m) {
cout << "YES" << endl << "1" << endl << "1" << endl;
} else if (m > (n + 1) / 2) {
cout << "NO" << endl;
} else {
cout << "YES" << endl << "2" << endl << (n - m + 1) << " " << 1 << endl;
}
}
int main() {
int t;
cin >> t;
while (t--) solve();
return 0;
}