当前位置: 首页 > news >正文

打卡信奥刷题(3292)用C++实现信奥题 P8976 「DTOI-4」排列

P8976 「DTOI-4」排列

题目背景

Update on 2023.2.1:新增一组针对 @yuanjiabao 的 Hack 数据,放置于 #21。

Update on 2023.2.2:新增一组针对 @CourtesyWei 和 @bizhidaojiaosha 的 Hack 数据,放置于 #22。


构造一个排列p pp,使得下标为奇数的项之和 ≥ a 且下标为偶数的项之和 ≥ b 。 \small\color{white}{下标为奇数的项之和 \geq a 且下标为偶数的项之和 \geq b。}下标为奇数的项之和a且下标为偶数的项之和b

题目描述

小 L 给你一个偶数n nn和两个整数a , b a, ba,b,请你构造一个长为n nn的排列p pp,使得其满足∑ i = 1 n 2 p i ≥ a \displaystyle\sum_{i = 1}^{\frac{n}{2}} p_i \geq ai=12npia∑ i = n 2 + 1 n p i ≥ b \displaystyle\sum_{i = \frac{n}{2} + 1}^{n} p_i \geq bi=2n+1npib

输入格式

本题有多组测试数据。

第一行,一个整数T TT,表示数据组数。

对于每组数据:

一行,三个整数n , a , b n, a, bn,a,b

输出格式

对于每组数据,如果无解,输出− 1 -11;否则,输出一行,n nn个整数,表示你构造出的排列p pp

如有多解,输出任意一组均可。

输入输出样例 #1

输入 #1

2 6 6 12 6 8 14

输出 #1

1 6 2 5 3 4 -1

说明/提示

本题开启 Special Judge。

Subtask \textbf{Subtask}Subtaskn nna , b a, ba,b分值
1 112 ≤ n ≤ 10 2 \leq n \leq 102n10无特殊限制20 pts ⁡ 20 \operatorname{pts}20pts
2 22无特殊限制a = b = 0 a = b = 0a=b=010 pts ⁡ 10 \operatorname{pts}10pts
3 33同上a = 0 a = 0a=0b = 0 b = 0b=010 pts ⁡ 10 \operatorname{pts}10pts
4 44同上无特殊限制60 pts ⁡ 60 \operatorname{pts}60pts

对于100 % 100\%100%的数据,2 ≤ n , ∑ n ≤ 10 5 2 \leq n, \sum n \leq 10^52n,n1050 ≤ a , b ≤ n ( n + 1 ) 2 0 \leq a, b \leq \frac{n(n + 1)}{2}0a,b2n(n+1)1 ≤ T ≤ 10 1 \leq T \leq 101T10n nn偶数

C++实现

#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1e5+5;intt;signedmain(){intt;cin>>t;while(t--){intn,a,b;cin>>n>>a>>b;intsum=(1+n/2)*n/4;if(sum>=a){//a选择1~n/2if((1+n)*n/2-sum<b)printf("-1\n");else{for(inti=1;i<=n;i++)printf("%d ",i);printf("\n");}continue;}intmovnum=(a-sum)/(n/2);//增加n/2的次数if(movnum>n/2||(movnum==n/2&&(a-sum)%(n/2))){//总操作次数不能大于n/2printf("-1\n");continue;}boolvis[N]={};//标记哪些数属于前半部分intsuma=0;for(inti=1;i<(n/2)-movnum;i++)suma+=i,vis[i]=1;suma+=(n/2)-movnum+(a-sum)%(n/2);vis[(n/2)-movnum+(a-sum)%(n/2)]=1;for(inti=(n/2)-movnum+1;i<=n/2;i++)suma+=i+n/2,vis[i+n/2]=1;if((1+n)*n/2-suma<b)printf("-1\n");else{for(inti=1;i<=n;i++)if(vis[i])printf("%d ",i);for(inti=1;i<=n;i++)if(!vis[i])printf("%d ",i);printf("\n");}}return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/867319/

相关文章:

  • FlashAttention 深度解读:让大模型注意力机制“一口气算完“
  • 企业内多个 AI 应用项目如何通过 Taotoken 实现统一的 API Key 管理与审计
  • B-H 曲线 vs B-P 曲线|磁芯材料两大核心曲线详解
  • 零经验想投运营?3分钟AI生成高匹配简历,告别海投无效!
  • 技术人的黄金十年:软件测试从业者25到35岁每一年该怎么规划?
  • Sunshine游戏串流服务器:5步搭建你的私人云游戏天堂
  • 2026年5月最新牡丹江绥芬河黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 诚信金利回收
  • NVIDIA-JetSonAGX-Thor系统安装-Ubuntu24.04(五)无人机导航开发环境配置
  • 【论文阅读】ManiFlow: A General Robot Manipulation Policy via Consistency Flow Training
  • 2026年5月最新牡丹江西安黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 诚信金利回收
  • 9大网盘直链解析:免费高效的完整下载解决方案
  • 3分钟快速上手:Windows上Hadoop开发环境的终极解决方案指南
  • 实测:JD匹配度从50%到90%,面试邀约直接翻倍,我才发现简历写错了10年!
  • 别再盯着大厂了,这3类“隐形冠军”公司才是技术人的归宿
  • Anthropic CEO最新专访:Claude新功能几乎完全由AI自主开发,软件将步入免费时代
  • 【成都信息工程大学、澳门城市大学、四川工商学院和新加坡城市科学出版社《国际化教育科学与理论》期刊联合主办| 最快刊后1个月内上知网谷歌】第十届教育管理与社会科学国际学术会议(ISEMSS 2026)
  • 2026年5月最新葫芦岛南票黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 五金回收
  • 神作《盲视》,最硬核的反人类科幻,二十年前预言了AI的冰冷本质
  • 实力入选丨全知科技荣登嘶吼2026网络安全产业图谱
  • 软件测试职业天花板真相:不是岗位不行,是你没找对方向
  • 10分钟快速搭建微信小程序商城:海风小店完整开源方案指南
  • 网盘直链解析工具:多平台文件下载的实用解决方案
  • 打卡信奥刷题(3293)用C++实现信奥题 P9002 [RC-07] 心跳
  • Reset Windows Update Tool:彻底解决Windows更新卡顿与失败的终极修复指南
  • 我见过最聪明的技术人,都在偷偷培养这3种“非技术能力”
  • 2026年5月最新葫芦岛绥中黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 五金回收
  • 6G通信中STAR-RIS与RSMA的鲁棒波束成形设计
  • CANN HCCL-COMM 通信拓扑感知:16卡训练时为什么 rank3 总是最慢的那张
  • 三步解锁全网盘极速下载:免登录直链解析完整教程
  • 2026年5月最新葫芦岛兴城黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 五金回收