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

牛客周赛90 C题- Tk的构造数组 题解

原题链接

https://ac.nowcoder.com/acm/contest/107500/C

题目描述

在这里插入图片描述

解题思路

数组a是不可以动的,所以我们可以把a[i]*b[i]*i分成两组,分别为a[i]*i以及b[i]
然后策略就很明显了,让更大的b[i]匹配更大的a[i]*i
详细实现见代码。

代码(CPP)

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
#define endl "\n"
const int maxn = 2e5 + 10;
const ll INF = 0x3f3f3f3f3f3f3fLL;
struct Num {ll x;int idx;
} a[maxn];
ll b[maxn], n;
ll ans[maxn];bool cmp(Num &num1, Num &num2) {return num1.x * num1.idx > num2.x * num2.idx;
}void solve() {cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i].x;a[i].idx = i;}for (int i = 1; i <= n; i++) {cin >> b[i];}/*数组a是不可以动的,所以我们可以把a[i]*b[i]*i分成两组,分别为a[i]*i以及b[i],然后策略就很明显了,更大的b[i]匹配更大的a[i]*i*/sort(a + 1, a + n + 1, cmp);sort(b + 1, b + n + 1, greater<int>());for (int i = 1; i <= n; i++) {ans[a[i].idx] = b[i];}for (int i = 1; i <= n; i++) {if (i != 1)cout << " ";cout << ans[i];}
}int main() {
//     freopen("in.txt", "r", stdin);ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout << fixed;cout.precision(18);solve();return 0;
}
http://www.xdnf.cn/news/3821.html

相关文章:

  • STM32智能垃圾桶:四种控制模式实战开发
  • 58认知干货:创业经验分享及企业形式的汇总
  • 【AI面试准备】逻辑思维、严谨性、总结能力、沟通协作、适应力与目标导向
  • 文件一键解密软件工具(支持pdf、word、excel、ppt、rar、zip格式文件)
  • 链接文件及功能安全:英飞凌官方文档摘录 - Tasking链接文件
  • 开上“Python跑的车”——自动驾驶数据可视化的落地之道
  • 使用python写多文件#inlcude
  • Spring AI Advisors API:AI交互的灵活增强利器
  • ES6入门---第三单元 模块三:async、await
  • 网络:TCP三次握手、四次挥手
  • 介词:连接名词与句子其他成分的桥梁
  • 互联网大厂Java面试:从基础到实战
  • 【漫话机器学习系列】239.训练错误率(Training Error Rate)
  • vulkanscenegraph显示倾斜模型(6.4)-多线程下的记录与提交
  • Dalvik虚拟机和ART虚拟机
  • ART 下 Dex 加载流程源码分析 和 通用脱壳点
  • 【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?
  • 学习黑客Linux权限
  • 【中间件】brpc_基础_用户态线程中断
  • LeetCode每日一题5.4
  • 架构思维:利用全量缓存架构构建毫秒级的读服务
  • 2001-2023年 上市公司-企业广告支出数据-社科数据
  • 使用宝塔面板、青龙面板实现定时推送功能
  • 【数据结构】稀疏矩阵的快速转置
  • 单细胞测序数据分析试验设计赏析(二)
  • Android 输入控件事件使用示例
  • 信息系统监理师第二版教材模拟题第一组(含解析)
  • HTML学习笔记(7)
  • PostgreSQL 的 ANALYZE 命令
  • PostgreSQL 查看索引碎片的方法