首页 > 其他分享 >[ABC133D] Rain Flows into Dams 题解

[ABC133D] Rain Flows into Dams 题解

时间:2024-08-21 16:39:52浏览次数:12  
标签:int Dams 题解 into tot tot2 cdots ans

思路

其实就是一道数学题。

设每座山的水量为 $ans_i$,大坝的水量为 $w_i$,则根据题意可以得到以下方程:

$$\begin{cases}w_i=\frac{ans_i+ans_{i+1}}{2}&i<n\w_i=\frac{ans_i+ans_1}{2}&i=n\end{cases}$$

所以只要求出任意一个 $ans$ 就可以求出剩余的 $ans$,这里我选择求 $ans_1$ 的值。

将所有 $w_i$ 加起来可以得到:
$$w_1+w_2+\cdots+w_n=ans_1+ans_2+\cdots+ans_n$$

将所有 $i$ 为奇数的 $w_i$ 加起来可以得到:
$$ w_1+w_3+\cdots+w_n=\frac{2ans_1+ans_2+\cdots+ans_n}{2}$$

于是将第二个式子的两倍与第一个式子相减便可以得到 $ans_1$。

剩下的 $ans$ 就一个一个推就行了。

代码

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],tot,tot2;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		tot+=a[i];
		if(i%2==1) tot2+=a[i];
	}
	tot2=tot2*2-tot;
	cout<<tot2<<" ";
	a[0]=tot2;
	for(int i=1;i<=n-1;i++){
		a[i]=a[i]*2-a[i-1];
		cout<<a[i]<<" ";
	}
	return 0;
}

标签:int,Dams,题解,into,tot,tot2,cdots,ans
From: https://www.cnblogs.com/WuMin4/p/18371959

相关文章

  • CF1264D1 题解
    blog。写一个题解区没有的蠢做法,不依赖dp但是很难转到HardVersion(对于已经确定的序列,深度有单调性。就是如果答案为\(x\),那么肯定能选出深度为\(1\simx\)的子序列。记\(\operatorname{check}_s(x)\)表示check序列\(s\)能否选出深度为\(x\)的子序列。考虑如何c......
  • 题解:AT_abc140_e [ABC140E] Second Sum
    思路:双向链表+组合数学(不过你要用单调栈也没人拦着你)我们现在先抛开题面,先换个思路。我们现在求:这个数能做多少个区间的次大值。我们现在设\(l1,l2,r1,r2\)分别为左边第一个比这个数大的id,第二个比这个数大的id,右边第一个比这个数大的id,第二个比这个数大的id。竟然是......
  • 题解:Codeforces Round 967 (Div. 2) [暴力/贪心]
    A.MakeAllEqualtimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputYouaregivenacyclicarray\(a_1,a_2,\ldots,a_n\).Youcanperformthefollowingoperationon\(a\)atmost\(n-......
  • 题解 |栈| #中缀表达式求值!!!!#
    描述请写一个整数计算器,支持加减乘三种运算和括号。数据范围:0≤∣s∣≤1000≤∣s∣≤100,保证计算结果始终在整型范围内要求:空间复杂度: O(n)O(n),时间复杂度 O(n)O(n)示例1输入:"1+2"返回值:3示例2输入:"(2*(3-4))*5"返回值:-10示例3输入:"3+2*3*4-1"返回值:26一、使......
  • [ABC132F] Small Products 题解
    题意一句话题意不用再翻译了吧。思路先考虑朴素的dp,设\(dp_{i,j}\)表示长度为\(i\)结尾数字为\(j\)的序列的方案数,状态很好转移:\[dp_{i,j}=\sum_{a=1}^{\lfloor\frac{N}{j}\rfloor}dp_{i-1,a}\]这样时间复杂度是\(\Theta(nk)\)的,显然过不了。考虑优化这个dp。......
  • [ABC156E] Roaming 题解
    前言这哪有蓝,评分似乎有点过了。思路既然是要统计每个房间人数的排列,那我们就枚举把所有人都放到\(i\)个房间里的方案数,这个用插板法解决,把所有人都放到\(i\)个房间里也就是把他们分成\(i\)份,这一部分的答案就是在\(n\)个人的\(n-1\)个空中插入\(i-1\)块隔板的方案......
  • 题解:P10724 [GESP202406 七级] 区间乘积
    思路当一个数是完全平方数的时候,它的所有质因子的次数都是偶数。记\(x\)的质因子为\(p_1^{q1}\timesp_2^{q2}\timesp_3^{q3}...\timesp_v^{qv}\)。这些数可以通过次数的奇偶性用一个\(v\)位的二进制串\(B\)表示,\(B_i\)为\(0\)说明\(q_i\)为偶数,\(B_i\)为\(......
  • [题解]P3311 [SDOI2014] 数数
    P3311[SDOI2014]数数看到多模式匹配,我们考虑先对所有模式串建立AC自动机。然后发现这道题和P4052文本生成器(题解)挺像的,后者让求包含至少一个模式串的个数,这道题让求一个也不包含的个数,这个就是一个用不用\(26^m\)去减的问题,很好处理。但这道题还多了一个条件,“幸运数”必须\(......
  • Prometheus部署以及问题解决
    Prometheus作用:Prometheus监控(PrometheusMonitoring)是一种开源的系统监控和警报工具。它最初由SoundCloud开发并于2012年发布,并在2016年加入了云原生计算基金会(CNCF)。Prometheus监控旨在收集、存储和查询各种指标数据,以帮助用户监视其应用程序和系统的性能和运行状态。部署流......
  • 题解:CF454B Little Pony and Sort by Shift
    题目描述题目传送门给定一个长度为$n$的数组$a$,每次可以将最后一个元素移动到第一个,问:至少需要几次操作,让序列从小到大排好序,若无解输出$-1$。算法1(暴力枚举)不难想到,将最后一个元素拼接在第一个元素之前,就可以实现将链转换成环,再依次遍历在数组$a_i$中长度为$n$的......