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 ...
随机推荐
- PAT-1064(Complete Binary Search Tree)JAVA实现
Complete Binary Search Tree PAT-1064 本次因为涉及到完全二叉排序树,所以可以使用数组的形式来存储二叉排序树 对输入序列排序后,得到的是中序遍历二叉排序树的序列.对这 ...
- 阅读源码,HashMap回顾
目录 回顾 HashMap简介 类签名 常量 变量 构造方法 tableSizeFor方法 添加元素 putVal方法 获取元素 getNode方法 总结 本文一是总结前面两种集合,补充一些遗漏,再者 ...
- 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul
本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...
- C# 应用 - 多线程 5) 死锁
两个线程中的每一个线程都尝试锁定另外一个线程已锁定的资源时,就会发生死锁. 两个线程都不能继续执行. 托管线程处理类的许多方法都提供了超时设定,有助于检测死锁. 例如,下面的代码尝试在 lockObj ...
- python基础学习之字符串的功能方法
字符串:str的功能记录(该类需要记忆) .isdecimal():意思是判断是否由数字构成,仅仅可以解析"123" a='123' d=a.isdecimal() p ...
- Android的Proxy/Delegate Application框架
转自:http://blogs.360.cn/360mobile/2013/11/25/proxydelegate-application/#comment-77 有的时候,为了实现一些特殊需求,如界 ...
- 基础篇:JAVA引用类型和ThreadLocal
前言 平时并发编程,除了维护修改共享变量的场景,有时我们也需要为每一个线程设置一个私有的变量,进行线程隔离,java提供的ThreadLocal可以帮助我们实现,而讲到ThreadLocal则不得不讲 ...
- P1055_ISBN号码(JAVA语言)
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号), 最后一位是 ...
- 攻防世界 reverse parallel-comparator-200
parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/sc ...
- 攻防世界 reverse leaked-license-64
mark一下,以后分析 原文:http://sibears.ru/labs/ASIS-CTF-Quals-2016-Leaked_License/ [ASIS CTF Quals 2016] - 泄露 ...