news 2026/2/28 4:34:00

国际贸易统计pta

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
国际贸易统计pta

相关知识:类,sort cmp我爱你么么哒类的指针(好方法是把它当作一种数据类型)

这里给出N个国家之间进行国际贸易的记录,请你统计这些国家进行国际贸易的收益。

输入格式:

输入第一行给出一个正整数N(≤104),即参与国际贸易的国家数量,则这些国家从1到N编号。随后N行,第i行给出编号为i的国家在贸易中卖出商品的记录,格式如下:kN1​P1​⋯Nk​Pk​,
其中k(0≤k≤20)是买入商品国家的个数,Ni​是买入商品国家的编号,Pi​>0是其买入商品的金额(整数表示,以万元为单位)。注意:一次贸易对于买入和卖出国家的贸易次数都会增加1次。

输出格式:

按照收入金额从高到低的递减顺序输出每个国家的编号和收入金额(整数表示,以万元为单位)。每个国家的信息占一行,两数字间有1个空格。如果收入金额有并列,则按参与国际贸易的次数递减输出;如果还有并列,则按国家编号递增输出。

10 3 2 22 10 58 8 125 5 1 345 3 211 5 233 7 13 8 101 1 7 8800 2 1 1000 2 1000 2 4 250 10 320 6 5 11 9 22 8 33 7 44 10 55 4 2 1 3 8800 2 1 23 2 123 1 8 250 4 2 121 4 516 7 112 9 10
4 1232 10 326 5 326 9 218 6 167 7 -169 3 -211 2 -363 8 -363 1 -1163
#include <bits/stdc++.h> using namespace std; class Country { public: Country() : id(0), income(0), count(0) {} // 默认构造函数 int income = 0, count = 0, id; }; bool cmp(Country &a, Country &b) { if (a.income != b.income) { return a.income > b.income; // 收入从高到低 } else if (a.count != b.count) { return a.count > b.count; // 贸易次数从高到低 } else { return a.id < b.id; // 国家编号从小到大 } } int main() { int N; cin >> N; Country *country = new Country[N + 1]; for (int i = 1; i <= N; i++) { //第i个国家 country[i].id = i; int J;//贸易次数 cin >> J; country[i].count += J; for (int j = 1; j <= J; j++) { int id; cin >> id; //参与交易国家 country[id].count++; int money; cin >> money; country[id].income -= money; country[i].income += money; } } Country *result = country + 1; // 指向数组第二个元素(下标1) sort(result, result + N, cmp); for (int i = 1; i <= N; i++) { cout << country[i].id << " " << country[i].income << endl; } delete[] country;//好习惯 return 0; }

之前定义这样 Country(int i) : id(i), income(0), count(0) {}

创建country的时候但报错了

带参数构造函数更高级不会系统自动默认构造
// 根本原因是你定义了带参数的构造函数,但没有定义默认构造函数,
// 导致在创建对象数组时编译器找不到合适的构造函数。
// 解决方法是添加一个默认构造函数,或者使用其他方式初始化对象。

Country *country=new Country[N+1]; delete[] country;//100年之内0人会懂

MyClass *ptr = &obj;//类指针用法
Country *result=country+1;//因为country是类数组

刚才又去看了几个other代码,觉得这个东西写的越容易理解越好初学阶段嘛,

不同意的罚你们做题只能ac一半

