D. The Strongest Build(STL、思维)

2023-12-13 01:30
文章标签 build 思维 stl strongest

本文主要是介绍D. The Strongest Build(STL、思维),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传送门
在这里插入图片描述
Examples
input
3
3 1 2 3
2 1 5
3 2 4 6
2
3 2 3
3 2 2
output
2 2 3
input
3
3 1 2 3
2 1 5
3 2 4 6
2
3 2 3
2 2 3
output
1 2 3
input
3
3 1 2 3
2 1 5
3 2 4 6
2
3 2 3
2 2 3
output
3 2 2
input
4
1 10
1 4
1 7
1 3
0
output
1 1 1 1
大致翻译:在这里插入图片描述

大致题意:给定数组个数n,输出每组数据的个数和具体数据(从小到大排列)给m组不同的组合情况,使得在之后求解中这m个组合被限制,求未被限制的最大的组合情况,并输出此组合;
思路:(我不会……问学长的……)先看最大的情况有没有被限制若无则直接输出,若被限制则在限制的几种组合情况中退一个位置寻找最大的组合情况并输出;
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
int n,m,maxx,num[N]/*每组数据个数*/,sum[N];/*数据的总和*/ 
vector<int>a[N]/*具体数据*/,lim[N];/*限制数据*/ 
map<vector<int>,int>mp;void MAX(){vector<int>b;for(int i=0;i<n;i++)b.push_back(num[i]-1);if(mp.find(b)!=mp.end())return ;for(auto it:b)cout<<it+1<<' ';exit(0);
}
void find(vector<int>b,int sum){//除了限制之外的找最大for(int i=0;i<n;i++){b[i]--;//退一个位置 if(mp.find(b)==mp.end()&&b[i]>=0)maxx=max(maxx,sum-a[i][b[i]+1]+a[i][b[i]]);b[i]++;	} 
}
void scan(vector<int>b,int sum){for(int i=0;i<n;i++){b[i]--;if(mp.find(b)==mp.end()&&b[i]>=0&&maxx==sum-a[i][b[i]+1]+a[i][b[i]]){for(auto it:b)cout<<it+1<<' ';exit(0);}b[i]++;} 
}int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=0;i<n;i++){cin>>num[i];for(int j=0;j<num[i];j++){int x;cin>>x;a[i].push_back(x);}}cin>>m;for(int i=0;i<m;i++){for(int j=0;j<n;j++){int x;cin>>x;x--;lim[i].push_back(x);sum[i]+=a[j][x];}mp[lim[i]]++;}MAX();//找最大,若最大存在则说明在最大中某一位退一个位置为最大 for(int i=0;i<m;i++)find(lim[i],sum[i]);for(int i=0;i<m;i++)scan(lim[i],sum[i]);return 0;
}

这篇关于D. The Strongest Build(STL、思维)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/486678

相关文章

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

C++ STL 适配器

系列文章目录 模板特例化,偏特化,左右值引用 https://blog.csdn.net/surfaceyan/article/details/126794013 C++ STL 关联容器 https://blog.csdn.net/surfaceyan/article/details/127414434 C++ STL 序列式容器(二) https://blog.csdn.net/surfac

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论,强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作,敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析,探讨系统变化对敏捷开发的影响、业务与技术的对齐以及敏捷方法如何在产品开发过程中处理持续变化和迭代。 系统变化对敏捷软件开发的影响 在敏捷软件开发中,系统变化的管理至关重要。系统变化可以是需求的改变、技术的升级、

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题 GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。 最近通过flutter build web,通过发布到GitHu

STL set整理

#include<set>#include<cstdio>#include<iterator>#include<iostream>#include<algorithm>using namespace std;//set 集合的操作//multisetset<int>Set1;set<int>Set2;set<int>Set3;/*begin() 返回指向第一个元素的迭代器

【C++STL(十四)】一个哈希桶简单模拟实现unordered_map/set

目录 前言 一、改造哈希桶 改造结点类 改造主体  模板参数改造  迭代器(重点) 改造完整哈希桶 unordered_map模拟实现 unordered_set模拟实现 前言 前面的文章都有说unordered_map/set的底层结构就是哈希表,严格来说是哈希桶,那么接下来我们就尝试使用同一个哈希桶来模拟实现一下。整体的逻辑和一棵红黑树封装map/set类似,所以

STL学习之零散记录(不断更新中)

我用到什么就写什么,所以不是太注重排版,等写多了以后再整理: 1:vector<int> V,V.pop_back()弹出最后一个元素 2:优先级队列不能设置迭代器,因为没有 3:   #include <bitset> //位运算 string str2(str,0,8);//将str字符串数组截取0~7号元素,string自带的功能bitset<8>