题意:

      输入n,m,k ,给你n个点,他们在一个一维坐标上,每个点有两个值,一个是坐标,另一个是价值,然后有m组操作,每次操作给一个坐标,意思就是把当前这个坐标的点距离他最近的k个点(相等,取id小的)的价值加起来的平均数作为当前的价值,最后输出所有新得到的权值的和<n,m<=100000 ,k <= min(10 ,n - 1)>.

思路:

     直接模拟就行了,一开始wa了好多次,被自己坑了,题意明明没说给的点的坐标是有序的,但是我自己一直认为是有序的所以就各种wa啊wa啊wa,呵呵!我们先把所有的数据按照坐标排序一下,排序之后记得hash下id,然后每次操作直接模拟就行了,具体的看代码,这个题没设计到什么想法,最大的时间复杂度是100000 * 10,模拟无压力 ,不知道为什么写着感觉挺开心的,虽然题目不难。


#include<stdio.h>
#include<algorithm> #define N 110000

using namespace
std; typedef struct
{
double
dis ,num;
int
id;
}
NODE; NODE node[N];
int
hash[N]; bool camp(NODE a ,NODE b)
{
return
a.dis < b.dis;
} int main ()
{
int
t ,n ,m ,k ,i ,a;
scanf("%d" ,&t);
while(
t--)
{

scanf("%d %d %d" ,&n ,&m ,&k);
for(
i = 1 ;i <= n ;i ++)
{

scanf("%lf %lf" ,&node[i].dis ,&node[i].num);
node[i].id = i;
}

sort(node + 1 ,node + n + 1 ,camp);
for(
i = 1 ;i <= n ;i ++)
hash[node[i].id] = i;
double
Ans = 0;
while(
m--)
{

scanf("%d" ,&a);
double
sum = 0;
int
l = hash[a] - 1 ,r = hash[a] + 1;
for(
i = 1 ;i <= k ;i ++)
{
if(
l < 1) sum += node[r].num ,r ++;
else if(
r > n) sum += node[l].num ,l --;
else if(
node[hash[a]].dis - node[l].dis == node[r].dis - node[hash[a]].dis)
{
if(
node[l].id < node[r].id) sum += node[l].num ,l--;
else
sum += node[r].num ,r ++;
}
else if(
node[hash[a]].dis - node[l].dis < node[r].dis - node[hash[a]].dis) sum += node[l].num ,l--;
else
sum += node[r].num ,r ++;
}

node[hash[a]].num = sum / k;
Ans += node[hash[a]].num;
}

printf("%.6lf\n" ,Ans);
}
return
0;
}


