题意

给定n个从小到大的数组,从每个数组中选出一个下标构成一个序列,但是有m种序列被ban了,要求选出的序列对应的数字和最大且没有被ban。

思路

因为有m个序列被ban了,那么最坏的情况可以假设为最大的m个序列被ban了,那么要求的序列就是第m+1大的序列,优先队列+bfs求前m+1大的序列就好了,在求的中途碰到没有被ban的序列直接退出输出即可。查询一个序列是否被ban用hash的思想,用map+vector的方式查询一个序列是否被ban。还是不好懂的看代码比较清晰=3=.

代码

#include<bits/stdc++.h>
using namespace std;
int n;
int a[13][200005];
int c[13];
typedef pair<int,vector<int> > prefix;//first存储该序列的和,vector存储序列
struct cmp//优先队列用
{bool operator()(const prefix p1,const prefix p2){return p1.first<p2.first;}
};priority_queue<prefix,vector<prefix>,cmp >q;//大根堆优先队列存储序列map<vector<int>,bool>mp;//查询一个序列是否被ban,mp[v]=1,则v这个序列被ban了
pair<int,vector<int> >ans;//存储答案,int为答案的和大小,vector存储答案序列
map<vector<int>,bool>mp2;//bfs中途判断这个序列有没有走过,比如222 可以由322,232,223走到,相当于一般bfs的vis数组
void bfs()//bfs+优先队列求没被ban的最大的序列
{while(q.size()){ans=q.top();//先给ans赋值当前优先队列中最大的序列q.pop();mp2[ans.second]=1;//这个序列被走过if(!mp[ans.second])//如果这个序列没被ban则退出break;for(int i=1;i<=n;i++)//bfs每个走一步能变成的序列{int sum=ans.first;//存储当前序列和vector<int>v=ans.second;//存储当前序列if(v[i-1]>1)//如果当前序列第i个大于1说明还可以-1,那么对他进行-1加入队列操作{sum-=(a[i][v[i-1]]-a[i][v[i-1]-1]);//更新和v[i-1]--;//第i个-1pair<int,vector<int> >tmp;tmp.first=sum;tmp.second=v;if(!mp2[tmp.second])//判断这个序列有没有走过{q.push(tmp);mp2[tmp.second]=1;}}}}
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)//输入n个数组{scanf("%d",&c[i]);for(int j=1;j<=c[i];j++){scanf("%d",&a[i][j]);}}int m;scanf("%d",&m);for(int i=1;i<=m;i++)//输入m个被ban的序列{vector<int>v;for(int j=1;j<=n;j++){int t;scanf("%d",&t);v.push_back(t);}mp[v]=1;}//给ans赋值当前最大的序列并加入优先队列ans.first=0;vector<int>v1;for(int i=1;i<=n;i++){v1.push_back(c[i]);ans.first+=a[i][c[i]];}ans.second=v1;q.push(ans);bfs();//bfs求最大的没被ban的序列vector<int>v2;v2=ans.second;for(int i=0;i<n;i++)//输出答案{printf("%d ",v2[i]);}printf("\n");return 0;
}

1574D The Strongest Build (Educational Codeforces Round 114 (Rated for Div. 2))相关推荐

  1. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  2. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  3. Educational Codeforces Round 114 (Rated for Div. 2) 个人题解

    中秋节快乐! A. Regular Bracket Sequences 题意 输出nnn个不同的长度为2n2n2n的合法括号序列. 分析 先输出一个"()()()-"序列. 然后依 ...

  4. Multidimensional Queries(二进制枚举+线段树+Educational Codeforces Round 56 (Rated for Div. 2))...

    题目链接: https://codeforces.com/contest/1093/problem/G 题目: 题意: 在k维空间中有n个点,每次给你两种操作,一种是将某一个点的坐标改为另一个坐标,一 ...

  5. Educational Codeforces Round 114 (Rated for Div. 2)C. Slay the Dragon

    题目链接:Problem - 1574C - Codeforces Recently, Petya learned about a new game "Slay the Dragon&quo ...

  6. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  7. Educational Codeforces Round 88 (Rated for Div. 2) E(数学)

    Educational Codeforces Round 88 (Rated for Div. 2)E 题目大意: 给你n,k(1<=k<=n<=5e5),从1到n中选k个数组成一个 ...

  8. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)

    欢迎访问本菜鸡的独立博客:Codecho 比赛名称 Educational Codeforces Round 61 (Rated for Div. 2) 比赛链接 https://codeforces ...

  9. Educational Codeforces Round 123 (Rated for Div. 2)(ABCDE)

    Educational Codeforces Round 123 (Rated for Div. 2)(ABCDE) A. Doors and Keys 题意:给定长度为6的字符串,问是否可以通关,其 ...

最新文章

  1. 快速排序算法(基于Java实现)
  2. 从不同视角筛选数据:可视化之前最关键的工作
  3. python学习札记20210123
  4. BZOJ2091 [Poi2010]The Minima Game
  5. celery java_Celery详解
  6. 天翼云从业认证(4.12) 天翼云医疗行业解决方案
  7. hadoop中job.setOutputFormatClass(PartitionByCoun...
  8. [C++] - Returning by const value
  9. Java基础面试题,啾啾啾~~~
  10. Node.js 入门知识点总结
  11. java开发微信公众号支付全流程
  12. 固态硬盘进阶知识:颗粒篇
  13. Linux系统CentOS7破解密码
  14. linux里数据库退格,Oracle Database for Linux 不能使用退格键
  15. iOS开发-苹果开发者账号注册、申请续费整个流程
  16. 怎么看自己的操作系统?
  17. Xavier法与何恺明法初始化权重的意义及原理
  18. 【数据分析】基于时间序列的预测方法(2021-01-08)时间序列预测
  19. 用Python进行多元线性回归分析(附代码)
  20. 【基本功】深入剖析Swift性能优化

热门文章

  1. PhotoShop 2022 mac相比以前的版本有哪些优势
  2. 智慧灯杆系列网关产品 赋能智慧城市
  3. 智慧灯杆与车路协同应用影响力
  4. yii2的加密解密那些事儿
  5. Mac专业练习打字软件:Master of Typing 3
  6. 【Nodejs】文件读写综合案例
  7. 部署企业自己的Docker Hub镜像加速器
  8. sklearn中的fit_transform、获取特征、标签转换
  9. Angular2知识概括
  10. 2018-05-28 课后笔记