CF1951D.Buying Jewels-构造
link:https://codeforces.com/contest/1951/problem/D
题意:有一个人持有
应该可以说是很有意思的题,构造题给了
第一次会买
首先需要有一个感觉,纯粹的下取整和取模的序列是很难分析(也很难计算的),对这一点有了把握后再去考虑简化问题:
- 首先
一定无解, 可以直接构造 的情况下, 如果是1的话只能买 件商品,那么 ,第一次至多买 件商品,剩下 元钱,所以至多买 件商品,因此必要条件 之一是- 然后需要有一个大胆的想法,60的条件可能是有一定迷惑性的(包括一些交互题也是)
- 用两次构造能不能构造出来,最好的情况下是第二次直接
- 那就希望有
,然后又一个尝试 是否可行,这意味着 ,此时 ,得到 ,代回来 ,而条件有 ,则 - 所以这样就构造出来了…
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define endl '\n' #define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; typedef long long ll; int main(){ fastio; int tc;cin>>tc; while(tc--){ ll n,k; cin>>n>>k; if(k>n)cout<<"NO"<<endl; else if(k==n){ cout<<"YES"<<endl; cout<<1<<endl<<1<<endl; }else if(k<=(n+1)/2){ cout<<"YES"<<endl; cout<<2<<endl; cout<<n-k+1<<' '<<1<<endl; }else cout<<"NO"<<endl; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2021-04-08 [日常摸鱼]算是一些思维题-CF680D/Hamming Code