PAT甲级 1056 Mice and Rice

原题链接:

https://pintia.cn/problem-sets/994805342720868352/exam/problems/type/7?problemSetProblemId=994805419468242944&page=0

代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

#define endl '\n'

const int N = 1e5;

int Np, Ng;
int w[N];//记录每只老鼠的重量
int r[N];//记录每只老鼠的淘汰轮次
queue<int> q;//记录比赛的顺序
vector<pair<int, int> > v;//<编号,r[编号]>
int ans[N];

queue<int> tQ;
int lastMatch = 0;
void match(int round) {
	int matchCnt = q.size() / Ng;//当前回合比赛次数
	if (q.size() % Ng)
		matchCnt++;
	for (int i = 0; i < matchCnt; i++) {
		int winner=0, winnerWeight=0;
		int x = 0;
		while (q.size()&&x<Ng) {
			int nowMouse = q.front();
			if (w[nowMouse] >= winnerWeight) {
				winner = nowMouse;
				winnerWeight = w[nowMouse];
			}
			r[nowMouse] = round;
			q.pop();
			x++;
		}
		r[winner]++;
		lastMatch = r[winner];
		tQ.push(winner);
	}
}

bool cmp(pair<int, int>& a, pair<int, int>& b) {
	return a.second > b.second;
}

signed main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

	cin >> Np >> Ng;
	for (int i = 0; i < Np; i++) {
		cin >> w[i];
	}
	for (int i = 0; i < Np; i++) {
		int temp;
		cin >> temp;
		q.push(temp);
	}

	int record = 1;
	while (q.size() != 1) {
		while (tQ.size()) {
			tQ.pop();
		}
		match(record);
		record++;
		q = tQ;
	}

	for (int i = 0; i < Np; i++) {
		v.push_back({ i, r[i] });
	}

	sort(v.begin(), v.end(), cmp);
	for (int i = 0; i < Np; i++) {
		if (i == 0) {
			ans[v[0].first] = 1;
			continue;
		}
		if (v[i].second == v[i - 1].second) {
			ans[v[i].first] = ans[v[i - 1].first];
		}
		else {
			ans[v[i].first] = i + 1;
		}
	}
	for (int i = 0; i < Np; i++) {
		if (i != 0) {
			cout << " ";
		}
		cout << ans[i];
	}

	return 0;
}

内容概要:本文主要介绍了向量与矩阵范数的基本概念、性质及其相互关系。首先定义了向量范数应满足的三个基本条件:非负性、齐次性和三角不等式,并列举了常见的向量p-范数(如1-范数、2-范数和无穷范数),以及Holder不等式与Minkowski不等式在范数理论中的应用。接着引入范数等价的概念,说明不同范数之间可通过常数因子相互界定。文章进一步扩展到矩阵范数,介绍了矩阵范数需满足的四条性质,包括与向量范数相容的条件,并重点讲解了Frobenius范数(F-范数)、诱导范数(如1-范数、∞-范数)和谱范数的计算方法。此外,还涉及矩阵的谱半径及其与矩阵范数的关系,指出对于正规矩阵,其谱范数等于其最大奇异值或谱半径。; 适合人群:具备线性代数基础的数学、计算机、工程等相关专业本科生或研究生;正在学习数值分析、矩阵论或机器学习理论的学习者;需要理解优化算法中范数作用的研发人员; 使用场景及目标:①掌握向量与矩阵范数的定义与基本性质,用于理论推导与算法设计;②理解不同范数之间的等价性与应用场景,如正则化、误差分析等;③为后续学习矩阵分析、数值计算、机器学习模型训练中的收敛性分析打下基础; 阅读建议:本文公式密集且部分内容存在排版错乱,建议结合标准教材对照学习,重点关注范数的定义、典型例子的计算过程(如矩阵的各种范数求解)以及谱半径与范数的关系,动手推导关键不等式并辅以具体数值例子加深理解。
先看效果: https://pan.quark.cn/s/fd9cffae3375 ArgusLog 介绍 ArgusLog 是一款基于 SpringBoot 与 WebSocket 技术构建的轻量级接口监测与诊断工具,专为 Web 端命令行环境设计。 其主要特点包括:\ 全方位接口监测:支持对单接口或批量接口进行监测,全面覆盖请求参数、返回结果、响应耗时、异常信息及调用链追踪等关键维度。 \ 深度运行时诊断:集成多项高级诊断功能,包括:\ (1).Spring 容器 Bean 检索:支持动态查询、验证容器中 Bean 的定义、依赖关系及属性配置,快速定位依赖注入或配置加载异常\ (2)Jad 字节码反编译:可实时查看部署环境中任意类的反编译源码,辅助分析第三方库行为、动态代理逻辑或线上源码不一致问题。 \ (3)受限热部署:支持在不重启服务的情况下动态更新特定方法逻辑或配置类,提升开发调试与线上应急处理效率。 \ (4)高可扩展性与集成能力:支持用户自定义命令以适配不同项目需求,并能与企业现有用户体系无缝对接。 \ 安全与合规保障:通过自定义 Token 与有效期管理机制,确保操作安全性与审计合规性。 功能介绍 接口监控 可使用 monitor [参数] 命令 监听指定接口参数 可使用 remove [参数] 命令移除监听的接口 可使用 ls -m 命令查看当前监听的接口列表 可监控的接口参数: param: 前端参数\ methodParam: 后端方法参数\ result: 接口返回结果\ time: 接口耗时\ header: 请求头\ ip: 请求ip\ url: 请求url\ api: 接口路径\ type: 方法全限定名\ method: 请求方式 接口追...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值