[Codeforces1009E]Intercity Travelling 数学题

2023-11-21 12:10

本文主要是介绍[Codeforces1009E]Intercity Travelling 数学题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目传送:http://codeforces.com/problemset/problem/1009/E

题目大意

      给你一个长度为n的序列a,a[i]代表连续走第 i km时,第 i km的花费。现有一段长度为n km的路,输出从头走到尾的花费的期望*2n-1(一定是个整数)对998244353取模后的结果。

输入格式

      第一行一个整数 n ,意义如题目大意所述。

      第二行 n 个整数,代表 a1, a2, …, an

输出格式

      一个整数,为花费的期望*2n-1,答案对998244353取模。

数据范围

      1 <= n <= 106,1 <= ai <= 106


解法

      首先答案的期望为image,乘上2n-1其实就是每种情况的花费之和。

      我们考虑每一位对答案的贡献。

      考虑第 i 位为连续的第 j 段,那么它的贡献就是image。第 i 位只能是当前连续的第1~i,但当它为第 i 段时,只有2n-i种情况,所以第 i 位贡献为:

image

      枚举每一位,总共的贡献就是:

image

      貌似时间会炸,但如果我们把它变个型:

image

      从上面那张图到这张图的第一行这一步变化可以用加的次数分析。

      然后我们只需枚举一层1~n-1就可以求出答案了,当然,中途一定要记得随时取模,否则爆long long(前两次提交的悲惨经历)。

      提交记录和代码:

image

  1 #include <cstdio>
  2 #include <cstring>
  3 #include <iostream>
  4 #define P 998244353
  5 using namespace std;
  6 
  7 typedef long long LL;
  8 LL n, a[1000005], ans, p = 1;
  9 
 10 int main()
 11 {
 12 	scanf("%I64d", &n);
 13 	for(int i = 1; i <= n; i++)
 14 		scanf("%I64d", a + i);
 15 	for(int i = n - 1; i > 0; p = (p << 1) % P, i--)
 16 		ans = (ans + (n + 2 - i) * p % P * a[i] % P) % P;//随时mod P以免爆炸 
 17 	printf("%I64d\n", (ans + a[n]) % P);
 18 
 19 	return 0;
 20 }//Rhein_E
View Code

转载于:https://www.cnblogs.com/Rhein-E/p/9334401.html

这篇关于[Codeforces1009E]Intercity Travelling 数学题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

数学题--2860. 让所有学生保持开心的分组方法数

2860. 让所有学生保持开心的分组方法数 给你一个下标从 0 开始、长度为 n 的整数数组 nums ,其中 n 是班级中学生的总数。班主任希望能够在让所有学生保持开心的情况下选出一组学生: 如果能够满足下述两个条件之一,则认为第 i 位学生将会保持开心: 这位学生被选中,并且被选中的学生人数 严格大于 nums[i] 。这位学生没有被选中,并且被选中的学生人数 严格小于 nums[i]

最常用的SAT数学题解答方法分享

下面为大家总结的是一些最常见的SAT数学题的解答方法。SAT数学题的备考对于中国考生来说难度不是很大,但是如果能够掌握更多的方法,会让大家的答题效果更好,正确率也更高。下面我们来看看详细内容吧。   1. 代入法-----------最常见的方法,适用于所有数学题目,只要是答案中有确切的数目。   例题:If x and y are two different integers and t

【数学题-递推找规律】BNU 4225 杨辉三角形

【题目链接】click here~~ 【题目大意】 LZM 同学比较牛, Lsy 最近也越来越生猛,他们思路快,代码速度神勇。近期惊闻此二人均要参加校赛,队里决定出些题目卡他们,因为他们的罢工给题目组留下了繁重的负担……(报复报复) 于是, XsugarX 瞄准了 LZM 不太喜欢看的数学题目以及 Lsy 猜公式的喜好,奸笑中( ^.^ )。这个数学问题是个比较古老的问题,有如下

洛谷 P10584 [蓝桥杯 2024 国 A] 数学题(整除分块+杜教筛)

题目 思路来源 登录 - Luogu Spilopelia 题解 参考了两篇洛谷题解,第一篇能得出这个式子,第二篇有比较严格的复杂度分析 结合去年蓝桥杯洛谷P9238,基本就能得出这题的正确做法 代码 #include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<map>#include<uno

nyoj-291-LK的数学题

//法一 #include<stdio.h> int eular(int n) {     int i,m=1;     for(i=2;i*i<=n;i++)     if(n%i==0)     {         n/=i;         m*=i-1;         while(n%i==0)         {             n/=i;             m*=i;

【C++题解】1265. 爱因斯坦的数学题

问题:1265. 爱因斯坦的数学题 类型:简单循环 题目描述: 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨 2 阶,则最最后剩一阶,若每步跨 3 阶,则最后剩 2 阶,若每步跨 5 阶,则最后剩 4 阶,若每步跨 6 阶则最后剩 5 阶。 只有每次跨 7 阶,最后才正好一阶不剩。 请问这条阶梯最少共有多少阶? 输入: 无。 输出: 这条阶梯最少的阶数。 完整代

【NOI-题解】1468. 小鱼的航程1074 - 小青蛙回来了1261. 韩信点兵1254. 求车速1265. 爱因斯坦的数学题

文章目录 一、前言二、问题问题:1468. 小鱼的航程问题:1074 - 小青蛙回来了问题:1261. 韩信点兵问题:1254. 求车速问题:1265. 爱因斯坦的数学题 三、感谢 一、前言 本节主要对循环中需要流程控制的题目进行讲解,包括《1468. 小鱼的航程》《1074 - 小青蛙回来了》《1261. 韩信点兵》《1254. 求车速》《1265. 爱因斯坦的数学题》题目。

zoj 2027 Travelling Fee

题意:求从起点除法到终点的最少费用,题目比一般的最短路径多了个限制条件,可以免去花费最多的一条边的费用。 思路:用一个数组maxi[i][j]记录从i到j的路径中,一条路最多花费多少,将递推式改成 edge[i][j] = min (edge[i][k] + edge[k][j] - max(maxi[i][k],maxi[k][j]) , edge[i][j] - maxi[i][j])

51nod 1847 奇怪的数学题

Description 给出 N,K ,请计算下面这个式子: ∑Ni=1∑Nj=1sgcd(i,j)k 其中,sgcd(i, j)表示(i, j)的所有公约数中第二大的,特殊地,如果gcd(i, j) = 1, 那么sgcd(i, j) = 0。 考虑到答案太大,请输出答案对2^32取模的结果. 1≤N≤109,1≤K≤50 样例解释: 因为gcd(i, j)=1时sgcd(i,j)

hdu1271整数对 (数学题)

Problem Description Gardon和小希玩了一个游戏,Gardon随便想了一个数A(首位不能为0),把它去掉一个数字以后得到另外一个数B,他把A和B的和N告诉了小希,让小希猜想他原来想的数字。不过为了公平起见,如果小希回答的数虽然不是A,但同样能达到那个条件(去掉其中的一个数字得到B,A和B之和是N),一样算小希胜利。而且小希如果能答出多个符合条件的数字,就可以得到额外的糖