OJ 74 75 76

发布时间:2026/5/25 23:07:38

OJ 74 75 76 阵转换作者: ZhouMingLiang时间限制: 1s章节: 二维数组问题描述明明是一个很聪明的孩子学什么东西都很快。但是他也有个缺点就是不愿意做重复的劳动往往学会一样东西以后就不太愿意再去碰它。有一天明明在数学课上学了矩阵的转换即有一个r×r的矩阵把矩阵中的数以左上到右下的对角线的方式进行交换然后形成一个新的矩阵。例如有个3×3的矩阵如下1 2 34 5 67 8 9通过以左上到右下的对角线交换后形成了一个新的矩阵1 4 72 5 83 6 9明明很快就学会了然后自己动手做了几个类似的转换。但是课后老师布置了很多矩阵转换的作业让同学回家练习这就使明明很厌烦了觉得自己已经学会了就没有再练习的必要了。于是明明就请你帮个忙帮他写一个程序来计算矩阵的交换帮他完成老师布置的作业。明明的问题可以归结为有一个r×r的矩阵把矩阵中的数以左上到右下的对角线的方式进行转换然后输出转换后的矩阵。输入说明你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据每组测试数据有多行每组测试数据的第一行有一个整数r1≤r≤10表示一个r×r的矩阵接下来有r行每行有r个整数表示要转换的矩阵中的数每个数用一个空格隔开。每组测试数据与其后一组测试数据之间没有任何空行第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。输出说明对于每一组测试数据你写的程序要求计算出一组相应的运算结果并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个转换后的矩阵。每组运算结果形成r行数据每一行的数字之间以一个空格分隔其行首和行尾都没有任何空格每组运算结果与其后一组运算结果之间有一个空行最后一组运算结果后面没有空行。 注通常显示屏为标准输出设备。魔方阵作者: SunCiHai时间限制: 1s章节: 二维数组问题描述在一次数学课上明明的老师讲了一种非常有趣的方阵称之为三阶魔方阵。它是一个三行三列由1、2、3、……8、9九个数字共同构成且它每行、每列、两对角线之和均相等于是一个合法的三阶魔方阵就形成了以下的方阵8 1 63 5 74 9 2富有钻研精神的明明回家后马上就对三阶魔方阵进行研究。他总结出了5条n阶魔方阵的规律(n为奇数)如下1 将“1”放在第一行最上面一行中间一列2 从“2”开始直到n*n为止各数依次按下列规则存放每一个数存放的行的行数比前一个数的行数减1每一个数存放的列的列数比前一个数的列数加1即前一个数的右上方。3 如果上一数的行数为1则下一个数的行数为n指最下面一行4 当上一个数的列数为n时下一个数的列数应为1指最左一列5 如果按上面规则确定的位置上已有数或上一个数是第一行第n列时则把下一个数放在上一个数的下面。有了以上的方法明明就可以轻易地构造出任意的n阶魔方阵。例如构造3阶魔方阵的过程如下先将1放在第一行的中间一列放1参考规则1* 1 ** * ** * *放2参考规则3* 1 ** * ** * 2放3参考规则4* 1 *3 * ** * 2放4参考规则5* 1 *3 * *4 * 2放5参考规则2* 1 *3 5 *4 * 2放6参考规则2* 1 63 5 *4 * 2放7参考规则5* 1 63 5 74 * 2放8参考规则48 1 63 5 74 * 2放9参考规则38 1 63 5 74 9 2但是随着n的不断增大构建一个n阶魔方阵所花的精力就越多。于是明明就请你帮忙帮助他用程序来构建n阶魔方阵。明明的问题可以归结为给你一个阶数n请你按照题目中描述的方法构造出n阶魔方阵。输入说明你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据每组测试数据仅占一行每行仅包括一个正整数n1≤n≤19且n是奇数表示要构造的魔方阵阶数。每组测试数据与其后一组测试数据之间没有任何空行第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。输出说明对于每一组测试数据你写的程序要求计算出一组相应的运算结果并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。输出时每组运算结果为n阶魔方阵。每组运算结果与其后一组运算结果之间有一个空行最后一组运算结果后面没有空行。 注通常显示屏为标准输出设备。#include iostream #include vector using namespace std; int main(){ int n; while(cinn){ vectorvectorint vec(n,vectorint(n,0)); vec[0][n/2]1; int entryin-1,entryjn/21,prei,prej; for(int i2;in*n;i){ if(vec[entryi][entryj]0) vec[entryi][entryj]i; // else { // entryientryi1; // if(entryin) entryi0; // vec[entryi][entryj]i; // } preientryi; prejentryj; entryientryi-1; entryjentryj1; if(entryi-1) entryin-1; if(entryjn) entryj0; if(vec[entryi][entryj]!0){ entryiprei1; entryjprej; if(entryi-1) entryin-1; if(entryjn) entryj0; } } for(int i0;in;i){ for(int j0;jn;j){ if(jn-1) coutvec[i][j]endl; else coutvec[i][j] ; } } coutendl; } }最大效益作者: 朱星垠时间限制: 10s章节: 二维数组问题描述明明的爸爸开了一家小公司公司里有5名职员。今天公司接待了5位客户。明明的爸爸知道和任何一位客户谈判并签下合同都要花一整天的时间而他又希望在一天之内和这5位客户都签好合同。因此明明的爸爸要求公司里的5名职员分别与1位客户谈判。明明的爸爸也知道这5名职员和5位客户的性格各不相同。因此不同的职员与不同的客户谈判会给公司带来不同的经济效益。他现在要做出一个决策让5名职员分别与哪位客户谈判才能让公司今天的总经济效益最大。明明的爸爸首先做了一张5行5列的效益表如下所示1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1在这张效益表中每行代表一名公司职员每列代表一个客户每行中的5个数字就表示了当该行所代表的公司职员和每位客户谈判时所能产生的效益。明明的爸爸就要通过这张效益表来决定哪位职员与哪位顾客谈判然后能够使公司的效益最大。就拿上面这张表来看由于无论哪位职员与哪位客户谈判所产生的效益都是1因此最大的效益就是5。这是最简单的一种情况但是当效益表里的数字变得复杂就很难进行选择到底哪种组合方式才是最优的。因此明明的爸爸求助于你帮助他解决这个问题。明明的爸爸的问题可以归结为给你一张5行5列的效益表表中的数字均为大于等于0的整数要求在这张表中选出5个数字使这5个数字的和最大。注这5个数字分别来自表中的不同行不同列即同一行只能选择一个数字同一列也只能选择一个数字。输入说明你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据。每组测试数据占5行每行包含5个正整数第i行的第j个正整数Aij代表第i名职员与第j位客户谈判能为公司带来的经济效益0≤Aij≤100, 1≤i,j≤5。每组测试数据与其后一组测试数据之间没有任何空行第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。输出说明对于每一组测试数据你写的程序要求计算出一组相应的运算结果并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数s即这一天中公司的最大可能总经济效益。例如当测试数据中的所有Aij1≤i,j≤5均为1时运算结果s应为5。输出时每组运算结果s单独占一行其行首和行尾都没有任何空格或其他任何字符每组运算结果与其后一组运算结果之间没有任何空行或其他任何字符第一组运算结果前面以及最后一组运算结果后面也都没有任何空行或其他任何字符。注通常显示屏为标准输出设备。#include iostream #include vector #include algorithm // 引入 next_permutation 和 max using namespace std; int main() { int profit[5][5]; int n; while(cinn){ // 1. 读取 5x5 的效益表 profit[0][0]n; for (int i 0; i 5; i) { for (int j 0; j 5; j) { if(i0 j0) continue; cin profit[i][j]; } } // 2. 初始化客户的分配顺序0, 1, 2, 3, 4 // 代表职员0接待客户0职员1接待客户1... vectorint assign {0, 1, 2, 3, 4}; int max_profit 0; // 3. 遍历所有的全排列组合 (共 120 种) do { int current_profit 0; // 计算当前这种分配方案的总效益 for (int i 0; i 5; i) { // i 是职员编号assign[i] 是分配给他的客户编号 current_profit profit[i][assign[i]]; } // 更新最大效益 max_profit max(max_profit, current_profit); } while (next_permutation(assign.begin(), assign.end())); // 自动生成下一种排列 // 4. 输出结果 cout max_profit endl; } return 0; }英语翻译In recent years, pre-trained models have played an important role in artificial intelligence research. Researchers typically first train a general model using large-scale datasets and then fine-tune it on specific tasks. In this way, the model can utilize the knowledge learned during the pre-training stage to improve the performance of downstream tasks. For example, in the field of natural language processing, many language models are pre-trained on massive text corpora and achieve excellent results in tasks such as text classification, machine translation, and question answering. The pre-training and fine-tuning framework not only reduces training costs but also improves the generalization ability of models. Therefore, this approach has become an important paradigm in modern artificial intelligence research.近年来预训练模型在人工智能研究中发挥了重要作用。研究人员通常先利用大规模数据集训练通用模型再针对具体任务进行微调。这种方式能让模型充分利用预训练阶段学到的知识从而提升下游任务的表现。例如在自然语言处理领域许多语言模型通过海量文本语料预训练后在文本分类、机器翻译、问答等任务中取得优异效果。这种预训练加微调的框架不仅降低了训练成本还提高了模型的泛化能力因此已成为现代人工智能研究的重要范式。general 通用的fine-tune 微调specific 具体的downstream tasks 下游任务corpora 语料库英语单词

相关新闻