首页 > 游游的排列构造
头像 丨阿伟丨
发表于 2025-08-28 15:33:09
题目链接 游游的排列构造 题目描述 给定整数 和 ,需要构造一个长度为 的排列(包含 到 每个整数恰好一次),使得该排列中恰好有 个“好元素”,并且任意两个好元素都不相邻。 一个元素被称为“好元素”,如果它是其所在前缀的最大值。 解题思路 这是一个构造题,我们需要找到一种系统性的方法来构建 展开全文
头像 给我中奖吧
发表于 2025-05-29 11:31:45
n, k = map(int, input().split()) # 生成好元素的位置(1-based的pos列表) pos = [2 * i + 1 for i in range(k)] # 检查位置是否超过n,这里假设输入是有效的,即2k-1 <=n # 生成好元素的数值,从n-k+1 展开全文
头像 rpcwx
发表于 2026-02-22 13:33:03
#include <iostream> using namespace std; #include<vector> #include<algorithm> int main(){ int n,k; cin>>n>>k; int c=0; 展开全文
头像 Xiettt
发表于 2026-03-06 23:37:49
#include<bits/stdc++.h> using namespace std; using ll=long long; using ull=unsigned long long; using i128=__int128_t; using u128=__uint128_t; u 展开全文
头像 我是芭芭拉的狗
发表于 2026-01-05 22:35:40
n, k = map(int,input().split()) if n == 1: print('1') exit() t = n - k + 1 w = t - 1 for _ in range(k): if t != 0: print(t,end=' ' 展开全文
头像 BraveCoder
发表于 2025-10-21 11:13:02
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n 展开全文
头像 乌鸦944
发表于 2026-02-12 21:53:16
/* 题目中要求我们构造一种方案满足恰好有k个好元素,其实不难发现如果我们从第k大的数作为第一个好元素开始往后填,但是题目要求我们好元素不相邻,那怎么保证不相邻呢? 隔着填呗,于是就有了这样一种构造方案: 定义好元素 p1 = n - k + 1 正常元素p1 = 1两者挨个填就行,只不过这里要防止 展开全文
头像 小海胆胆
发表于 2026-03-10 16:38:22
游游的排列构造 思路 这题要我们构造一个长度为 n 的排列,使得恰好有 k 个"好元素"(即前缀最大值),而且任意两个好元素不能相邻。 先想想好元素的性质:好元素就是从左往右扫的时候,每次遇到一个比之前所有值都大的位置。第一个位置一定是好元素(它自己就是前缀最大值)。 那怎么让好 展开全文
头像 扎男_
发表于 2025-05-28 20:42:22
//活动地址: 牛客春招刷题训练营 - 编程打卡活动 #include <iostream> using namespace std; int main() { int n,k; cin>>n>>k; // 先考虑特殊情况 if(n== 展开全文
头像 ZYCwuque
发表于 2026-03-09 23:08:59
这题要求好数字不能相邻,我选择把最大的那k个数作为好数字,并且在它们之间插入小于这些好数字的数,我选择从n-(k-1)-1开始向下遍历,把这里的数字插入好数字之间最后在n-2*k至1之间遍历,把剩下的全部插进去 import java.util.ArrayList; import java.ut 展开全文

等你来战

查看全部