Problem I. Interest Targeting

题目连接:

http://codeforces.com/gym/100714

Description

A unique display advertisement system was developed at the department of advertising technologies,

Yaagl Inc. The system displays advertisements that meet the interests of the user who is currently

watching the page.

For this system to function properly, having a good method for computing the user’s category of interest

and the probability of clicking an advertisement, which is related to his/her interests, is vital.

One of your colleagues has implemented an algorithm that analyzes users’ browsing history and produces

the results as follows:

user id category id create time heuristic ctr

where:

• user id is the user identifier;

• category id is the identifier of user’s predicted interest category;

• create time is the prediction generation time;

• heuristic ctr is the predicted click probability for this category.

This information is stored in interests log table.

Your task is to write a program which estimates the prediction quality. You are provided with log table

events log containing advertisement display results. Each row of the table corresponds to advertisement

display event. The table has the following columns:

• user id is the user identifier;

• category id is the identifier of an advertisement category;

• adv id is the advertisement identifier;

• show time is the advertisement display time;

• click flag is 1, if a click had occurred, 0 otherwise.

Your are expected to add new information from the first table to the second one, or, as SQL-developers

usually say, do an INNER JOIN of these two tables using (user id, category id) as a key.

While performing the join, the following conditions must be satisfied:

• user id and category id of matching rows must be equal;

• each row of the second table can match at most one row of the first table;

• for a pair of matching rows the following must hold — show time > create time and

show time − create time is minimum.

All matching rows must appear in the result. However some rows from both tables may not appear in

the result if they have no match.

Input

The first line contains the numbers interests count and events count, denoting the sizes of the

log tables interests log and events log respectively. The sizes do not exceed 70 000. The next

interests count lines contain rows of interests log, and the next events count lines contain rows

of the second table. Field values are separated by a space. All field values except for click flag are

integers belonging to the range [1, 109

]. For the records in interests log, all the tuples (user id,

category id, create time) are unique.

Output

Output the joined table. Each row should be as follows:

user id category id create time heuristic ctr adv id show time click flag

Print the number of rows in the first line. Then print table rows, one per line. Order the rows by

tuples (heuristic ctr, user id, category id, create time, adv id, show time) in the ascending order.

Tuples are compared lexicographically, i.e. tuples are compared first by heuristic ctr, then by user id

and so on till show time. You can output rows in any order satisfying the described criteria.

Sample Input

2 2

1 1 102 200

2 1 104 333

2 1 33 101 0

1 1 34 105 1

Sample Output

1

1 1 102 200 34 105 1

Hint

题意

简单讲,就是给你两个表,第一个表有abcd四个属性,第二个表有abcde五个属性。

然后对于每一个第二表的项目,你都得在第一个表上找到a和b相同,但是第二个表的d和第一个表d相差最小,且大于它的项目。

然后把这两项合并一下就好了。

题解:

用set维护一下就好了,一个模拟题……

答案记得排序。

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 70005;
map<pair<int,int>,int>H;
int cnt = 0;
struct people{
int a,b,c,d;
}p[maxn];
struct ad{
int a,b,c,d,e;
};
struct cccc{
int a,b,c,d,e,f,g;
};
bool cmp(cccc A,cccc B){
if(A.d==B.d&&A.a==B.a&&A.b==B.b&&A.c==B.c&&A.e==B.e)return A.f<B.f;
if(A.d==B.d&&A.a==B.a&&A.b==B.b&&A.c==B.c)return A.e<B.e;
if(A.d==B.d&&A.a==B.a&&A.b==B.b)return A.c<B.c;
if(A.d==B.d&&A.a==B.a)return A.b<B.b;
if(A.d==B.d)return A.a<B.a;
return A.d<B.d;
}
set<pair<int,int> >S[maxn];
int getid(int x,int y){
if(H.count(make_pair(x,y)))
return H[make_pair(x,y)];
H[make_pair(x,y)]=++cnt;
return H[make_pair(x,y)];
}
int fiid(int x,int y){
if(!H.count(make_pair(x,y)))
return -1;
return H[make_pair(x,y)];
}
vector<cccc> AAAAA;
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
S[i].insert(make_pair(-1,-1));
scanf("%d%d%d%d",&p[i].a,&p[i].b,&p[i].c,&p[i].d);
S[getid(p[i].a,p[i].b)].insert(make_pair(p[i].c,i));
}
for(int i=1;i<=m;i++){
ad tmp;
scanf("%d%d%d%d%d",&tmp.a,&tmp.b,&tmp.c,&tmp.d,&tmp.e);
int id = fiid(tmp.a,tmp.b);
if(id==-1)continue;
int d = (--S[id].lower_bound(make_pair(tmp.d,0)))->second;
if(d==-1)continue;
cccc kkk;
kkk.a=p[d].a,kkk.b=p[d].b,kkk.c=p[d].c,kkk.d=p[d].d;
kkk.e=tmp.c,kkk.f=tmp.d,kkk.g=tmp.e;
AAAAA.push_back(kkk);
}
printf("%d\n",AAAAA.size());
sort(AAAAA.begin(),AAAAA.end(),cmp);
for(int i=0;i<AAAAA.size();i++)
printf("%d %d %d %d %d %d %d\n",AAAAA[i].a,AAAAA[i].b,AAAAA[i].c,AAAAA[i].d,AAAAA[i].e,AAAAA[i].f,AAAAA[i].g);
}

