CUIT ACM Personal Training 11.27(FM)G - Increase and Decrease

探讨了一个算法问题,即通过特定操作使数组中拥有尽可能多的相同元素,并给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

G - Increase and Decrease
Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

Description

Polycarpus has an array, consisting of n integers a1, a2, ..., an. Polycarpus likes it when numbers in an array match. That's why he wants the array to have as many equal numbers as possible. For that Polycarpus performs the following operation multiple times:

  • he chooses two elements of the array aiaj (i ≠ j);
  • he simultaneously increases number ai by 1 and decreases number aj by 1, that is, executes ai = ai + 1 and aj = aj - 1.

The given operation changes exactly two distinct array elements. Polycarpus can apply the described operation an infinite number of times.

Now he wants to know what maximum number of equal array elements he can get if he performs an arbitrary number of such operation. Help Polycarpus.

Input

The first line contains integer n (1 ≤ n ≤ 105) — the array size. The second line contains space-separated integers a1, a2, ..., an (|ai| ≤ 104) — the original array.

Output

Print a single integer — the maximum number of equal array elements he can get if he performs an arbitrary number of the given operation.

Sample Input

Input
2
2 1
Output
1
Input
3
1 4 1
Output
3


题解:这个题的意思是给你n个数字,让你每次对任意两个数字进行一个加一,一个减一的操作,求出最后有多少相同个数。
这道题也是一个贪心的算法,我们可以将这些数字比喻成一堆一堆的货物,那个操作其实就是将一堆上面的一件货物移到另一堆上面,最后输出最多有多少相同的堆数。其实这个结果只有两个,便是n与n-1,为什么呢?n的情况很好理解,当n个数字的和可以整除n时,也就是说最后可以平均分,那么最多就有n个相同的。n-1的情况就是n个数字的和不可以整除n时,那么这个时候,我们大可以,将前n-1堆每一堆只剩一件货物,将其余的全部移到最后一堆上面,那么就有n-1个相同的了。

AC代码如下:
#include<bits/stdc++.h>
using namespace std;

int A[100008];
int n,sum;

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){scanf("%d",&A[i]);sum+=A[i];}
    if(sum%n==0) cout<<n<<endl;
    else cout<<n-1<<endl;
    return 0;
}



(venv) PS E:\cuit一步到胃1\Flask_project> flask run Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "D:\python\cuit\venv\Scripts\flask.exe\__main__.py", line 7, in <module> sys.exit(main()) ~~~~^^ File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 1064, in main cli.main() ~~~~~~~~^^ File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 1363, in main rv = self.invoke(ctx) File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 1830, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 1226, in invoke return ctx.invoke(self.callback, **ctx.params) ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 794, in invoke return callback(*args, **kwargs) File "D:\python\cuit\venv\Lib\site-packages\click\decorators.py", line 93, in new_func return ctx.invoke(f, obj, *args, **kwargs) ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 794, in invoke return callback(*args, **kwargs) File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 912, in run_command raise e from None File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 898, in run_command app = info.load_app() File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 313, in load_app app = locate_app(import_name, None, raise_if_not_found=False) File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 236, in locate_app return find_best_app(module) File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 64, in find_best_app app = app_factory() File "E:\cuit一步到胃1\Flask_project\app\__init__.py", line 50, in create_app from app.routes.user import user_bp File "E:\cuit一步到胃1\Flask_project\app\routes\user.py", line 15 db.session.commit() IndentationError: unexpected indent
06-18
(venv) PS E:\cuit一步到胃1\Flask_project> flask db init Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "D:\python\cuit\venv\Scripts\flask.exe\__main__.py", line 7, in <module> sys.exit(main()) ~~~~^^ File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 1064, in main cli.main() ~~~~~~~~^^ File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 1363, in main rv = self.invoke(ctx) File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 1824, in invoke cmd_name, cmd, args = self.resolve_command(ctx, args) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ File "D:\python\cuit\venv\Lib\site-packages\click\core.py", line 1871, in resolve_command cmd = self.get_command(ctx, cmd_name) File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 579, in get_command app = info.load_app() File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 313, in load_app app = locate_app(import_name, None, raise_if_not_found=False) File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 236, in locate_app return find_best_app(module) File "D:\python\cuit\venv\Lib\site-packages\flask\cli.py", line 64, in find_best_app app = app_factory() File "E:\cuit一步到胃1\Flask_project\app\__init__.py", line 50, in create_app from app.routes.user import user_bp File "E:\cuit一步到胃1\Flask_project\app\routes\user.py", line 15 db.session.commit() IndentationError: unexpected indent
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值