求助:这个解题思路为什么错误?

news/2024/10/18 14:13:17/文章来源:https://www.cnblogs.com/danlis/p/18474142

题目完美的数组:
一个数组被称为完美的,当且仅当其中存在一个元素,它的值是除了它之外剩下的所有元素的和。
我现在获得了一个数组,想去掉数组中的一个元素,使得这个数组变成完美的。
我想知道这个数组有几种方案可以变成完美的。当去掉的元素在原数组中的位置不同时,即为不同的方案。
输入格式
输入的第一行包含一个整数n(2 ≤n ≤ 2x 10^5)。
输入的第二行包括 n 个整数,为小黑获得的数组里面的每个元素 a(2 < ai < 10^6)。
输出格式
输出有两行。
第一行是方案的个数上。第二行有上 个用单个空格分开的整数,分别表示去掉的元素在原数组中的位置(按照输入的顺序)
说明:如果没有方案,输出一个0即可。
样例输入 1
5
2 5 1 2 2
样例输出 1
3
1 4 5
样例输入 2
4
8 3 5 2
样例输出 2
2
1 4

我的方案:
一组数,求出总和sum,遍历去除每个数后a,实际上就是b+c,那么只要判断这个b+c=2*b的b是否存在就可以了。
这里还需要排除掉万一刚好b实际上是a的情况。

我的代码:

#include<bits/stdc++.h>
using namespace std;
int f[1000005], a[100005];
int main(){int n;cin >> n;long long sum=0;for(int i=0;i<n;i++){scanf("%d",&a[i]);f[a[i]]++;sum+=a[i];}int cnt=0;vector<int> vec;for(int i=0;i<n;i++){long long temp=sum-a[i];if(temp%2==0&&f[temp/2]){if(a[i]!=temp/2){vec.push_back(i+1);cnt++;}else if(f[temp/2]>1){vec.push_back(i+1);cnt++;}}}printf("%d\n", cnt);for(int i=0;i<vec.size();i++){printf("%d ", vec[i]);}return 0;
}

参考代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 9;
int f[N], a[N];
vector<int> v;
int main() {int n, ma = -1;long long sum = 0;cin >> n;for (int i = 0; i < n; i++) {cin >> f[i];a[i] = f[i];sum += f[i];}sort(f, f + n);for (int i = 0; i < n; i++) {if (a[i] == f[n - 1]) {if (sum - a[i] - f[n - 2] == f[n - 2]) {v.push_back(i + 1);}} else {if (sum - a[i] - f[n - 1] == f[n - 1]) {v.push_back(i + 1);}}}cout << v.size() << endl;for (int i = 0; i < v.size(); i++) {if (i == v.size() - 1) {cout << v[i] << endl;} else {cout << v[i] << ' ';}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/816855.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记上报信息格式异常问题的解决

本文记述遇到字符串中包含无效字符时的格式化异常问题的全过程。本文记述解决上报信息格式异常问题的全过程。 问题描述 生产环境监控上报无法解析终端信息,通过日志发现是PCN字段前面缺失#号,导致解析程序解析失败。正常情况下,应该展示如下内容:HD1234#PCN1234发生错误情…

云存储图片生成缩略图开发

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

PHP简介与开发环境搭建

PHP简介与开发环境搭建 一、PHP简介 PHP,全称PHP: Hypertext Preprocessor(超文本预处理器),是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发。PHP由Rasmus Lerdorf在1994年创建,最初是为了维护个人网页而制作的简单程序,后来逐渐发展成为功能强大的脚本语言。PH…

2153: 【例8.3】计算球的体积 球的体积公式

include <bits/stdc++.h> using namespace std; double r, pi=3.14; int main( ) { cin >> r; cout << fixed << setprecision(2)<< 4.0/3.0pirrr; return 0; } 球体是一个半圆绕直径所在直线旋转一周所成的空间几何体,简称球。球体是有且只有一…

深入理解浮点数的运算

浮点数的运算步骤 浮点数的加减运算一般由以下五个步骤完成:对阶、尾数运算、规格化、舍入处理、溢出判断 所谓对阶是指将两个进行运算的浮点数的阶码对齐的操作。对阶的目的是为使两个浮点数的尾数能够进行加减运算。因为,当进行 $ M_{x} \times 2^{E_{x}}$与 $ M_{y} \time…

轻松上手-识图文字朗读

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

mysql语法-DMLDQL

1.DML操作数据——添加、修改、删除 (1)添加数据:实例(2)修改数据实例注意:修改时如果update语句不加where条件,则会把表中所有数据都修改了! (3)删除数据:实例2.DQL查询 查询语法(1)基础查询:实例(2)条件查询:

免费使用AI写作助手,为你轻松打造爆款文章

在当今内容为王的时代,一篇高质量的文章能够迅速抓住读者的眼球,提升个人或品牌的曝光度。但对于许多创作者而言,灵感枯竭和写作效率低下是常见的挑战。此时,免费AI写作助手的出现,为解决这些问题提供了新的可能性。以下是这款AI写作助手的独特魅力和使用指南。一、AI写作…

从组合优化问题建模到贪心法求解以简单调度为例

此为课题组所指导本科生和低年级硕士生学习组合优化问题汇报 所用教材:北京大学屈婉玲教授《算法设计与分析》 课程资料:https://www.icourse163.org/course/PKU-1002525003 承诺不用于任何商业用途,仅用于学术交流和分享更多内容请关注课题组官方中文主页:https://JaywayX…

python: invalid value encountered in divide以及invalid value encountered in double_scalars报错

运行命令python eqtl_prepare_expression.py data.tpm.gct data.reads_count.gct --tpm_threshold 0.1 --count_threshold 2 --sample_frac_threshold 0.2 --normalization_method tmm --output data.txt时出现了报错“invalid value encountered in divide”以及“invalid val…

java报错大合集

​D:\代码\Mybatis-84\src\test\java\com\lu\TestNews.java:100:39 java: 找不到符号符号: 方法 of(int,int)位置: 接口 java.util.List解决idea中的jdk变成1..8了而List.of()是9出的所有报错,改回17 在“class java.lang.String”中没有名为“name”的属性的 getter纯属粗心…

DataDream:调一调更好,基于LoRA微调SD的训练集合成新方案 | ECCV24

尽管文本到图像的扩散模型已被证明在图像合成方面达到了最先进的结果,但它们尚未证明在下游应用中的有效性。先前的研究提出了在有限的真实数据访问下为图像分类器训练生成数据的方法。然而,这些方法在生成内部分布图像或描绘细粒度特征方面存在困难,从而阻碍了在合成数据集…