在幻想乡,雾雨魔理沙是住在魔法之森普通的黑魔法少女。话说最近魔理沙从香霖堂拿到了升级过后的的迷你八卦炉,她迫不及待地希望试试八卦炉的威力。在一个二维平面上有许多毛玉(一种飞行生物,可以视为点),每个毛玉具有两个属性,分值value和倍率mul。八卦炉发射出的魔法炮是一条无限长的直线形区域,可以视为两条倾斜角为α的平行线之间的区域,平行线之间的距离可以为任意值,如下图所示:

蓝色部分上下两条长边之间就是这次八卦炉的攻击范围,在蓝色范围内的毛玉(红点)属于该此被击中的毛玉,如果一个毛玉刚好在边界上也视为被击中。毛玉击中以后就会消失,每次发射八卦炉得到分值是该次击中毛玉的分值和乘上这些毛玉平均的倍率,设该次击中的毛玉集合为S,则分值计算公式为:
Score = SUM{value[i] | i 属于 S} * SUM{mul[i] | i 属于 S} / |S|
其中|S|表示S的元素个数。魔理沙将会使用若干次八卦炉,直到把所有毛玉全部击中。任意两次攻击的范围均不重叠。最后得到的分值为每次攻击分值之和。现在请你计算出能够得到的最大分值。

题解

通过固定角度的直线的高度来确定顺序
然后dp一下即可
dp[i]表示前i个最大值,所以dp[i]=dp[j-1]+(sum[i]-sum[j-1)*(v[i]-v[j-1])/(i-j+1)

代码

#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <cmath>
#include <algorithm>
using namespace std;
const double pi=3.1415926;
struct node{int x,y,v,m;double b;
};
int n;
double sa[2005];
double sm[2005];
node pos[2005];
double arc;
double k;
bool cmp1(node a,node b){return a.b<=b.b;
}
double f[2008];
int main()
{int i,j;scanf("%d",&n);for(i=1;i<=n;i++){int x,y,v,m;scanf("%d%d%d%d",&x,&y,&v,&m);pos[i].x=x;pos[i].y=y;pos[i].v=v;pos[i].m=m;}cin>>arc;double num=arc/180;k=tan(num*pi);for(i=1;i<=n;i++){pos[i].b=pos[i].y-k*pos[i].x;}sort(pos+1,pos+n+1,cmp1);for(i=1;i<=n;i++){sa[i]=sa[i-1]+pos[i].v;sm[i]=sm[i-1]+pos[i].m;}for(i=1;i<=n;i++){for(j=1;j<=i;j++){f[i]=max(f[i],f[j-1]+(sa[i]-sa[j-1])*(sm[i]-sm[j-1])/(i-j+1));}}printf("%.3f",f[n]);
}

P2455雾雨魔理沙相关推荐

  1. 洛谷 P3389 【模板】高斯消元法 × 洛谷 P2455 [SDOI2006]线性方程组

    一.传送门 https://www.luogu.com.cn/problem/P3389 https://www.luogu.com.cn/problem/P2455 二.代码 日--两道题合起来搞了 ...

  2. 【luogu P2455 [SDOI2006]线性方程组】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2455 无解:最后一列对应元素不为0,前面全是0. 无穷解:一行全是0. 嗯...在消元过程中不要直接拿矩阵元 ...

  3. jzoj2555 雾雨魔理沙

    这题的质量还是不错的 其实不难,坑点就在几何上 可以把所有点都映射到Y轴上,这样就方便我们选y上的一段射♂出一炮 只要映射到Y轴上,那其实就是一个简单的DP分段 不难求出(如果你学过三角函数的话),这 ...

  4. 洛谷P2455 [SDOI2006]线性方程组

    高斯消元模板 要求输出解的情况(无穷解/无解) 1. 之前写的丑陋代码 #include <iostream> #include <cstdio> #include <c ...

  5. P2455 [SDOI2006]线性方程组

    题目链接:点击这里 题目大意: 给定一个线性方程组,对其求解 题目分析: 高斯-约旦消元法 选择一个尚未被选过的未知数作为主元,选择一个包含这个主元的方程 通过加减消元,消掉其它方程中的这个未知数 重 ...

  6. 【NOIP2015模拟10.27】魔道研究

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  7. 用关键词搜索店铺列表详情

    一.接口参数说明 根据关键词取商品列表,提取拼多多商品包含标题,宝贝主图.价格.销售量.掌柜昵称,物流费用,店铺所在地,宝贝链接等,价格低至几厘,量大甚至免费,详情请加我,或者私聊我,或者是点击获取k ...

  8. 数据分析与预测(二)——pandas 函数read_csv解析

    ​ 一. 前言 使用pandas做数据处理的第一步就是读取数据,数据源可以来自于各种地方,csv文件便是其中之一.而读取csv文件,pandas也提供了非常强力的支持,参数有四五十个.这些参数中,有的 ...

  9. python深度讲解_《深度剖析CPython解释器》21. Python类机制的深度解析(第五部分): 全方位介绍Python中的魔法方法,一网打尽...

    楔子 下面我们来看一下Python中的魔法方法,我们知道Python将操作符都抽象成了一个魔法方法(magic method),实例对象进行操作时,实际上会调用魔法方法.也正因为如此,numpy才得以 ...

最新文章

  1. 利用Python绘制 3D 体素色温图
  2. Coursera课程Python for everyone:Quiz: Single-Table SQL
  3. sarscape 将dem文件转化成stl_STL源码剖析 阅读笔记(一)介绍
  4. C 语言实例 - 输出九九乘法口诀表
  5. Java实现的一个简单的模板渲染
  6. django - settings.py
  7. python 自然语言处理(四)____词典资源
  8. linux 内核 addr2line,linux内核调试技巧之addr2line
  9. php 使用xunsearch--迅搜
  10. 轻量级openpose解析
  11. JavaScript给网页添加水印
  12. 用计算机打字教案,《打字机》教案
  13. mysql版scott数据库_MySQL中建立Oracle中SCOTT数据示例
  14. TerminateThread的缺点
  15. joinquant量化投资震荡类指标模型的MACD指标是什么?
  16. 几道简单的c语言编程题(1)
  17. 中国人民公安大学(PPSUC)网络对抗技术作业
  18. 深度学习损失函数——“dice_coeff”代码实现
  19. anaconda 安装 PuLP
  20. PyGobject(九十)Pango系列——Pango.Layout

热门文章

  1. 第3章 Pandas数据处理(3.7-3.8)_Python数据科学手册学习笔记
  2. Ubuntu 下使用MTK FLASH TOOLS
  3. Win11账号被锁定无法登录怎么办?Win11账号被锁定无法登录
  4. kingcms php 漏洞,kingcms5.0/5.1漏洞
  5. java美元兑换_代码中的美元$
  6. linux命令详解:tc
  7. matlab有一座小山,那里,有一座哭泣的小山作文1000字
  8. Flash打造星火飘落效果
  9. 设计模式星火01_单例模式
  10. 求一个数除 1 和自身以外的因子