hdu4995 (不错的小模拟)的更多相关文章

  1. 【11.8校内测试】【倒计时2天】【状压DP】【随机化?/暴力小模拟】

    Solution 数据范围疯狂暗示状压,可是一开始发现状态特别难受. 将每一层的奇偶性状压,预处理所有状态的奇偶性.每一层的输入代表的其实可以是下一层某个点可以被从这一层哪些点转移到. 所以枚举每个状 ...

  2. 【10.6校内测试】【小模拟】【hash+线段树维护覆盖序列】

    一开始看到题就果断跳到T2了!!没想到T2才是个大坑,浪费了两个小时QAQ!! 就是一道小模拟,它怎么说就怎么走就好了! 为什么要用这么多感叹号!!因为统计答案要边走边统计!!如果每个数据都扫一遍20 ...

  3. linux下不错的小软件

    1.Shutter截图软件 可以完成基本截图功能,而且还有图片编辑功能,可以涂鸦添加水印等. 以下的截图全部归功于shutter软件. 2.VLC media player 媒体播放器 3.Termi ...

  4. hdu 5063 不错的小想法题(逆向处理操作)

    题意:       刚开始的时候给你一个序列,长度为n,分别为a[1]=1,a[2]=2,a[3]=3,a[4]=4...a[n]=n,然后有4种操作如下: Type1: O 1 call fun1( ...

  5. HDU 4814 Golden Radio Base 小模拟

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4814 题意:黄金比例切割点是,如今要求把一个10进制的的数转化成一个phi进制的数,而且不能出现'11'的 ...

  6. [LuoguP4711]分子质量(小模拟+玛丽题)

    --这个题我居然可以把他\(1A\)--真是让我不知其可\(qwq\) \(Link\) \(emmmm\)好像发现了什么固定的套路(?)-- 大概就是这种题总会有 1.读入数 方案:快读即可. 2. ...

  7. hdu4515 小模拟

    题意:       给你当期日期,问前D天和后D天的年月日. 思路:      直接模拟就行了水题,对了别忘了题目2013,3,5要输出这样的2013/03/05. #include<stdio ...

  8. 齐博x1一段不错的小js提高一点点阅读体验 计算本文阅读所需的时长

    如图所示很多比较大的站点都有这样的一个小玩意 就是本文有多少字 阅读需要多少时间. 一段小小的js就可以实现,当然了php也可以功能太小了不值得做钩子或者插件自己需要的话再模板加一下吧. <sc ...

  9. hdu 4523 威威猫系列故事——过生日 小模拟

    威威猫系列故事——过生日 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total ...

随机推荐

  1. redis基础:redis下载安装与配置,redis数据类型使用,redis常用指令,jedis使用,RDB和AOF持久化

    知识点梳理 课堂讲义 课程计划 1. REDIS 入 门 (了解) (操作)   2. 数据类型 (重点) (操作) (理解) 3. 常用指令   (操作)   4. Jedis (重点) (操作) ...

  2. 基于云原生DevOps服务自动化部署前端项目学习总结

    本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...

  3. Flask-SQLAlchemy使用

    Flask-SQLAlchemy 使用起来非常有趣,对于基本应用十分容易使用,并且对于大型项目易于扩展. 官方文档:https://flask-sqlalchemy.palletsprojects.c ...

  4. CISCN-2018-Quals-note-service2

    CISCN-2018-Quals-note-service2 总结 做完这道题,收获如下: 1)汇编语句jmp short s,最后编译出来的机器码为\xEB\x??,问号代表pc寄存器会往前或往后跳 ...

  5. SpringDataJPA 入门

    前言 1. 三者的区别与联系 JPA:本身是一种ORM规范,不是ORM框架.由各大ORM框架提供实现. Hibernate是一个完整的ORM框架,常规CRUD我们不需要写一句SQL;框架比较重,学习成 ...

  6. apk、dex完整性验证

    对Dex进行完整性的检查,可通过CRC,或者Hash值.可将校验值放到String资源文件里,或者放到服务器中. 1. 在代码中完成校验值对比逻辑,此部分代码后续不能再改变,否则CRC值会发生变化: ...

  7. PTE 准备之 Describe Image

    25s 准备时间:决定用什么模板,用模板cover那些信息点 Content: 数字和文字哪个多,就多说哪个,均匀覆盖 Fluency : 保持流利度 不要纠结时态,单复数,人称代词等 时间要求: 尽 ...

  8. 远程拷贝文件--scp

    scp [user@host1:]file1 [user@host2:]file2         将主机1下的某一路径下的文件拷贝到另一个主机下的某一路径 scp -r [user@host1:]d ...

  9. C++并发与多线程学习笔记--async、future、packaged_task、promise

    async future packaged_task promise async std:async 是个函数,用来启动一个异步任务,启动起来一个异步任务之后,返回一个std::futre对象,启动一 ...

  10. C++并发与多线程学习笔记--参数传递详解

    传递临时对象 陷阱 总结 临时对象作为线程参数 线程id的概念 临时对象构造时的抓捕 成员函数指针做线程函数 传递临时对象作为线程参数 创建的工作线程不止一个,线程根据编号来确定工作内容.每个线程都需 ...