zoukankan      html  css  js  c++  java
  • HNOI2017 day1 T3 礼物

    题目大意:

    我的室友最近喜欢上了一个可爱的小女生。马上就要到她的生日了,他决定买一对情侣手
    环,一个留给自己,一个送给她。每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮
    度。
    但是在她生日的前一天,我的室友突然发现他好像拿错了一个手环,而且已经没时间去更
    换它了!他只能使用一种特殊的方法,将其中一个手环中所有装饰物的亮度增加一个相同的自
    然数 c(即非负整数)
    。并且由于这个手环是一个圆,可以以任意的角度旋转它,但是由于上面
    装饰物的方向是固定的,所以手环不能翻转。需要在经过亮度改造和旋转之后,使得两个手环
    的差异值最小。
    在将两个手环旋转且装饰物对齐了之后,从对齐的某个位置开始逆时针方向对装饰物编号
    1,2,...,n,其中 n 为每个手环的装饰物个数,第 1 个手环的 i 号位置装饰物亮度为 x i ,第 2 个手
    环的 i 号位置装饰物亮度为 y i ,两个手环之间的差异值为(参见输入输出样例和样例解释):
    n
    ∑(x i − y i ) 2
    i=1
    麻烦你帮他计算一下,进行调整(亮度改造和旋转),使得两个手环之间的差异值最小,
    这个最小值是多少呢?

    题解:

    因为在x中加等于在y中减,我们只考虑在y中加减。

    sigma{(x[i]-(y[i]+c))^2}=sigma{x[i]^2+y[i]^2+c^2+2*c*y[i]-2*x[i]*y[i]-2*c*x[i]}

    由于x[i]^2和y[i]^2]是定值,我们不考虑。那么就只剩n*c^2+2*c*(sumy-sumx)-2*sigma{x[i]*y[i]}

    前面可以配方算出最小值,后面可以通过fft算出最小值。

  • 相关阅读:
    debian 登录CUPS 管理界面报错
    Shell脚本调试技术
    贴个ALSA例程
    产业生态圈和生态圈
    开个帖,开始学习shell编程
    Lua源码阅读建议
    Flash, EEPROM, SPI Flash diff
    makefile中的notdir,wildcard和patsubst
    quartus II使用零星记录
    Hello ZED
  • 原文地址:https://www.cnblogs.com/longshengblog/p/6722320.html
Copyright © 2011-2022 走看看