CF1978C-rk1300-1.5h
一道构造题,我的做法似乎思维复杂度上远高于答案的做法,因而不是什么好做法,但幸好我最后还是调出来了,另外就是会爆ll...下意识写int的我根本想不起来用ll啊,看来不得不define int long long了
Code
#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <algorithm>#include <cmath>#include <vector>#include <map>#include <set>#include <queue>#include <stack>#include <list>#define int long longusing namespace std; int n,m,k,fk; void change(int rest_k,int pos){ if(pos>n/2&&rest_k>0) { cout<<"NO"<<endl; return; } if(rest_k-(n-pos-(pos-1))>0)change(rest_k-(n-pos-(pos-1)),pos+1); else { //int p=1,ans=0; cout<<"YES"<<endl; if(rest_k>=1) { rest_k+=pos-1; for(int i=pos+1;i<=pos+1+rest_k-1;i++) cout<<i<<' ';//,ans+=abs(i-p),p++; cout<<pos<<' ';//,ans+=abs(pos-p),p++; for(int i=pos+1+rest_k;i<=n;i++) cout<<i<<' ';//,ans+=abs(i-p),p++; } else { for(int i=pos;i<=n;i++) cout<<i<<' ';//,ans+=abs(i-p),p++; } for(int i=pos-1;i>=1;i--) cout<<i<<' ';//,ans+=abs(i-p),p++; cout<<endl;//cout<<ans<<endl;if(ans!=fk)cout<<"error"<<endl; }} void solution(){ cin>>n>>k; if(k%2==1)cout<<"NO"<<endl; else { fk=k; k/=2; change(k,1); }} signed main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T; cin>>T; while(T--) solution(); return 0;}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」