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

CF2065D Skibidus and Sigma

参考代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2e5 + 10,inf = 0x3f3f3f3f;
struct node{ll sum,id;
};
node t[N];
vector<ll> a[N];
ll n,m;
bool cmp(node x,node y){if(x.sum != y.sum) return x.sum > y.sum; //该行总和大的优先 for(int i = 0; i < m; i++) //否则比较x行和y行的字典序大的优先 if(a[x.id][i] != a[y.id][i]) return a[x.id][i] > a[y.id][i];return 0;
}
void solve()
{cin >> n >> m;for(int i = 1; i <= n; i++) a[i].clear(),t[i] = {0,i};//t[i].sum:第i个数组的总和 for(int i = 1; i <= n; i++){ll sum = 0; //计算第i行的总和 for(int j = 1; j <= m; j++){ll x; cin >> x;a[i].push_back(x);sum += x;}t[i].sum = sum; //设置第i行的总和 
    }sort(t + 1,t + 1 + n,cmp); //按每一行的总和进行排序,这样就能知道最大总和是第几行 ll ans = 0,sum = 0;for(int i = 1; i <= n; i++){ll id = t[i].id; //排序后,id行就是当前最大总和的行 for(int j = 0; j < m; j++){sum += a[id][j]; //sum计算前缀和 ans += sum; //ans根据题意要把每一个前缀和累加起来 //cout << sum << " " << ans << endl; //记得多输出数据检验是否正确 
        }}cout << ans << endl;
}
int main()
{int T; cin >> T;while(T--){solve();}return 0;
}

 

http://www.hskmm.com/?act=detail&tid=19276

相关文章:

  • 微信二次开发个人号api
  • 课后作业2(动手动脑,课后实验性问题)
  • 从零开始构建图注意力网络:GAT算法原理与数值实现详解
  • 关于Leetcode 812题的简单思考
  • Laravel5.8 利用 snappyPDF 生成PDF文件
  • 25秋周总结4
  • Python 潮流周刊#121:工程师如何做出高效决策?
  • 饥荒联机版
  • iSCSI网络存储——基于VM17下麒麟V10SP1与SP2的共享配置
  • 微信二次开发文档
  • CSP-S1 2025
  • 金币
  • 课后作业2
  • 加密货币技术革命:揭秘数字复兴时代
  • 详细介绍:CTFshow系列——PHP特性Web113-115(123)
  • 第六篇
  • 6378:删除数组中的元素(链表)
  • DiffDock 环境安装和启用教程
  • [题解]P11533 [NOISG 2023 Finals] Topical
  • day20_修改 删除功能
  • [题解]P10231 [COCI 2023/2024 #4] Putovanje
  • # Windows CMD 基本指令参考手册
  • P13019 [GESP202506 八级] 树上旅行
  • 完整教程:负载均衡式的在线OJ项目编写(二)
  • Java语法基础课程动手动脑及课后实验问题整理文档
  • 安装包制作流程-final
  • 让YOLO飞起来:从CPU到GPU的配置指南
  • 记录这辈子见到的第一道从上到下的树上倍增
  • 06.容器存储 - 教程
  • 1748:约瑟夫问题