Codeforces 1009 E. Intercity Travelling(计数)
1009 E. Intercity Travelling
题意:一段路n个点,走i千米有对应的a[i]疲劳值。但是可以选择在除终点外的其余n-1个点休息,则下一个点开始,疲劳值从a[1]开始累加。休息与不休息等概率,设疲劳值总和的期望为p,求p*2n-1
思路:由于期望乘上了2n-1,所以数学意义就是求所有休息情况下的疲劳值总和。问题转化为,每种疲劳出现的次数Ni。网上题解大多数从组合数的角度计数,可能是我理解能力不够,总觉得讲的不太严谨,推导的过程略显随意,更多像是找规律的结果。琢磨了一会,觉得这样计数更容易理解:
对于疲劳a[1]而言,一个点就能出现。由于第一个点一定是a[1],则第一个点的a[1]的出现次数就是2n-1(后面的n-1个点任取,任取是指从a[1]开始还是接前一个的疲劳,2种情况)。而对于其余的任意一个点,出现a[1]的情况共2n-2种(第一个点固定是a[1],还剩n-2个点任取),这样的点有n-1个。故N1 = 2n-1+(n-1) * 2n-2.
对于疲劳a[2]而言,一次要选连续的两个点才能出现。如果选了1,2两点,那么剩下n-2个点任取,共2n-2。而且对于其余的任意连续两点,第一个点是不会变的,除去本身两个确定,还剩n-3个点任取,共2n-3种情况,这样的连续两点有n-2种。因此N2 = 2n-2 + (n-2) * 2n-3.
写到2就能推广到i:a[i]只能出现在连续的i个点下。于是分开讨论选连续的i个点里是否包含1,包含的话,共2n-i种情况,不包含则有2n-i-1种情况,这样的选法有n-i种。Ni = 2n-i + (n-i) * 2n-i-1.
答案就是∑(Ni * ai)。
代码:
#include<bits/stdc++.h>
#define dd(x) cout<<#x<<" = "<<x<<" "
#define de(x) cout<<#x<<" = "<<x<<"\n"
#define sz(x) int(x.size())
#define All(x) x.begin(),x.end()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> P;
typedef priority_queue<int> BQ;
typedef priority_queue<int,vector<int>,greater<int> > SQ;
const int maxn=1e6+10,mod=998244353,INF=0x3f3f3f3f;
ll a[maxn],pw[maxn];
void init()
{
pw[0]=1;
for (int i=1;i<maxn;++i)
pw[i]=pw[i-1]*2%mod;
}
inline ll add(ll a,ll b)
{
a+=b;
return a>=mod?a-mod:a;
}
int main()
{
ll n;
cin>>n;
init();
for (int i=1;i<=n;++i)
scanf("%lld",&a[i]);
ll ans=0;
for (ll i=1;i<=n;++i)
ans=add(ans,add(pw[n-i],(n-i+mod)%mod*pw[n-i-1]%mod)*a[i]%mod);
cout<<ans;
return 0;
}
Codeforces 1009 E. Intercity Travelling(计数)的更多相关文章
- Codeforces D. Intercity Travelling(区间组合)
题目描述: D. Intercity Travelling time limit per test 1.5 seconds memory limit per test 256 megabytes in ...
- E. Intercity Travelling
E. Intercity Travelling time limit per test 1.5 seconds memory limit per test 256 megabytes input st ...
- Intercity Travelling CodeForces - 1009E (组合计数)
大意: 有一段$n$千米的路, 每一次走$1$千米, 每走完一次可以休息一次, 每连续走$x$次, 消耗$a[1]+...+a[x]$的能量. 休息随机, 求消耗能量的期望$\times 2^{n-1 ...
- Educational Codeforces Round 47 (Rated for Div. 2) :E. Intercity Travelling
题目链接:http://codeforces.com/contest/1009/problem/E 解题心得: 一个比较简单的组合数学,还需要找一些规律,自己把方向想得差不多了但是硬是找不到规律,还是 ...
- Codeforces 1009E Intercity Travelling | 概率与期望
题目链接 题目大意: 一个人要从$A$地前往$B$地,两地相距$N$千米,$A$地在第$0$千米处,$B$地在第$N$千米处. 从$A$地开始,每隔$1$千米都有$\dfrac{1}{2}$的概率拥有 ...
- Educational Codeforces Round 47 (Rated for Div. 2)E.Intercity Travelling
题目链接 大意:一段旅途长度N,中间可能存在N-1个休息站,连续走k长度时,疲劳值为a1+a2+...+aka_1+a_2+...+a_ka1+a2+...+ak,休息后a1a_1a1开始计, ...
- CodeForces - 1009E Intercity Travelling
题面在这里! 可以发现全是求和,直接拆开算贡献就好了 #include<bits/stdc++.h> #define ll long long using namespace std; c ...
- CodeForces 176B Word Cut (计数DP)
Word Cut Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit St ...
- codeforces ~ 1009 B Minimum Ternary String(超级恶心的思维题
http://codeforces.com/problemset/problem/1009/B B. Minimum Ternary String time limit per test 1 seco ...
随机推荐
- Your ApplicationContext is unlikely tostart due to a @ComponentScan of the defau
一.错误提示: Your ApplicationContext is unlikely tostart due to a @ComponentScan of the default package.. ...
- VS 之github
VS 代码发布到TFS上 1. 登录 visualstudio.com. 进入 https://qgb.visualstudio.com Create Project 这里是相当于新建了一个文件夹 ...
- sipp如何避免dead call
uac 和 uas 都加上 -deadcall_wait 0
- go语言入门(7)面向对象编程
1,概述 对于面向对象编程的支持Go 语言设计得非常简洁而优雅.因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继 ...
- Man手册--nmap
目录 nmap使用手册 附录: nmap使用手册 附录: NMAP(1) Nmap Reference Guide NMAP(1) NAME nmap - Network exploration to ...
- Delphi 声明特性
- 抽象类能使用 final 修饰吗?(未完成)
抽象类能使用 final 修饰吗?(未完成)
- Django 外键、多对多插入数据方法
models.py class UserInfo(models.Model): username = models.CharField(max_length=64,db_column='usernam ...
- Python3+Appium学习笔记01-环境配置(上)
公司可能也有关于对app自动化的一些想法,让我去研究下.当然以移动互联网的热度.对于app自动化测试技术听闻已久.也一直想要去学习.正好.这次可以在工作时间中学习.emmm.希望自己能坚持把这个系列更 ...
- cmake学习笔记之add_library、target_link_libraries和link_directories
cmake是Linux(这里默认是Ubuntu系统)下常使用的编译C++的工具,而使用cmake就需要先在CmakeLists.txt文件中对编译规则进行.这里介绍常用的三种指令add_library ...