以前有个自助建设网站,wordpress 3d旋转,专门做游戏的网站,网站 栏目做下拉分析
本题实质上就是对数据处理一下就可以了
就是数据结构实现题
我们要求对应索引下按照某种排序规则的线性表时 取最优时 可以用堆
每次拿出一个元素 堆内元素调整顺序
然后用三个堆 就可以表示三张表 每次我们得到顾客的一个喜欢颜色 就可以利用这个颜色去查堆
找到就输出…分析
本题实质上就是对数据处理一下就可以了
就是数据结构实现题
我们要求对应索引下按照某种排序规则的线性表时 取最优时 可以用堆
每次拿出一个元素 堆内元素调整顺序
然后用三个堆 就可以表示三张表 每次我们得到顾客的一个喜欢颜色 就可以利用这个颜色去查堆
找到就输出 找不到就输出-1
本题在于把对应颜色作为下标 将元素存进来
用的时候就查表就行了减少遍历次数 将一张大表分成不同颜色的小表 #includeiostream
#includecstring
#includequeue
#includecstdio
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_queuecloq[4];
int c[maxn],ans[maxn];
bool bok[maxn];int main()
{int t,n;scanf(%d,n);for(int i1;in;i)scanf(%d,c[i]);for(int i1;in;i){scanf(%d,t);q[t].push(clo(c[i],i));}for(int i1;in;i){scanf(%d,t);q[t].push(clo(c[i],i));}int m;scanf(%d,m);for(int i1;im;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 i1;im;i)printf(%d%c,ans[i],im?\n: );return 0;
}