尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

#题解#牛客:牛牛的构造#DP#构造#

#题解#牛客:牛牛的构造#DP#构造#
📅 发布时间:2026/6/19 10:32:02

传送门

分析

1.容易发现的一件事,当n,n-1,n-2......2,1排列时是满足条件的(i,j)对最多的n排列

2.我们用递推的想法求每一个n的最大(i,j)对数ans[n]

ans[0] = 0;int pre = 0;int x = 0;for (int i = 1; i <= n; i++){for (; i - (1 << x) > 0; x++)pre++;ans[i] = ans[i - 1] + pre;
  1. 容易发现的另一件事,若某段单调递增,那么这段内没有符合要求的 ( i , j ) 对。

更一般地:若a[i+1]是[1,i+1]的最大前缀值,那么任意 ( j , i + 1 )不符合要求(j<i+1)

  1. 根据3. 我们有了以下的构造想法

若k恰好是某个ans[i],那么前i个数是i,i-1,i-2,.......,2,1,后面的数是i+1,i+2,.......,n-1,n即可

若k夹在ans[i-1]与ans[i]之间,那么后n-i个数是i+1,i+2,.......,n-1,n。前i个数则是在i-1,i-2,......,3,2,1中挑选一个合适的位置插入i即可。

  1. 考虑如何选择插入位置:设t=k-ans[i-1] , top=log2(i).

容易证明只需将 i 插入到i-2^(top-t+1)的前面一个数即可。

代码实现

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int ans[N];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n, k;cin >> n >> k;bool flag = 1;ans[0] = 0;int pre = 0;int x = 0;for (int i = 1; i <= n; i++){for (; i - (1 << x) > 0; x++)pre++;ans[i] = ans[i - 1] + pre;if (ans[i] == k ){flag = 0;for (int j = i; j >= 1; j--)cout << j << " ";for (int j = i + 1; j <= n; j++)cout << j << " ";break;}else if (ans[i] > k && ans[i - 1] < k){flag = 0;int t = k - ans[i - 1] - 1;int zhishu = log2(i);t = zhishu - t;t = (1 << t);t = i - t ;for (int j = i - 1; j >= 1; j--){if (j == t )cout << i << " " << j << " ";elsecout << j << " ";}for (int j = i + 1; j <= n; j++)cout << j << " ";break;}}if (flag)cout << -1;return 0;
}

相关新闻

  • 2025/11/12
  • 【深度学习计算机视觉】13:实战Kaggle比赛:图像分类 (CIFAR-10) - 指南
  • 碎碎念(二四)

最新新闻

  • C# 读写INI文件:从编码乱码到跨平台兼容的实战指南
  • 3大技术突破:PaddleOCR如何用AI重塑文档数字化工作流
  • Navicat Mac版终极重置指南:三步实现无限免费试用
  • Anime.js路径动画终极指南:让元素沿着任意轨迹流畅运动
  • BreezySLAM与ROS集成实战:打造完整的机器人SLAM系统
  • 从74LS到74HC:经典逻辑器件系列演进与应用选型指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号