【牛客_2020.10.27】飞行棋

2024-01-30 03:32
文章标签 牛客 27 2020.10 飞行棋

本文主要是介绍【牛客_2020.10.27】飞行棋,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

飞行棋


在这里插入图片描述

嫅朑磃淥(解题思路)

我们来进行分类讨论:

i < d i<d i<d
设期望 s s s 次扔到点 1 1 1 ,那么有:
s = d − 2 d − 1 ( s + 1 ) + 1 d − 1 s=\frac{d-2}{d-1}(s+1)+\frac{1}{d-1} s=d1d2(s+1)+d11
解得:
s = d − 1 s=d-1 s=d1
所以 f [ 1 f[1 f[1~ d − 1 ] d-1] d1] 的值就为 d − 1 d-1 d1

i ≥ d i≥d id
我们有 1 d \frac{1}{d} d1 的概率走到 i − d i-d id~ i − 1 i-1 i1 的所有点,且走到 i − d i-d id 不需要回合,那么有:
f [ i ] = ∑ j = i − d + 1 i − 1 f [ j ] + 1 d + f [ i − d ] d f[i] = \frac{\sum_{j=i-d+1}^{i-1}f[j]+1}{d}+\frac{f[i-d]}{d} f[i]=dj=id+1i1f[j]+1+df[id]
但是呢,如果这样的话时间复杂度是 O ( T n d ) O(Tnd) O(Tnd) ,而 2 ≤ d , n ≤ 100000 2≤d,n≤100000 2d,n100000 ,所以这样肯定会爆。我们就用前缀和 s s s 来优化,表达式就变成了这样:
f [ i ] = s [ i − 1 ] − s [ i − d ] + d − 1 d + f [ i − d ] d f[i]=\frac{s[i-1]-s[i-d]+d-1}{d}+\frac{f[i-d]}{d} f[i]=ds[i1]s[id]+d1+df[id]
于是时间复杂度就很优秀的达到了 O ( T n ) O(Tn) O(Tn)

code

#include<iostream>
#include<cstdio>
using namespace std;int T;
int n,d;
double f[100010],s[100010];int main()
{cin>>T;while(T--){scanf("%d%d",&n,&d);f[0]=s[0]=1;for(int i=1;i<d;i++)f[i]=d-1,s[i]=s[i-1]+f[i];for(int i=d;i<=n;i++){f[i]=(s[i-1]-s[i-d]+d-1)/d+f[i-d]/d;s[i]=s[i-1]+f[i];}printf("%.2lf\n",f[n]);}
}

这篇关于【牛客_2020.10.27】飞行棋的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658990

相关文章

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>

牛客小白月赛100(A,B,C,D,E,F三元环计数)

比赛链接 官方讲解 这场比较简单,ABC都很签到,D是个不太裸需要预处理的 B F S BFS BFS 搜索,E是调和级数暴力枚举,F是三元环计数。三元环考的比较少,没见过可能会偏难。 A ACM中的A题 思路: 就是枚举每个边变成原来的两倍,然后看看两短边之和是否大于第三边即可。 不能只给最短边乘 2 2 2,比如 1 4 8 这组数据,也不能只给第二短边乘 2 2 2,比

笔试强训,[NOIP2002普及组]过河卒牛客.游游的水果大礼包牛客.买卖股票的最好时机(二)二叉树非递归前序遍历

目录 [NOIP2002普及组]过河卒 牛客.游游的水果大礼包 牛客.买卖股票的最好时机(二) 二叉树非递归前序遍历 [NOIP2002普及组]过河卒 题里面给的提示很有用,那个马的关系,后面就注意,dp需要作为long的类型。 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息publ

每日OJ_牛客_求和(递归深搜)

目录 牛客_求和(递归深搜) 解析代码 牛客_求和(递归深搜) 求和_好未来笔试题_牛客网 解析代码         递归中每次累加一个新的数,如果累加和大于等于目标,结束递归。此时如果累加和正好等于目标,则打印组合。向上回退搜索其它组合。此题本身就是一个搜索的过程,找到所有的组合。 #include <iostream>#include <cmath>#in

27. Remove Elements

题目: 解答: 类似题26,注意下删除后的元素的移动方式即可 代码: class Solution {public:int removeElement(vector<int>& nums, int val) {if(nums.empty()) return 0;int len = nums.size();int lenafter = 0, head = 0;for(int i

【VB6|第27期】如何在VB6中使用Shell函数实现同步执行

日期:2024年9月1日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083;0.98365 = 0.0006 文

牛客《剑指Offer》 -- 数值的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路 特别注意负数的情况,出现负数,将其转化为正数然后求倒数。 class Solution {public:double Power(double base, int exponent) {double total = 1;bool flag = false

牛客网《剑指Offer》 二进制中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路 负数用补码,其实就是求一个数据在计算机中是存储是怎么样子的。用位运算,就能很好实现。 class Solution {public:int NumberOf1(int n) {int count = 0;int flag = 1;while (flag != 0) {if ((n & f