ai终于被我调成了!ta可以正确完成主人的人物了(欣慰

#include <bits/stdc++.h> using namespace std; class Country { public: int id, income, count; Country() : id(0), income(0), count(0) {} }; bool cmp(const Country &a, const Country &b) { if (a.income != b.income) return a.income > b.income; if (a.count != b.count) return a.count > b.count; return a.id < b.id; } int main() { int N; cin >> N; // 注意:这里创建了 N+1 个元素,下标0未使用 vector<Country> country(N + 1); for (int i = 1; i <= N; i++) { // 从1开始,跳过下标0 // 修正:使用小写的 country,而不是大写的 Country country[i].id = i; // 正确写法 int J; cin >> J; country[i].count += J; for (int j = 1; j <= J; j++) { int id, money; cin >> id >> money; // 买方:支出 money,交易次数+1 country[id].income -= money; country[id].count++; // 卖方:收入 money country[i].income += money; } } // 关键修改:只排序实际有效的部分(下标1到N) sort(country.begin() + 1, country.end(), cmp); // 输出排序后的结果(同样只输出下标1到N) for (int i = 1; i <= N; i++) { cout << country[i].id << " " << country[i].income << endl; } return 0; }

最后这个处理或者

// 创建用于排序的 vector,包含 country[1] 到 country[N]
vector<Country> result(country.begin() + 1, country.end());

sort(result.begin(), result.end(), cmp);

// 输出排序后的结果
for (const auto &c : result) {
cout << c.id << " " << c.income << endl;
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/25 1:57:48

TabNine智能代码助手:重新定义编程效率的革命性工具

TabNine智能代码助手&#xff1a;重新定义编程效率的革命性工具 【免费下载链接】TabNine AI Code Completions 项目地址: https://gitcode.com/gh_mirrors/ta/TabNine 还在为重复的编码工作感到疲惫吗&#xff1f;TabNine作为一款革命性的AI代码补全工具&#xff0c;正…

作者头像 李华
网站建设 2026/2/27 7:48:19

从零到上线:ModelScope部署Open-AutoGLM实战全记录(新手必看)

第一章&#xff1a;从零开始认识Open-AutoGLM与ModelScopeOpen-AutoGLM 是一个面向自动化自然语言处理任务的开源框架&#xff0c;致力于降低大模型应用开发门槛。它基于 ModelScope 平台构建&#xff0c;充分利用其模型即服务&#xff08;Model-as-a-Service&#xff09;的能力…

作者头像 李华
网站建设 2026/2/7 13:46:39

Open-AutoGLM手机自动化全流程揭秘:5步实现无人值守操作

第一章&#xff1a;Open-AutoGLM手机自动化概述Open-AutoGLM 是一个基于大语言模型&#xff08;LLM&#xff09;驱动的开源手机自动化框架&#xff0c;旨在通过自然语言指令实现对移动设备的智能控制。该系统结合了视觉识别、动作规划与模型推理能力&#xff0c;使用户能够以接…

作者头像 李华
网站建设 2026/2/26 18:07:09

Open-AutoGLM phone git官网深度解析(99%人不知道的3大核心功能)

第一章&#xff1a;Open-AutoGLM phone git官网项目概述Open-AutoGLM 是一个基于 AutoGLM 架构的开源项目&#xff0c;旨在为移动设备提供轻量化、高性能的自然语言处理能力。该项目通过 GitHub 进行代码托管与社区协作&#xff0c;支持在手机端部署语言模型&#xff0c;实现离…

作者头像 李华
网站建设 2026/2/25 9:06:44

Open-AutoGLM模型移动端部署实战(从零到上线全记录)

第一章&#xff1a;Open-AutoGLM模型移动端部署概述将大型语言模型高效部署至移动设备是实现边缘智能的关键一步。Open-AutoGLM 作为一款开源的轻量化生成语言模型&#xff0c;具备较强的语义理解与文本生成能力&#xff0c;其设计初衷即包含对资源受限环境的支持。在移动端部署…

作者头像 李华
网站建设 2026/2/3 4:11:19

断网无阻:解锁kiss-translator的离线翻译魔法

你是否遇到过这样的窘境&#xff1f;在地铁上打开一篇英文技术文档&#xff0c;却因网络信号差无法翻译&#xff1b;在旅途中浏览外文资讯&#xff0c;却只能对着生涩的文字干着急。别担心&#xff0c;kiss-translator这款开源双语翻译工具&#xff0c;为你准备了三种离线解决方…

作者头像 李华