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

长乐一中 CSP-S 2025 提高级模拟赛 Day2

中午午休没去然后下午翘了一节英语一节数学课打比赛,预估是 \(100+20+30+10=160\) 的结果挂到 \(80+0+10+0=90\),T1 数据范围 \(n \le 5000\) 看成 \(n \le 1000\) 结果数组开小,100pts -> 80pts,我是 /bangbangt

A. 大佬排队

首先可以从最矮的那个人开始考虑,队列里面还没放人,第一个人的左边有 \(a_1\) 个人比自己高,所以就要留出 \(a_1\) 个空位给这些高人站,然后自己站到 \(a_1+1\) 个位置上。

然后对于第 \(i(i>1)\) 矮的人,就不用考虑前面的人了(因为前面的人都比自己矮),前面要留出 \(a_i\) 个空位给高人站,自己站到 \(a_i+1\) 个空位上。

然后就得到了一个 \(O(n^2)\) 的做法:对于每一个人 \(a_i\),枚举队列的第 \(a_i+1\) 个空位然后把这个人丢进去。最后输出这个队列即可。

赛时数组开小喜提暴力分,糖丸了

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=5007;
int n,h[N],a[N];
inline bool check()
{for(int i=1;i<=n;i++){int cnt=0;for(int j=1;j<i;j++) if(h[j]>h[i]) cnt++;if(cnt!=a[h[i]]) return 0;}return 1;
}
inline void brute()
{for(int i=1;i<=n;i++) h[i]=i;do{if(check()){for(int i=1;i<=n;i++) cout<<h[i]<<' ';return;}}while(next_permutation(h+1,h+n+1));
}
inline void ac100()
{for(int i=1;i<=n;i++){for(int j=1,cnt=0;j<=n;j++){if(h[j]==0) cnt++;if(cnt==a[i]+1){h[j]=i;break;}}}for(int i=1;i<=n;i++) cout<<h[i]<<' ';
}
int main()
{freopen("line.in","r",stdin);freopen("line.out","w",stdout);cin>>n;for(int i=1;i<=n;i++) cin>>a[i];ac100();return 0;
}
http://www.hskmm.com/?act=detail&tid=1178

相关文章:

  • 费用流
  • [豪の学习笔记] 软考中级备考 基础复习#6
  • RAG
  • 手撕深度学习:矩阵求导链式法则与矩阵乘法反向传播公式,深度学习进阶必备!
  • CF *3200
  • 分享我在阿贝云使用免费虚拟主机的真实体验!
  • 软件测试工程师的职业天花板在哪里?如何突破?
  • 02020213 .NET Core重难点知识13-配置日志邮件服务案例、DI读取、DI与扩展方法、VS配置项目环境变量
  • GJOI 模拟赛题记录声明
  • Ubuntu 卸载 Firefox 浏览器
  • 录无法修改OneDrive文件的解决方法
  • 量子机器学习入门:三种数据编码方法对比与应用
  • 向量数据库
  • UGNX2506下载和安装教程包含激活教程步骤(超详细保姆级图文UGNX安装步骤)
  • ansible剧本
  • 2111111
  • Ubuntu 安装 Google Chrome
  • Cannot call Open vSwitch: ovsdb-server.service is not running
  • uniapp插件开发
  • 【模板】平面最近点对
  • npx playwright install chromium 安装失败,如何离线安装
  • Power BI制作指标达成跟踪器
  • 一个基于 .NET 开源、轻便的 Windows 优化工具,适用于 Win7 - Win11 最新版的优化!
  • 两种求快速幂的方法
  • 杂题20250909-
  • LLM2
  • 第01周 预习、实验与作业:绪论与Java基本语法
  • 第一周作业1
  • NSSCTF强网杯GameMaster
  • ARC199 做题记