2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem I. Interest Targeting 模拟题
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 模拟题的更多相关文章
- 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 ...
- 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 ...
- 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 ...
- 2016-2017 ACM-ICPC, NEERC, Moscow Subregional Contest Problem L. Lazy Coordinator
题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229511 时间限制:1s 空间限制:512MB 题目大意: 给定一个n 随后跟着2n行输入 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- Codeforces 931 C. Laboratory Work
http://codeforces.com/problemset/problem/931/C 题意: 给定一个数列,要求构造一个等长的数列,使得数列的平均值等于给定数列,并且使得构造出的数列中与原数列 ...
- HTML5 拖拽实现
简介: 最早在网页中引入JavaScript拖放功能是IE4.当时,网页中只有两种对象可以拖放:图像和某些文本.拖放图像时,把鼠标放到图像上,按住鼠标不放就可以拖放它.拖放文本时,要先选中文本,然后可 ...
- ASP.NET批量下载文件
一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...
- 浅说Get请求和Post请求
Web 上最常用的两种 Http 请求就是 Get 请求和 Post 请求了.我们在做 java web 开发时,也总会在 servlet 中通过 doGet 和 doPost 方法来处理请求:更经常 ...
- Flex 编写 loading 组件
Flex 界面初始化有时那个标准的进度条无法显示,界面长时间会处理空白的状态!我们来自定义一个进度条, 这个进度条加载在 Application 应用程序界面的 <s:Application 标 ...
- 第10月第28天 touchesBegan hittest
1. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [[self nextResponder] touchesBe ...
- CentOS 无法通过 yum 安装新版 nodejs 解决办法(安装的还是老版的)
官网安装说明:CentOS 安装 nodejs 第一步: curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo b ...
- TP-Link wr703N 使用华为HiLink系列上网卡的设置【转】
转自:http://www.right.com.cn/forum/thread-103082-1-1.html 最近买了一个华为的E303s的上网卡,之前703的openwrt是按照需要拨号和使用U盘 ...
- Tomcat优化步骤【转】
一.Tomcat的缺省是多少,怎么修改 Tomcat的缺省端口号是8080.修改Tomcat端口号:1.找到Tomcat目录下的conf文件夹2.进入conf文件夹里面找到server.xml文件3. ...
- WPF 中定时器的使用
DispatcherTimer timer; private void Window_Loaded(object sender, RoutedEventArgs e) { timer = new Di ...