CCF 2019-9-4 推荐系统 100分

试题编号: 201909-4
试题名称: 推荐系统
时间限制: 5.0s
内存限制: 512.0MB
问题描述:

CCF 2019-9-4 推荐系统 100分_第1张图片

CCF 2019-9-4 推荐系统 100分_第2张图片

CCF 2019-9-4 推荐系统 100分_第3张图片

 

#include
#include
#include//set与结构体的结合使用
using namespace std;

typedef struct Good{//商品结构体 
	int type;
	int id;
	int score;
}Good;

typedef struct Del{//被删除的商品信息 
	int type;
	int id;
}Del;

bool operator<(const Good & x,const Good & y){//把商品结构体装入set
//其中涉及到了score,type,id三个信息来装入set,所以set在erase,find等操作时,必须三个信息一起查找才有结果 
	if(x.score!=y.score)return x.score>y.score;
	else{
		if(x.type==y.type)return x.id good; //存放所有商品信息 
set  del; //存放所有已删除的商品信息 

int main(){
	int m,n,num=0;
	cin>>m>>n;
	for(int i=0;i>temp.id>>temp.score;
		for(int j=0;j>n;
	while(n--){
		int op;
		cin>>op;
		if(op==1){
			Good temp;
			cin>>temp.type>>temp.id>>temp.score;
			good.insert(temp);
		}else if(op==2){
			Del temp;
			cin>>temp.type>>temp.id;
			del.insert(temp);
		}else{
			int k,type_k[55]={0};
			vector vec[55];
			cin>>k;
			for(int i=0;i>type_k[i];
			}
			//检查所以商品 
			for(set::iterator it=good.begin();k>0 && it!=good.end();){
				if(type_k[(*it).type]>0){  
				    Del has_del;
				    has_del.type=(*it).type;has_del.id=(*it).id;
					if(del.find(has_del)!=del.end()){ //若存在于删除表中 
						good.erase(it++); //删除该元素,迭代器自增 
						//重点!!erase之后,it所在的那个位置迭代器为NULL,所以不能拿出来执行it++
						//所以要在执行erase之前,先让it++ 
					}
					//未删除,就装入输出列表 
					else{
						type_k[(*it).type]--;
						k--;
						vec[(*it).type].push_back((*it).id); 
						it++;
					} 
				}
				else it++; 
			}
			//输出 
			for(int i=0;i0){
					for(int j=0;j

更多相关CCF的试题解答,请点击>>CCF历年认证考试解答

你可能感兴趣的:(CCF 2019-9-4 推荐系统 100分)