• BZOJ 1011: [HNOI2008]遥远的行星( )


    因为允许5%的误差..把连续一段的j-i看作一个数..然后记个前缀和就好了... 

    -------------------------------------------------------------------------

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
     
    using namespace std;
     
    typedef long long ll;
     
    const int maxn = 100009;
     
    ll M[maxn];
    int N;
    double A;
     
    void Solve(int l, int r, int p) {
    double ans = 0;
    if(r - l <= 200) {
    for(; l <= r; l++)
    ans += (double) (M[l] - M[l - 1]) / (p - l);
    } else {
    while(l <= r) {
    int _r = min(r, l + 200);
    ans += (double) (M[_r] - M[l - 1]) / (p - (l + _r) / 2);
    l = _r + 1;
    }
    }
    printf("%.7lf ", ans * (M[p] - M[p - 1]));
    }
     
    int main() {
    scanf("%d%lf", &N, &A);
    M[0] = 0;
    for(int i = 1; i <= N; i++) {
    scanf("%lld", M + i);
    M[i] += M[i - 1];
    }
    for(int i = 1; i <= N; i++)
    Solve(1, floor(A * i), i);
    return 0;
    }

    -------------------------------------------------------------------------

    1011: [HNOI2008]遥远的行星

    Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge
    Submit: 2869  Solved: 1031
    [Submit][Status][Discuss]

    Description

    直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用。请计算每颗行星的受力,只要结果的相对误差不超过5%即可.

    Input

    第一行两个整数N和A. 1<=N<=10^5.0.01< a < =0.35 
    接下来N行输入N个行星的质量Mi,保证0<=Mi<=10^7

    Output

    N行,依次输出各行星的受力情况

    Sample Input

    5 0.3
    3
    5
    6
    2
    4

    Sample Output

    0.000000
    0.000000
    0.000000
    1.968750
    2.976000

    HINT

    精确结果应该为0 0 0 2 3,但样例输出的结果误差不超过5%,也算对

    Source

  • 相关阅读:
    Jmeter 脚本录制
    Scrapy 爬虫模拟登陆的3种策略
    Scrapy Shell
    Ipython
    XPath helper
    python3 接口测试数据驱动之操作mysql数据库
    Pandas 基础(17)
    Pandas 基础(16)
    在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
    Pandas 基础(15)
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/5008343.html
Copyright © 2020-2023  润新知