连通块计数

链接:https://www.nowcoder.com/acm/contest/204/I
来源:牛客网

题目描述

小 A 有一棵长的很奇怪的树,他由 n 条链和 1 个点作为根构成,第 i 条链有 ai 个点,每一条链的一端都与根结点相连。
现在小 A 想知道,这棵长得奇怪的树有多少非空的连通子树,你只需要输出答案对 998244353 取模的值即可

输入描述:

第一行一个正整数 n
第二行 n 个正整数 a1…an

输出描述:

输出答案对 998244353 取模后的值

示例1
输入

2
1 1

输出

6

备注:

1≤ n≤ 105
1≤ ai≤ 107

先贴代码

#include <iostream>
#define ll long long
const ll mod = 998244353;
using namespace std;
int main()
{
	int n;
	scanf("%d", &n);
	ll s1 = 0, s2 = 1, s3 = 0;
	for (int i = 0; i < n; i++)
	{
		scanf("%lld", &s1);
		s2 += s1 * s2;
		s2 %= mod;
		s3 += s1 * (s1 + 1) / 2;
		s3 %= mod;
	}
	printf("%lld\n", (s2 + s3) % mod);
}

自己的思路

挺有意思的一个题目,记录一下,s2表示当前链到达根节点或其他链节点的连通子树的个数,s3表示当前链的内部可以构成的连通子树的个数,不理解不妨到纸上模拟一下,这个是真的妙啊。

全部评论

相关推荐

多多啊&nbsp;多多啊&nbsp;上来四道算法题算法题直播排序,整体比较简单把对象写出来,然后比较规则写明白就OK了。唯一一道A100%的电车充电如何最省钱,到目的地如何充电的钱最少,路上有充电站,每个电站价格不一样。用了DP来做,但感觉是贪心的样子,最后没招了,把不能到的情况给干了出来,过了8%日志分析纠错,滑动窗口,但我最后结果永远少一,过了15%没看,力竭了燃尽了多多&nbsp;以后牛客不用后台找我了,笔试夯爆了
淮竹c:不好意思,打扰大家🙏我是一个拼多多骑手,小电驴的最大电量为C,我的最大电量有1e9这么promax😭😭😭需要从x=0处走到x=L,L足足有1e9那么长处,途中有n个充电站,🙏🙏每个充电站的距离和电价分别为di和pi,初始电量是满的😭😭😭请告诉我到达终点最少要花多少钱😭😭😭求求大家把这些钱转给我
暑期实习笔试记录本
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务