专栏文章
题解:P12006 【MX-X10-T2】[LSOT-4] 网易云
P12006题解参与者 3已保存评论 7
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @miprftaa
- 此快照首次捕获于
- 2025/12/03 16:43 3 个月前
- 此快照最后确认于
- 2025/12/03 16:43 3 个月前
前言
题目背景还是太超标了,跟我的年度曲风一模一样。
解题思路
- 设第 首歌的好听值为 ,则题目给出的条件是 。
- 通过这些方程,我们可以用 表示所有的 。例如:
- 以此类推,可以发现 可以表示为 ,其中 是由 数组决定的常数。
过程分析
- 总的好听值可以表示为 的线性函数:,其中 和 是由听歌操作和 数组决定的常数。
- 如果 ,那么总和与 无关,可以直接计算 。
- 如果 ,则无法确定总和,输出
Impossible。
最终计算
- 对于每次听歌操作 ,对应的 的系数会增加 。
- 将 表示为 ,则总和中 的系数 就为 。
- 如果 ,则总和为 。
是不是觉得很难?
其实主要代码只有 行,已经很简便了。
代码实现
前面讲的思路很详细,就不加注释了。
CPP#include <bits/stdc++.h>
using namespace std;
#define int long long
int s[100010],sum[100010],n,m,a,b,A,B;
signed main(){
cin>>n>>m;
for(int i=1;i<n;i++){
cin>>s[i];
sum[i]=sum[i-1]+((i%2==1)?s[i]:-s[i]);
}
for(int i=0;i<m;i++){
cin>>a>>b;
A+=((a%2==1)?1:-1)*b;
if(a>1){
B+=b*((a%2==1)?sum[a-1]:-sum[a-1]);
}
}
if(A!=0){
cout<<"Impossible";
}else{
cout<<-B;
}
return 0;
}
~一下秒了。~
update:2025.8.3 发现格式不太好看,改了亿点。
相关推荐
评论
共 7 条评论,欢迎与作者交流。
正在加载评论...