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

codeforces 1809C

很巧妙的构造
题目链接

题目大意

要求构造长度为 n n n的数组满足以下条件

  • 任意 i i i − 1000 < = a [ i ] < = 1000 -1000<=a[i]<=1000 1000<=a[i]<=1000
  • k k k个和为正数的子串
  • 其余子串和为负数

思路

我们发现与子数组内元素的和有关,所以想到前缀和。
要求和是正的,所以我们想,在左右端点为 i , j i,j i,j的前缀和串中,怎么表示和是正数?
i < j , p r e [ j ] − p r e [ i ] > 0 i<j,pre[j]-pre[i]>0 i<j,pre[j]pre[i]>0
而现在我们需要 k k k个正子串,即找到 k k k对合法的正序对 i , j i,j i,j
我们想到冒泡排序,每次是将一个逆序对反转成正序对,那就先构造一个长为 n + 1 n+1 n+1的逆序数组,再用冒泡处理就行了

ACcode

#include<bits/stdc++.h>using namespace std;#define int long longvoid solve()
{int n,k;cin>>n>>k;vector<int>a(n+3);for(int i=0;i<=n;i++)a[i]=n-i+1;for(int i=0;i<=n;i++){for(int j=i+1;j<=n;j++){if(k>0){k--;swap(a[i],a[j]);}}}for(int i=1;i<=n;i++)cout<<a[i]-a[i-1]<<' ';cout<<'\n';
}signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}
http://www.lryc.cn/news/347004.html

相关文章:

  • Nginx part3 创建一个https的网站
  • 事件高级。
  • Vue从入门到实战Day04
  • Linux学习笔记:信号
  • C#中的隐式类型转换和显式类型转换
  • linux上如何排查JVM内存过高?
  • 第四届上海理工大学程序设计全国挑战赛 J.上学 题解 DFS 容斥
  • word-排版文本基本格式
  • 目标检测YOLO实战应用案例100讲-无监督领域自适应目标检测方法研究与应用(五)
  • 通过python实现Google的精准搜索
  • Nios-II编程入门实验
  • 从0开始学python(七)
  • 【二叉树算法题记录】404. 左叶子之和
  • 面试集中营—Spring篇
  • Lia 原理
  • 文本批量操作技巧:内容查找不再繁琐,自动化批量移动至指定文件夹
  • [数据结构]动画详解单链表
  • 图片批量管理迈入智能新时代:一键输入关键词,自动生成并保存惊艳图片,轻松开启创意之旅!
  • 【硬件模块】ESP-01SWiFi模块基于AT指令详解(WiFi,TCP/IP,MQTT)
  • 数据结构之单单单——链表
  • 【Linux笔记】 基础指令(二)
  • 软件全套资料梳理(需求、开发、实施、运维、安全、测试、交付、认证、评审、投标等)
  • javacv实时解析pcm音频流
  • Matlab|考虑极端天气线路脆弱性的配电网分布式电源和储能优化配置模型
  • 【Python基础】装饰器(3848字)
  • 十、Redis内存回收策略和机制
  • Ansible --- playbook 脚本+inventory 主机清单
  • 【hive】transform脚本
  • 5款可用于LLMs的爬虫工具/方案
  • 投影、选择转SQL语言