HDU - 4995 - Revenge of kNN
题目链接 : https://vjudge.net/problem/HDU-4995
题目大意 : 读入n个点的坐标与该点所拥有的值val,进行m次查询,对于每一次查询,读入该点的坐标,计算离该点最近的k个点的值(距离相同的索引小的优先),进行求和求平均,
然后更新改点的值,最后输出更新的值的和。
题目分析 : 一个比较不错的模拟的题目,可以对坐标值和 索引进行hash来优化计算时间。
其他进行模拟即可,注意读入的值并不是有序的,需要先进行排序。
代码实现 :
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
#include <cstdio>
using namespace std;
int m,n,k;
struct node
{
double point;
double val;
int id;
};
bool comp(const node &a,const node& b)
{
return a.point<b.point;
}
+];
node nodes[+];
void init()
{
cin>>n>>m>>k;
;i<n;i++)
{
double a;
double b;
scanf("%lf%lf",&a,&b);
nodes[i].point=a;
nodes[i].val=b;
nodes[i].id = i;
}
sort(nodes,nodes+n,comp);
;i<n;i++)
{
hashs[nodes[i].id+]=i;
}
}
double solve()
{
;
;i<m;i++)
{
int t;
scanf("%d",&t);
// cout<<t<<endl;
int mid=hashs[t];
,r=mid+;
int K=k;
;
while(K--)
{
&&r<n)
{
double d1=nodes[l].point;
double d2=nodes[r].point;
double t1=nodes[mid].point-d1;
double t2=d2-nodes[mid].point;
// cout<<t1<<" "<<t2<<" "<<"*"<<endl;
if(t1<t2)
{
sum+=nodes[l].val;
// cout<<nodes[l].val<<" "<<l<<endl;
l--;
}
else if(t1>t2)
{
sum+=nodes[r].val;
// cout<<nodes[r].val<<" "<<r<<endl;
r++;
}else if(t1==t2)
{
if(nodes[l].id<nodes[r].id)
{
sum+=nodes[l].val;
l--;
}
else
{
sum+=nodes[r].val;
r++;
}
}
}
)
{
sum+=nodes[l].val;
// cout<<nodes[l].val<<" "<<l<<endl;
l--;
}else if(r<n)
{
sum+=nodes[r].val;
// cout<<nodes[r].val<<" "<<r<<endl;
r++;
}
}
// cout<<sum<<" *"<<endl;
sum=sum/k;
//cout<<sum<<endl;
SUM+=sum;
nodes[mid].val=sum;
}
return SUM;
}
int main()
{
int T;
cin>>T;
while(T--)
{
init();
double sum=solve();
printf("%.6lf\n",sum);
}
;
}
HDU - 4995 - Revenge of kNN的更多相关文章
- hdu 4995(离散化下标+模拟)
Revenge of kNN Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- BestCoder9 1003 Revenge of kNN(hdu 4995) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4995 题目意思:在一个一维坐标轴上,给出位置 xi 和值 vi,对于 M 次询问,每次询问给出inde ...
- HDU 5019 Revenge of GCD(数学)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5019 Problem Description In mathematics, the greatest ...
- HDU - 4994 Revenge of Nim (取石子游戏)
Problem Description Nim is a mathematical game of strategy in which two players take turns removing ...
- hdu 4995 离线处理+模拟
http://acm.hdu.edu.cn/showproblem.php?pid=4995 给定一维坐标下的n个点,以及每个点的权值,有m次查询,每次将查询的x点上的权值修改为离x最近的k个点权值的 ...
- HDU 4996 Revenge of LIS(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4996 题意:求1到n的全排列中,有多少个排列的最长上升子列长度为K? 思路:对于当前的最长上升子列,我 ...
- hdu 4099 Revenge of Fibonacci 大数+压位+trie
最近手感有点差,所以做点水题来锻炼一下信心. 下周的南京区域赛估计就是我的退役赛了,bless all. Revenge of Fibonacci Time Limit: 10000/5000 MS ...
- hdu 4099 Revenge of Fibonacci 字典树+大数
将斐波那契的前100000个,每个的前40位都插入到字典树里(其他位数删掉),然后直接查询字典树就行. 此题坑点在于 1.字典树的深度不能太大,事实上,超过40在hdu就会MLE…… 2.若大数加法时 ...
- hdu 4099 Revenge of Fibonacci Trie树与模拟数位加法
Revenge of Fibonacci 题意:给定fibonacci数列的前100000项的前n位(n<=40);问你这是fibonacci数列第几项的前缀?如若不在前100000项范围内,输 ...
随机推荐
- 小白审计JACKSON反序列化漏洞
1. JACKSON漏洞解析 poc代码:main.java import com.fasterxml.jackson.databind.ObjectMapper; import com.sun.or ...
- loadrunner学习理论之一
1.负载测试.压力测试的区别? 答:负载测试是在被测系统所承受的正常范围内进行的 压力测试可以在极端的条件下进行 2.loadrunner的三大组件是什么,有什么作用? 答:虚拟用户生成器(virtu ...
- Javascript中的数组去重-indexof方法
在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1 ...
- HTML5 Web Worker简单使用
Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Wo ...
- [0] 关于IComparable和IComparer接口和Comparer类
关于IComparable和IComparer接口 和 Comparer类 IComparable和ICompareframeworkr接口是.net 中比较对象的标准方式,这两个接口之间的区别如下: ...
- go 接口案例,音乐播放器
manager.go //package main package mlib import "errors" type MusicEntry struct { Id string ...
- Java 9 揭秘(5. 实现服务)
Tips做一个终身学习的人. Implementing Services 在这章中,主要介绍如下内容: 什么服务,服务接口,服务提供者: 在 JDK 9之前和在JDK 9中如何实现服务 如何使用Jav ...
- node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)
第七章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- java web数据库(SQL 2008+IDEA 14)环境配置
废话少说,在之前已经配置过IDEA+Tomcat的环境之后,现在需要进行数据库配置: 1.首先,SQL SERVER2008数据库的安装 (1)将下载的sqlserver 2008数据库进行解压,点击 ...
- TCP札记
协议对于通信就像算法对于计算一样.算法允许人们在不必知道特定的CPU指令集的情况下指定或理解具体的计算形式.同样地,通信协议允许人们不依赖特定厂家的网络硬件来指定或理解数据通信. 网络协议通常分不同层 ...