首页 > 其他分享 >CodeForces 908C New Year and Curling

CodeForces 908C New Year and Curling

时间:2024-08-01 09:56:23浏览次数:12  
标签:Curling int double CodeForces 圆盘 New include 908C

题目链接:CodeForces 908C【New Year and Curling】



思路

       模拟,考虑到两个圆盘可能出现y值相同且相接的情况,所以在判断当前圆盘的y值时循环的范围从在前圆盘的x值左右浮动2r,依次遍历这个范围内的数组y(存储的是当前已经移动了圆盘中的横坐标为i的圆盘的最大的y值),然后可以通过三角形的边长计算出dis,依次枚举每个x取得到的y中的最大值。
image


代码

#include <iomanip>
#include <iostream>
#include <math.h>
using namespace std;

#define ll long long
const int N = 2e3 + 10;

double l, r;
int x[N];
double y[N], mark[N];
int n;

void solve() {
  cin >> n >> r;
  for (int i = 1; i <= n; i++) {
    cin >> x[i];
    double relay = 0;
    for (int j = max(-r * 2, (double)-x[i] + 1); j <= (int)r * 2; j++) {
      double dis = 4 * r * r - j * j;
      if (j == 0 && y[x[i]] == 0)
        dis = r;
      else if (j == 0)
        dis = 2 * r + y[x[i]];
      else if (y[j + x[i]] == 0)
        dis = r;
      else
        dis = sqrt(dis) + y[j + x[i]];
      
      relay = max(relay, dis);
    }
    y[x[i]] = relay;
    mark[i] = relay;
  }

  cout << setprecision(12);
  for (int i = 1; i <= n; i++) {
    cout << mark[i] << " ";
  }
}

int main() {
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}

标签:Curling,int,double,CodeForces,圆盘,New,include,908C
From: https://www.cnblogs.com/againss/p/18336040

相关文章

  • 关于new、delete函数的错误处理(std::nothrow)
    new、delete函数源码注释如下:无参数无参数的new、delete函数,如果调用失败,会抛出bad_alloc异常,需要使用try{}catch(){}语句捕获异常从而进行异常处理。#include<iostream>intmain(){try{while(1){int*p=newint[100000000ul];......
  • new和Override分别有什么作用(什么情况下用new或者Override)
    override用途:override用于在派生类中重写基类中的虚方法或抽象方法。重写的方法必须与基类中的方法具有相同的签名(方法名、参数列表和返回类型)。基类中的方法必须声明为virtual、abstract或已经由另一个override方法重写。多态性:override支持多态性,允许在运行......
  • 编译期new,constexpr虚函数,C++
    标准:C++20环境:VSCodeg++13.2C++20新特性,constexpr虚函数,编译期new表达式,可以在编译期实现多态。示例代码://这段仅仅示例编译期new。structA{constexprA(){p=newint(6);}constexpr~A(){deletep;}constexprautoget()co......
  • 演示 数据类型 数组名[]=new 数据类型[大小],循环输入5个成绩,保存到double数组,并输出
    importjava.util.Scanner;publicclassexercise13{//编写一个main方法publicstaticvoidmain(String[]args){//演示数据类型数组名[]=new数据类型[大小]//循环输入5个成绩,保存到double数组,并输出//步骤//1.创建一个dou......
  • CF568C New Language 题解
    Description将\(\texttt{a}\sim\texttt{a}+l-1\)这\(l\)个字符分成\(\texttt{V,C}\)两个集合。你需要构造一个长度为\(n\)且满足\(m\)个限制且不小于另一个长度为\(n\)的字符串\(s\)的最小字符串。每一个限制为若字符串的第\(p_1\)个位置上的字符\(\in......
  • welcome to my new start
    thisisanewstart.I'mehua'swife.QwQ放个缺省源:#include<bits/stdc++.h>typedeflonglongLL;typedefunsignedlonglongULL;#definerep(i,a,b)for(inti=(a);i<=(b);i++)#defineper(i,a,b)for(inti=(a);i>=(b);i--......
  • How do I increase max_new_tokens
    题意:怎样增加 max_new_tokens 的值问题背景:I'mfacingthiserrorwhilerunningmycode:    运行代码时遇到如下错误:ValueError:Inputlengthofinput_idsis1495,but max_length issetto20.Thiscanleadtounexpectedbehavior.Youshouldcons......
  • JavaScript中的new map()和new set()使用详细(new map()和new set()的区别)
    简介:newMap():在JavaScript中,newMap()用于创建一个新的Map对象。Map对象是一种键值对的集合,其中的键是唯一的,值可以重复。newSet():在JavaScript中,newSet()是用来创建一个新的Set对象的语法。Set对象是一种集合,其中的值是唯一的,没有重复的值。newSet()可以用......
  • Newtonsoft 特性[JsonIgnore ] 对于继承属性的神奇效果
    阅读前请有点基础[JsonIgnore]publicDateTimeCreateTimccc{get;set;}一般用Newtonsoft序列化类时候,如果不要序列化这个属性,在上面加这个特性就好了(ps.这个特性和Newtonsoft和Text.Json的名称重复,注意不要搞错)定义子类和父类,用隐藏基类......
  • CF140E New Year Garland
    题意有\(m\)种小球,用这些小球装饰一棵\(n\)层的圣诞树,每层需要放置\(a_i\)个小球。在每一层中,相邻球颜色不同,且相邻两层球颜色集合不同,求装饰圣诞树的方案数,答案对\(p\)取模。\(1\len,m\le10^6,2\lep\le10^9,1\lea_i\le5000,\sum_{i=1}^na_i\le10^7\qquad\tex......