CodeForces 799B (B) T-shirt buying

分析

本题实质上就是对数据处理一下就可以了
就是数据结构实现题 
我们要求对应索引下按照某种排序规则的线性表时 取最优时 可以用堆
每次拿出一个元素 堆内元素调整顺序
然后用三个堆 就可以表示三张表 每次我们得到顾客的一个喜欢颜色 就可以利用这个颜色去查堆 
找到就输出 找不到就输出-1
本题在于把对应颜色作为下标 将元素存进来
用的时候就查表就行了减少遍历次数 将一张大表分成不同颜色的小表 

code

#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
struct clo{int p,id;clo(int pr,int i):p(pr),id(i){}friend bool operator<(const clo & cc,const clo & dd){return dd.p < cc.p;}
};
const int maxn = 200010;
priority_queue<clo>q[4];
int c[maxn],ans[maxn];
bool bok[maxn];int main()
{int t,n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&c[i]);for(int i=1;i<=n;i++){scanf("%d",&t);q[t].push(clo(c[i],i));}for(int i=1;i<=n;i++){scanf("%d",&t);q[t].push(clo(c[i],i));}int m;scanf("%d",&m);for(int i=1;i<=m;i++){int t;scanf("%d",&t);if(q[t].empty())ans[i] = -1;else{while(!q[t].empty()&&bok[q[t].top().id])q[t].pop();if(q[t].empty()) ans[i]=-1;else {ans[i] = q[t].top().p;bok[q[t].top().id]=1;q[t].pop(); }}   }for(int i=1;i<=m;i++)printf("%d%c",ans[i],i==m?'\n':' ');return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复合数据类型,英文词频统计

作业要求&#xff1a;https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696 1.列表&#xff0c;元组&#xff0c;字典&#xff0c;集合分别如何增删改查及遍历。 列表的增删改查list1 list(this is a list)#增加list1.append(!) #末尾增加元素list1.insert(2,this i…

34tomcat设置默认页面

如何让hah.jsp成为欢迎界面&#xff1f; 在web-inf文件夹中配置项目部署文件web.xml。 添加标签 <welcome-file-list> <welcome-file>/hah.jsp</welcome-file> <welcome-file-list> 改变web.xml文件首页&#xff0c;报 将文件变成hah.jsp 默认页就设置…

[Leetcode][第718题][JAVA][最长重复子数组][动态规划][滑动窗口][暴力]

【问题描述】[中等] 给两个整数数组 A 和 B &#xff0c;返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。 说明:1 < len(A), len(B) < 1000 0 < A[i], B[i] < 100…

CodeForces 841C (C) Leha and Function 贪心

题意 定义F(n,k)表示&#xff11;&#xff0d;&#xff4e;的数列中以&#xff4b;为子集总个数的最小值 现有&#xff21;&#xff0c;&#xff22;数组 让我们重新排列&#xff21; 使得sigma[1 len]F(ai,bi)的数学期望最大 分析 题目看上去有点绕 但从期望上分析下其…

技术方法论

1、pom.xml配置新版本的jar包&#xff0c;如果引用不到可以先删除本地仓库的jar包&#xff0c;从私服重新下载新版本 转载于:https://www.cnblogs.com/luao/p/10535817.html

CodeForces 841B (B) 博弈

题意 定义&#xff21;把取数列中区间和为奇数的元素取出来 &#xff22;把数列中区间长度为偶数的区间删除 那么谁先面临无数可拿的局面为输 输出赢家 &#xff21;先取 分析 分析可知本题如果区间中每一个数是偶数那么&#xff22;可以一次取完 则&#xff21;不能取…

[剑指offer]面试题第[53-1]题[JAVA][在排序数组中查找数字-1][二分法][暴力法]

【问题描述】[中等] 统计一个数字在排序数组中出现的次数。 示例 1:输入: nums [5,7,7,8,8,10], target 8 输出: 2 示例 2:输入: nums [5,7,7,8,8,10], target 6 输出: 0【解答思路】 1. 暴力法/遍历 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(1) public int…

luogu P3295 [SCOI2016]萌萌哒

