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

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

传送门

分析

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;
}
http://www.rkmt.cn/news/47758.html

相关文章:

  • 2025/11/12
  • 【深度学习计算机视觉】13:实战Kaggle比赛:图像分类 (CIFAR-10) - 指南
  • 碎碎念(二四)
  • 如何完成一个简单的rust WebAssembly调用
  • 【Nano Banana超详细教程】AI绘图神器Gemini 2.5实测:一键生成神图!
  • Ubuntu设置中文智能拼音输入法
  • 200粉粉福
  • SAP屏幕增强自定义界面字段使用自定义搜索帮助方法
  • 牛B, 我去,新手小白也能使用InfiniteTalk搭建属于自己的数字人啦 ,真的太简单啦!!!
  • 植物大战僵尸2下载教程:延续经典塔防,体验全新时空冒险
  • 阳江西林瓶灌装加塞机:多品牌如何选?看这几点
  • CF125E MST Company
  • JavaWeb05-Web基础
  • Git分支合并
  • 西林瓶灌装机质
  • Cortex-M3 内核 MCU-STM32F1 构建之路:(一)单片机 MCU 的构成,包括 FLASH 和 SRAM 的区别,以及引脚类型
  • P14480 化作彗星 题解
  • PG系列:Select查询一样会被阻塞
  • 制作自己的最小操作系统
  • .NET 10性能突破:持续优化才是质变关键
  • 植物大战僵尸经典版下载教程:重新体验最纯粹的塔防乐趣
  • 5 CSRF 攻击防范
  • 11.12记录-机器学习
  • 个人工作版(Linux)
  • 2025年耙式真空干燥机优质厂家权威推荐榜单:耙式干燥机/ZB系列耙式真空干燥机/真空耙式干燥机源头厂家精选
  • 习题解析之:输出 n 以内的所有素数
  • 2025年重庆吊装搬运公司权威推荐榜单:工厂搬迁/搬运/搬运设备源头公司精选
  • 新手入门常用的Dos命令
  • 到底是用vue2还是vue3好?
  • 避免在C#循环中使用await 改用WhenAll - 尼古拉