Codeforces 301A. Yaroslav

该博客是Codeforces教程,聚焦Yaroslav and Sequence问题。分析了n为奇数和偶数时的情况,奇数时可通过变换使负数全变为正数;偶数时,偶数个负数可全变正,奇数个负数则绝对值最小的为负其余为正。还提及了Accepted Code、Wrong Answer Cases等内容。

Codeforces Tutorial

A. Yaroslav and Sequence

Problem Analysis

1、当n为奇数的时候,变换n个可以一次增加或减少1个负数,这样可以直到有n个负数,然后全变为整数ok
2、当n为偶数的时候,变换n个可以一次增加或减少2个负数,所以当有偶数个负数时都可以变为正数,当有奇数个负数时,最大和为(绝对值最小的那个为负数,其余的都为正数)。

用例子解释一下上面的内容。

  • n为奇数
    不妨设n=5,有序列-1,-1,-1,-1,-1,-1,-1,-1,-1。可以发现,始终可以做到使得负数的个数小于n/2。序列变为1,1,1,1,1,-1,-1,-1,-1。然后选取n/2+1个正数,n/2个负数,就可以增加一个负数。上例就是是选择312-1。序列变为1,1,1,1,-1,-1,-1,-1,-1。然后一步变为全正。
  • n为偶数
    思路与奇数一样,不同的是对n的划分,n只能划分为n/2-1n/2+1

Acepted Code

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<istream>
#include<cassert>
#include<set>
#define DEBUG(x) cout<<#x<<" = "<<x<<endl
#define DEBUG2(x,y) cout<<#x<<" = "<<x<<" , "\
<<#y<<" = "<<y<<endl
using namespace std;
typedef long long ll;
const int MAXN=300;
int n;
int a[MAXN];
int main()
{
//    freopen("in.txt","r",stdin);
    scanf("%d",&n);
    for(int ii=0;ii<2*n-1 ;ii++ ){
        scanf("%d",&a[ii]);
    }
    int ans=0;
    if(n%2){
        for(int ii=0;ii<2*n-1 ;ii++ ){
            ans+=abs(a[ii]);
        }
    }
    else {
        int cnt=0;
        int absmin=1e9;
        for(int ii=0;ii<2*n-1 ;ii++ ){
            if(a[ii]<0)cnt++;
            absmin=min(absmin,abs(a[ii]));
            ans+=abs(a[ii]);
        }
        if(cnt%2)ans-=2*absmin;
    }
    printf("%d\n",ans);
}

Wrong Answer Cases

What I Learn

  • 奇偶性遇到的比较多

Reference

https://blog.csdn.net/xh_reventon/article/details/8892546

转载于:https://www.cnblogs.com/MalcolmMeng/p/10945531.html

内容概要:本文介绍了一种基于双层优化的微电网系统规划设计方法,旨在通过Matlab代码实现,解决微电网在规划与运行中的多目标、多层次决策问题。该方法将优化过程分为上下两层:上层通常负责容量配置、设备选址等长期规划决策,下层则聚焦于能量管理、出力调度等短期运行优化,通过迭代交互实现全局最优。文中详细阐述了模型构建、约束条件设定、目标函数设计及求解算法实现流程,并提供了完整的Matlab代码供复现实验,有助于深入理解微电网系统的设计逻辑与优化机制。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、微电网、综合能源系统等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和掌握双层优化理论在微电网规划设计中的具体应用;② 通过阅读和运行Matlab代码,复现并改进经典优化模型,用于学位论文、科研项目或实际工程方案设计;③ 深入理解微电网中分布式能源、储能与负荷的协同优化调度策略。; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践的结合。建议读者先理解双层优化的基本思想和数学模型,再结合代码逐行分析,重点关注变量定义、约束条件的代码转化以及主从问题间的迭代逻辑。鼓励在提供的代码基础上进行参数调整、场景扩展或算法改进,以深化学习效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值