传送门 题目条件"两个子串\(S[l_1,r_1],S[l_2,r_2]\)完全相同"等价于\(\forall i \in[0,r_1-l_11],S_{l1i}S_{l_2i}\),然后所有相同位置的都要选一种数字,把所有相同的放在一个集合,然后记集合个数为\(cn\)那么答案就是\(9*10^{cn-1}\),因为第一位不为0,然后就可以暴…

CodeForces - 888C K-Dominant Character 思维

题意 找到在整个字符串中 所有以&#xff4b;长度的子串中的公共串至少长度为&#xff11;的字符串 求出这个&#xff2b;的最小值是多少  分析 每个子串都有的至少长度为&#xff11;的公共子串 这里我们要求&#xff4b;的最小 那么不如就把公共串的长度考虑为&#…

[剑指offer]面试题第[53-2]题[JAVA][0-n-1中缺失的数字][二分法][暴力法]

【问题描述】[简单] 一个长度为n-1的递增排序数组中的所有数字都是唯一的&#xff0c;并且每个数字都在范围0&#xff5e;n-1之内。在范围0&#xff5e;n-1内的n个数字中有且只有一个数字不在该数组中&#xff0c;请找出这个数字。示例 1:输入: [0,1,3] 输出: 2 示例 2:输入: …

过拟合问题详解

具体内容来自于读芯术&#xff1a;https://mp.weixin.qq.com/s?__bizMzI2NjkyNDQ3Mw&mid2247487002&idx1&sn05d13bd67a31e38434285c5f0262b95d&chksmea87f6ccddf07fdae17a71819ba0577d099bb49b291093e7c6c7927456febfb3d8d308c30ad6&scene21#wechat_redir…

Crusaders Quest ZOJ - 3983 构造|思维

题意 给我们一个字符串 其中只有a,o,g 当三个相同字符连在一起时释放大技能 我们可以消除任意连续数量的字符  问我们最大的释放大技能的数量是多少 分析 首先答案只能是 &#xff11; &#xff12; &#xff13; 如果这个字符串中存在连续三个的我们可以直接消去 …

[Leetcode][第378题][JAVA][有序矩阵中第K小的元素][二分法][归并排序][暴力]

【问题描述】[中等] 给定一个 n x n 矩阵&#xff0c;其中每行和每列元素均按升序排序&#xff0c;找到矩阵中第 k 小的元素。 请注意&#xff0c;它是排序后的第 k 小元素&#xff0c;而不是第 k 个不同的元素。示例&#xff1a; matrix [[ 1, 5, 9],[10, 11, 13],[12, 13…

设计模式-Builder和Factory模式区别

Builder和Factory模式区别 Builder模式结构&#xff1a; Factory模式一进一出,Builder模式是分步流水线作业。当你需要做一系列有序的工作或者按照一定的逻辑来完成创建一个对象时 Builder就派上用场啦。我们可以看到&#xff0c;Builer模式与工厂模式是极为相似的&#xff0c;…

CodeForces - 766C - Mahmoud and a Message dp

题意 给出一个字符串 和每个字符的限制数量ai 让我们随意的切割成多个字符串 使得每一个字符串中的特定字符所在的子串长度len<ai 求一共有多少个符合题目要求的方案 求其中最长的一个串长度是多少 求其中最少能分成多少个串 长度最大为1000 分析 明显可以用搜索 不过复…

[剑指offer]面试题第[54]题[JAVA][二叉搜索树的第k大节点][递归][迭代]

【问题描述】[简单] 给定一棵二叉搜索树&#xff0c;请找出其中第k大的节点。示例 1: 输入: root [3,1,4,null,2], k 13/ \1 4\2 输出: 4 示例 2:输入: root [5,3,6,2,4,null,null,1], k 35/ \3 6/ \2 4/1 输出: 4【解答思路】 反向中序遍历 遍历到第k个节点时&…

Hihocoder 1632 : Secret Poems 思维|技巧

题意 定义一个矩阵 他有n*n大小 然后给出他的真实信息的走法 让我们变换走法 再次把真实信息填入矩阵中 n<100 分析 可以发现原文的读取方式无非就是如此 &#xff08;0,1&#xff09;向左 (1,-1)左下 (1,0)向下 (-1,1)右上 1边界检查 (1,0)向下 (1,-1)左下 (0,…