codeforces round #412 B. T-shirt buying
来源:互联网 发布:拨号软件 编辑:程序博客网 时间:2024/05/16 15:31
题意: 商店有n个价格完全不一样的衣服,正反两面都有颜色,颜色可以为(1,2,3),m个客户依次来买衣服,分别给出他们想要的颜色,只要正反至少其中一个包含这个颜色,然后客户在选定颜色情况下买最便宜的,分别输出他们应付的钱,没有这个颜色的衣服就输出-1;
思路:定义三个优先队列,分别存1,2,3颜色的衣服,在用set映射记录哪些衣服被选了(因为衣服价格是完全不同的);
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <set>
#include <vector>
#include <queue>
#include <cstring>
#include <set>
using namespace std;
const int maxn = 200000+10;
priority_queue<int,vector<int>,greater<int> >pque1,pque2,pque3;
int a[maxn];
int b[maxn];
int p[maxn];
int c[maxn];
set<int>s;
int main()
{
int n;
cin>>n;
// memset(pd,0,sizeof(pd));
for(int i = 1;i<=n;i++)
{
cin>>p[i];
}
for(int i = 1;i<=n;i++)
{
cin>>a[i];
}
for(int i = 1;i<=n;i++)
{
cin>>b[i];
}
int m;
cin>>m;
for(int i = 1;i<=m;i++)
{
cin>>c[i];
}
for(int i = 1;i<=n;i++)
{
if(a[i]==1)
{
pque1.push(p[i]);
}
else if(a[i]==2)
{
pque2.push(p[i]);
}
else if(a[i]==3)
{
pque3.push(p[i]);
}
if(b[i]==1)
{
pque1.push(p[i]);
}
else if(b[i]==2)
{
pque2.push(p[i]);
}
else if(b[i]==3)
{
pque3.push(p[i]);
}
}
//int maxx = 0;
for(int i = 1;i<=m;i++)
{
if(i==m)
{
if(c[i]==1)
{
while(!pque1.empty())
{
int p = pque1.top();
if(s.find(p)==s.end())
{
cout<<p;
s.insert(p);
break;
}
pque1.pop();
}
if(pque1.empty())
cout<<"-1";
}
else if(c[i]==2)
{
while(!pque2.empty())
{
int p = pque2.top();
if(s.find(p)==s.end())
{
cout<<p;
s.insert(p);
break;
}
pque2.pop();
}
if(pque2.empty())
cout<<"-1";
}
else if(c[i]==3)
{
while(!pque3.empty())
{
int p = pque3.top();
if(s.find(p)==s.end())
{
cout<<p;
s.insert(p);
break;
}
pque3.pop();
}
if(pque3.empty())
cout<<"-1";
}
return 0;
}
if(c[i]==1)
{
while(!pque1.empty())
{
int p = pque1.top();
if(s.find(p)==s.end())
{
cout<<p<<' ';
s.insert(p);
break;
}
pque1.pop();
}
if(pque1.empty())
cout<<"-1 ";
}
else if(c[i]==2)
{
while(!pque2.empty())
{
int p = pque2.top();
if(s.find(p)==s.end())
{
cout<<p<<' ';
s.insert(p);
break;
}
pque2.pop();
}
if(pque2.empty())
cout<<"-1 ";
}
else if(c[i]==3)
{
while(!pque3.empty())
{
int p = pque3.top();
if(s.find(p)==s.end())
{
cout<<p<<' ';
s.insert(p);
break;
}
pque3.pop();
}
if(pque3.empty())
cout<<"-1 ";
}
}
return 0;
}
const int maxn = 200000+10;
priority_queue<int,vector<int>,greater<int> >pque1,pque2,pque3;
int a[maxn];
int b[maxn];
int p[maxn];
int c[maxn];
set<int>s;
int main()
{
int n;
cin>>n;
// memset(pd,0,sizeof(pd));
for(int i = 1;i<=n;i++)
{
cin>>p[i];
}
for(int i = 1;i<=n;i++)
{
cin>>a[i];
}
for(int i = 1;i<=n;i++)
{
cin>>b[i];
}
int m;
cin>>m;
for(int i = 1;i<=m;i++)
{
cin>>c[i];
}
for(int i = 1;i<=n;i++)
{
if(a[i]==1)
{
pque1.push(p[i]);
}
else if(a[i]==2)
{
pque2.push(p[i]);
}
else if(a[i]==3)
{
pque3.push(p[i]);
}
if(b[i]==1)
{
pque1.push(p[i]);
}
else if(b[i]==2)
{
pque2.push(p[i]);
}
else if(b[i]==3)
{
pque3.push(p[i]);
}
}
//int maxx = 0;
for(int i = 1;i<=m;i++)
{
if(i==m)
{
if(c[i]==1)
{
while(!pque1.empty())
{
int p = pque1.top();
if(s.find(p)==s.end())
{
cout<<p;
s.insert(p);
break;
}
pque1.pop();
}
if(pque1.empty())
cout<<"-1";
}
else if(c[i]==2)
{
while(!pque2.empty())
{
int p = pque2.top();
if(s.find(p)==s.end())
{
cout<<p;
s.insert(p);
break;
}
pque2.pop();
}
if(pque2.empty())
cout<<"-1";
}
else if(c[i]==3)
{
while(!pque3.empty())
{
int p = pque3.top();
if(s.find(p)==s.end())
{
cout<<p;
s.insert(p);
break;
}
pque3.pop();
}
if(pque3.empty())
cout<<"-1";
}
return 0;
}
if(c[i]==1)
{
while(!pque1.empty())
{
int p = pque1.top();
if(s.find(p)==s.end())
{
cout<<p<<' ';
s.insert(p);
break;
}
pque1.pop();
}
if(pque1.empty())
cout<<"-1 ";
}
else if(c[i]==2)
{
while(!pque2.empty())
{
int p = pque2.top();
if(s.find(p)==s.end())
{
cout<<p<<' ';
s.insert(p);
break;
}
pque2.pop();
}
if(pque2.empty())
cout<<"-1 ";
}
else if(c[i]==3)
{
while(!pque3.empty())
{
int p = pque3.top();
if(s.find(p)==s.end())
{
cout<<p<<' ';
s.insert(p);
break;
}
pque3.pop();
}
if(pque3.empty())
cout<<"-1 ";
}
}
return 0;
}
0 0
- codeforces round #412 B. T-shirt buying
- Codeforces Round #413 B. T-shirt buying
- Codeforces Round #413 B. T-shirt buying
- CodeForces 799B (B) T-shirt buying
- Codeforces 799B T-shirt buying 题解
- Codeforces Round #412 B. T-Shirt Hunt
- Codeforces Round #413 Div. 1 + Div. 2 B. T-shirt buying
- Codeforces Round #413 (Div.1 + Div. 2) B. T-shirt buying
- codeforces Round #413 Div. 1 + Div. 2 B T-shirt buying
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) B. T-shirt buying
- codeforces #413 B T-shirt buying(set快速查找)
- codeforcesPlayrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)B题B. T-shirt buying
- Codeforces Round #412 B. T-Shirt Hunt (暴力枚举)
- B. T-shirt buying(stl)
- codeforces 412 B T-shirt Hunt
- Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) B. T-Shirt Hunt(模拟)
- T-shirt buying Codeforce 贪心
- 【Codeforces 807 B. T-Shirt Hunt】
- maven配置
- opencv(17)---霍夫变换以及应用
- Ajax XMLHttpRequest对象的三个属性以及open和send方法
- android 虚拟手柄
- ruby on rails 优化rails查询
- codeforces round #412 B. T-shirt buying
- 如何抓取一个页面的数据--第一次尝试这方面的的知识
- 我为什么鼓励工程师写blog
- android NDK开发
- [leetcode: Python]202.Happy Number
- javaSE应用小程序到javaEE企业项目的连接---> javaWeb
- 分布式系统常见的事务处理机制
- IPv4数据报的分段与重组
- ruby on rails 如何实现动态方法调用?