hdu4995 (不错的小模拟)
题意:
输入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 (不错的小模拟)的更多相关文章
- 【11.8校内测试】【倒计时2天】【状压DP】【随机化?/暴力小模拟】
Solution 数据范围疯狂暗示状压,可是一开始发现状态特别难受. 将每一层的奇偶性状压,预处理所有状态的奇偶性.每一层的输入代表的其实可以是下一层某个点可以被从这一层哪些点转移到. 所以枚举每个状 ...
- 【10.6校内测试】【小模拟】【hash+线段树维护覆盖序列】
一开始看到题就果断跳到T2了!!没想到T2才是个大坑,浪费了两个小时QAQ!! 就是一道小模拟,它怎么说就怎么走就好了! 为什么要用这么多感叹号!!因为统计答案要边走边统计!!如果每个数据都扫一遍20 ...
- linux下不错的小软件
1.Shutter截图软件 可以完成基本截图功能,而且还有图片编辑功能,可以涂鸦添加水印等. 以下的截图全部归功于shutter软件. 2.VLC media player 媒体播放器 3.Termi ...
- hdu 5063 不错的小想法题(逆向处理操作)
题意: 刚开始的时候给你一个序列,长度为n,分别为a[1]=1,a[2]=2,a[3]=3,a[4]=4...a[n]=n,然后有4种操作如下: Type1: O 1 call fun1( ...
- HDU 4814 Golden Radio Base 小模拟
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4814 题意:黄金比例切割点是,如今要求把一个10进制的的数转化成一个phi进制的数,而且不能出现'11'的 ...
- [LuoguP4711]分子质量(小模拟+玛丽题)
--这个题我居然可以把他\(1A\)--真是让我不知其可\(qwq\) \(Link\) \(emmmm\)好像发现了什么固定的套路(?)-- 大概就是这种题总会有 1.读入数 方案:快读即可. 2. ...
- hdu4515 小模拟
题意: 给你当期日期,问前D天和后D天的年月日. 思路: 直接模拟就行了水题,对了别忘了题目2013,3,5要输出这样的2013/03/05. #include<stdio ...
- 齐博x1一段不错的小js提高一点点阅读体验 计算本文阅读所需的时长
如图所示很多比较大的站点都有这样的一个小玩意 就是本文有多少字 阅读需要多少时间. 一段小小的js就可以实现,当然了php也可以功能太小了不值得做钩子或者插件自己需要的话再模板加一下吧. <sc ...
- hdu 4523 威威猫系列故事——过生日 小模拟
威威猫系列故事——过生日 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...
随机推荐
- 剑指 Offer 59 - II. 队列的最大值--滑动窗口的建模+Deque的基本使用(常用方法)
剑指 Offer 59 - II. 队列的最大值 题目链接 package com.walegarrett; /** * @Author WaleGarrett * @Date 2020/12/3 1 ...
- 关于KMP算法中,获取next数组算法的理解
参考:KMP入门级别算法详解--终于解决了(next数组详解) https://blog.csdn.net/lee18254290736/article/details/77278769 在这里讨论的 ...
- RabbitMQ初步使用,简洁介绍。
RabbitMQ是一种越来越流行的开源,快速消息代理,它使用Erlang编写并基于Open Telecom Platform框架构建.它实现了高级消息队列协议(AMQP),用于在进程,应用程序和服务器 ...
- Flask-SQLAlchemy使用
Flask-SQLAlchemy 使用起来非常有趣,对于基本应用十分容易使用,并且对于大型项目易于扩展. 官方文档:https://flask-sqlalchemy.palletsprojects.c ...
- rest framework Response
回应 不同于基本的HttpResponse对象,TemplateResponse对象保留先前由视图提供给计算响应上下文的细节.该响应的最终输出,不计算直到需要它,以后在响应过程. - Django文档 ...
- 04-Spring自定义标签解析
自定义标签的解析 这一篇主要说明自定义标签的解析流程,除了 bean.alias.import.beans之外的标签,都属于自定义标签的范围,自定义标签的解析需要命名空间配合, 获取对应的命名空间 根 ...
- css实现一个电影卡片
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- POJ1979_Red and Black(JAVA语言)
思路:bfs裸题. 对这种迷宫问题的bfs,我们把坐标点用一个class来存储,并放入队列进行求解. //一直接收不了输入,找了一个多小时的问题,居然是行和列搞反了ORZ Red and Black ...
- 4、MyBatis教程之配置解析
5.配置解析 核心配置文件 mybatis-config.xml 系统核心配置文件 MyBatis 的配置文件会深深影响 MyBatis 行为的设置和属性信息. 能配置的内容如下: configura ...
- salesforce零基础学习(一百零二)Limitation篇之 CPU Limit
本篇参考: https://help.salesforce.com/articleView?id=000339361&type=1&mode=1 https://developer.s ...