1899: 985的最大和难题

探讨了985难题中通过变换数字符号来获取最大和的方法,分析了不同情况下最优解的策略,并提供了实现代码。

1899: 985的最大和难题

Time Limit: 1 Sec   Memory Limit: 128 MB

Description

985有2 * n - 1个整数,他每次可以将其中n个数变号,操作次数不限,问他可以得到的最大和。

Input

第一行输入一个整数t,代表有t组测试数据。
每组数据占两行,第一行输入一个整数n,下面一行输入2*n-1个整数a[]。
注:1 <= t <= 32,1 <= n <= 1e3,-1e3 <= a[] <= 1e3。

Output

输出一个整数代表可以得到的最大和。

Sample Input

2
2
1 1 1
2
-10 20 -10

Sample Output

3
40


n=3时的负数变化

(0为负数1为正数)
有一个:
0 1 1 1 1
1 0 0 1 1
1 0 1 0 0
1 1 1 1 1
有两个:
0 0 1 1 1
0 1 0 0 1

1 1 1 1 1
有三个:
0 0 0 1 1

1 1 1 1 1

总结规律:


负数正数
02n-1
n-1
12n-2
n-1n
2n-4
n-3 n+2
…………

可发现若n为奇数时

总可以把负数全部变为正数

当n为偶数时

每次能改变偶数个负数

所以若负数的个数为偶数个

也能全部变为正数

当负数的个数为奇数个

总会留下一个数为负数

(但不一定是原来就有的负数)

为了让总和最大

可以使绝对值最小的数为负数


[cpp]  view plain  copy
 print ?
  1. #include<stdio.h>   
  2. int main() {   
  3.     int T;   
  4.     scanf("%d",&T);   
  5.     while(T--) {   
  6.         int n;   
  7.         scanf("%d",&n);   
  8.         int l=2*n-1;   
  9.         int sum=0,cnt=0,res=99999999;   
  10.         for(int i=0; i<l; i++) {   
  11.             int t;   
  12.             scanf("%d",&t);   
  13.             if(t<0) {   
  14.                 cnt++;   
  15.                 t=-t;   
  16.             }   
  17.             if(res>t)   
  18.                 res=t;   
  19.             sum+=t;   
  20.         }   
  21.         if(n&1||cnt%2==0)   
  22.             printf("%d\n",sum);   
  23.         else  
  24.             printf("%d\n",sum-2*res);   
  25.     }   
  26.     return 0;   
  27. }   
基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值