CodeForces
来源:互联网 发布:游戏客户端制作软件 编辑:程序博客网 时间:2024/06/05 12:04
CodeForces - 799B T-shirt buying
题意:有n歌个短袖,每个短袖的前面和后面都有颜色,颜色种类有三种1,2,3,有m个顾客编号从1到m,给出这些顾客喜欢的颜色,从顾客1开始购买衣服,输出每一个带有顾客颜色的衣服且花费最小的钱,没有则输出-1
思路:这个题解法很多,灵活利用基本数的据结构
第一种解法:优先队列,根据3种颜色建立三个优先队列,每次在顾客喜欢颜色的优先队列里取top(),注意每件衣服只能购买一次,需要有个标记标记是否购买
#include<stdio.h>#include<queue>#include<string.h>using namespace std;const int MAXN=200005;struct Ts{int f,b;int p;int id;bool operator<(const Ts &t2) const{return p>t2.p;}}T[MAXN];int ans[MAXN];int num[MAXN];int main(void){int n;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&T[i].p);for(int i=1;i<=n;i++) scanf("%d",&T[i].f);for(int i=1;i<=n;i++){ scanf("%d",&T[i].b); T[i].id=i; }priority_queue<Ts> p[4]; for(int i=1;i<=n;i++){ p[T[i].f].push(T[i]); p[T[i].b].push(T[i]);} int m;scanf("%d",&m);int c;memset(ans,-1,sizeof(ans));memset(num,0,sizeof(num));for(int i=1;i<=m;i++){ scanf("%d",&c);while(!p[c].empty()) {struct Ts temp=p[c].top();p[c].pop();if(!num[temp.id]){ans[i]=temp.p;num[temp.id]=1;break;}}}for(int i=1;i<=m;i++) if(i==m) printf("%d\n",ans[i]); else printf("%d ",ans[i]); return 0; }第二种解法:思路大致是一样的,就是用了set这个数据结构,也是根据三种颜色创建3个集合,每次利用set有序性的性质,不同的是这里不需要标记,直接在集合里删除已经购买的衣服就行了
#include<iostream>#include<cstdio>#include<set>using namespace std;const int N=2e5+5;set<int>ms[5];struct node{int val,front,back;}a[N];int main(void){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].val;}for(int i=1;i<=n;i++){cin>>a[i].front;}for(int i=1;i<=n;i++){cin>>a[i].back;}for(int i=1;i<=n;i++){ms[a[i].front].insert(a[i].val);ms[a[i].back].insert(a[i].val);}int m;cin>>m;for(int i=1;i<=m;i++){int x;cin>>x;if(ms[x].size()==0) cout<<"-1"<<endl;else{int curval=*(ms[x].begin());cout<<curval<<" ";for(int i=1;i<=3;i++){ms[i].erase(curval);}} }}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 一个简单的web点名程序(基于javascript)
- Java菜鸟教程 面向对象初步(一)
- python 百度地图 经纬度转地址
- Pygame初试----Cells
- idea创建maven项目整合SSH
- CodeForces
- LCA 约会
- SSL P1862 提高组 删数
- iOS-进程与线程概念以及iOS的三种多线程技术
- 神经网络与深度学习 第二章 反向传播算法(两个假设、四个基本方程及其证明、代码及注释)
- 北大oj-1007 C语言
- 交换排序
- pat:L1-033. 出生年
- 安卓Sqlite增删改查