2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem I. Interest Targeting 模拟题的更多相关文章

  1. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem K. KMC Attacks 交互题 暴力

    Problem K. KMC Attacks 题目连接: http://codeforces.com/gym/100714 Description Warrant VI is a remote pla ...

  2. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem D. Distance 迪杰斯特拉

    Problem D. Distance 题目连接: http://codeforces.com/gym/100714 Description In a large city a cellular ne ...

  3. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem C. Contest 水题

    Problem C. Contest 题目连接: http://codeforces.com/gym/100714 Description The second round of the annual ...

  4. 2016-2017 ACM-ICPC, NEERC, Moscow Subregional Contest Problem L. Lazy Coordinator

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229511 时间限制:1s 空间限制:512MB 题目大意: 给定一个n 随后跟着2n行输入 ...

  5. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem J. Joke 水题

    Problem J. Joke 题目连接: http://codeforces.com/gym/100714 Description The problem is to cut the largest ...

  6. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem H. Hometask 水题

    Problem H. Hometask 题目连接: http://codeforces.com/gym/100714 Description Kolya is still trying to pass ...

  7. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem F. Finance 模拟题

    Problem F. Finance 题目连接: http://codeforces.com/gym/100714 Description The Big Boss Company (BBC) pri ...

  8. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem A. Alien Visit 计算几何

    Problem A. Alien Visit 题目连接: http://codeforces.com/gym/100714 Description Witness: "First, I sa ...

  9. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem D. Grumpy Cat 交互题

    Problem D. Grumpy Cat 题目连接: http://www.codeforces.com/gym/100253 Description This problem is a littl ...

随机推荐

  1. Here’s just a fraction of what you can do with linear algebra

    Here’s just a fraction of what you can do with linear algebra The next time someone wonders what the ...

  2. iOS必学技-cocoapods

    我就不再造轮子了,网上的教程很详细,楼主亲测,好用. http://code4app.com/article/cocoapods-install-usage 楼主安装使用过程中遇到以下几个问题,同学们 ...

  3. 使用 scm-manager 搭建 git/svn 代码管理仓库(二)

    主要介绍scm的配置. 1.配置为在Windows服务中启动scm-manager的启动方式有多种,可以在DOS(即命令行CMD模式)中启动,也可以在Windows服务中启动. 下面我们采用Windo ...

  4. python selenium - web自动化环境搭建

    前提: 安装python环境. 参考另一篇博文:https://www.cnblogs.com/Simple-Small/p/9179061.html web自动化:实现代码驱动浏览器进行点点点的操作 ...

  5. 记录自己对EventLoop和性能问题处理的一点心得【转】

    转自:http://www.cnblogs.com/lanyuliuyun/p/4483384.html 1.EventLoop 这里说的EventLoop不是指某一个具体的库或是框架,而是指一种程序 ...

  6. ASP.NET MVC + MySQL で開発環境構築

    from:http://qiita.com/midori44/items/ef7cdd1d37c353e44b5f ASP.NET MVC & EntityFramework によるコードファ ...

  7. 文件时间戳修改touch和查看stat和ls --time

    查看文件时间戳命令:stat awk.txtFile: `awk.txt'Size: 20  Blocks: 8  IO Block: 4096  regular fileDevice: 801h/2 ...

  8. OPENCV SVM介绍和自带例子

    依据机器学习算法如何学习数据可分为3类:有监督学习:从有标签的数据学习,得到模型参数,对测试数据正确分类:无监督学习:没有标签,计算机自己寻找输入数据可能的模型:强化学习(reinforcement ...

  9. Smarty 模板引擎简介

    前言 Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一.它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑 ...

  10. java 多态缺陷

    一,会覆盖私有方法 package object; class Derive extends Polymorphism{ public void f1() { System.out.println(& ...