首页 > 其他分享 >[USACO18DEC]Balance Beam P

[USACO18DEC]Balance Beam P

时间:2023-06-22 17:12:36浏览次数:41  
标签:ch int top stk Beam read isdigit USACO18DEC Balance

[USACO18DEC]Balance Beam P

热爱卡精度的你,为什么分数不取模?

既然不去模,那么拿到这个题先想想能不能乱搞过去。

设 \(f_{i,j}\) 表示 \(i\) 点出发至多走 \(j\) 次的最优期望报酬。当 \(j \rightarrow +\infty\) 时视为答案。转移为

\[f_{i,j} = \max\{f_{i, j - 1}, \frac{f_{i - 1, j - 1} + f_{i + 1,j - 1}}{2}\} \]

然后开始画图手模,发现一个下凸包最后会变成一条线段。所以最后的形状就是开始的上凸包,结束。

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

namespace IO {
#define isdigit(x) (x >= '0' && x <= '9')
template<typename T>
inline void read(T &x) {
  x = 0; char ch = getchar(); int f = 0;
  for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1;
  for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';
  if(f) x = -x;
}
template<typename T, typename... Rest>
inline void read(T &x, Rest&... rest) {
  read(x), read(rest...);
}
template<typename T>
inline void write(T x) {
  if(x < 0) putchar('-'), x = -x;
  if(x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
#undef isdigit
}
using namespace IO;

constexpr int N = 1e5 + 10;
int n;
unsigned long long f[N];

int main() {
  read(n);
  for(int i = 1; i <= n; ++i) {
    int x; read(x);
    f[i] = x * 100000ll;
  }
  static int stk[N], top;
  auto slope = [&](int x, int y) {
    return 1.0 * (f[x] - f[y]) / (x - y);
  };
  stk[top = 1] = 0;
  for(int i = 1; i <= n + 1; ++i) {
    while(top > 1 && slope(i, stk[top]) > slope(stk[top], stk[top - 1]))
      --top;
    stk[++top] = i;
  }
  for(int i = 1; i < top; ++i) {
    for(int j = stk[i] + 1; j < stk[i + 1]; ++j) 
      f[j] = ((stk[i + 1] - j) * f[stk[i]] + (j - stk[i]) * f[stk[i + 1]]) / (stk[i + 1] - stk[i]);
  }
  for(int i = 1; i <= n; ++i)
    printf("%llu\n",f[i]);
  return 0;
}

标签:ch,int,top,stk,Beam,read,isdigit,USACO18DEC,Balance
From: https://www.cnblogs.com/DCH233/p/17498006.html

相关文章

  • 微服务 – Spring Cloud – Eureka - RestTemplate和@LoadBalanced 实现服务发现调用(
    背景:服务注册用的是Eureka集群。服务调用用的是注解@LoadBalanced和RestTemplate服务数量两个:order服务和pyment服务(order服务是调用者。payment服务是被调用者)首先将order服务和payment服务注册Eureka集群中。通过order调用payment服务Eureka集......
  • Beamr:CABR(闭环内容自适应编码解决方案)
    ContentAwareABR技术本文将简要介绍一下编码优化领域的一位新贵—Beamr的技术动态。Beamr是内容自适应视频编码与优化解决方案的提供商,致力于为MSO(Multi-SystemOperator,多系统运营商)和OTT(OverTheTop,流媒体服务商)提供视频技术支持,如Hollywoodstudios以及视频......
  • Apache Beam和BigQuery的错误处理(Java SDK)
    设计管道假设我们有一个简单的场景:事件正在流向Kafka,我们希望使用管道中的事件,进行一些转换并将结果写入BigQuery表,以使数据可用于分析。可以在作业开始之前创建BigQuery表,或者Beam本身可以创建它。代码看起来很简单:EventsProcessingOptionsoptions=PipelineOptionsFactory......
  • Balanced Ternary String
    给出一个长为n的只由'1','2','0'组成的字符串,要求改动最少的位置,使'1','2','0'的个数相同(保证n能被3整除),并使改动后的字符串字典序最小。n不大于3∗105贪心思路,从左向右大的变小的,从右向左小的变大的:#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;str......
  • POJ 3264 Balanced Lineup
    思路:线段树求最大值减最小值,每个结点分别维护最大值和最小值即可。#include<cstdio>#include<queue>#include<cstring>#include<iostream>#include<cstdlib>#include<algorithm>#include<vector>#include<map>#include<string>#in......
  • AtCoder Beginner Contest 287 G Balance Update Query
    洛谷传送门AtCoder传送门线段树上二分入门题。考虑一个贪心:每次询问按\(a_i\)从大到小选。正确性显然。考虑动态开点线段树,每个结点\(a_i\in[l,r]\)存\(\sum\limits_{a_i\in[l,r]}b_i\)和\(\sum\limits_{a_i\in[l,r]}a_ib_i\)。线段树上二分找到第一个\(......
  • [USACO07JAN] Balanced Lineup G(树状数组)
    题目大意:给出长度为n的数组和q个询问,每次问(x,y)区间内最大值和最小值的差是多少思路:1.适合用树状数组做此区间求值,首先要明白普通的树状数组的tree[x]表示区间(x-(x&-x),x]的区间和,现在改为求最值,则tree[x]表示为区间(x-(x&-x),x]的最值,建树部分稍作改变即可,询问部分......
  • SBT模版(Size Balanced Tree)
    关于SBT的介绍及学习,请戳这里。 SBT模版:/*************************************************数据结构:SBT(SizeBalancedTree),又称傻逼树;数据域:值域key,左孩子left,右孩子right,保持平衡的size;性质:每棵子树的大小不小于其兄弟的子树大小;插入:插入算法先简单插入节......
  • ltp(六) IRQ之irqbalance01.c源码分析
    前言      本篇文章主要是为了对ltp内irq模块的测试用例之一的irqbalance进行源码分析,作为对内核中断子系统测试项之一,其蕴含的技术知识,还是很值得学习一下的。     irqbalance是什么?项目主页上有以下描述:Irqbalanceisadaemontohelpbalancethecpuload......
  • SpringCloud LoadBalancer
    SpringCloud提供了自己的客户端负载均衡器抽象和实现。对于负载平衡机制,增加了ReactiveLoadBalancer接口,并为其提供了基于RoundRobin和Random的实现。负载均衡策略默认是RoundRobin。支持ServiceInstanceListSupplier的基于服务发现的实现,该实现使用类路径中可用的发现客户端从......