zoukankan      html  css  js  c++  java
  • [CF1038D]Slime

    [CF1038D]Slime

    题目大意:

    (n(nle5 imes10^5))只史莱姆,每只史莱姆有一个分数(w_i(|w_i|le10^9)),每次一只史莱姆可以吞掉左边的或者右边的史莱姆,然后它的分数会减去被吞的史莱姆的分数,问最后剩下的史莱姆分数最大为多少。

    思路:

    需要保证至少有一个+-

    如果分数有正有负,那么答案为所有数绝对值之和,否则还需减去绝对值最小的分数的两倍。

    源代码:

    #include<cstdio>
    #include<climits>
    #include<iostream>
    using int64=long long;
    int main() {
    	std::ios::sync_with_stdio(false);
    	std::cin.tie(NULL);
    	std::cout.tie(NULL);
    	int n,x,min=INT_MAX;
    	std::cin>>n;
    	int64 sum=0;
    	bool b1=false,b2=false;
    	for(register int i=0;i<n;i++) {
    		std::cin>>x;
    		sum+=std::abs(x);
    		min=std::min(min,std::abs(x));
    		(x>0?b1:b2)=true;
    	}
    	if(n==1) {
    		std::cout<<x<<'
    ';
    		return 0;
    	}
    	(!b1||!b2)?sum-=min<<1:0;
    	std::cout<<sum<<'
    ';
    	return 0;
    }
    
  • 相关阅读:
    loaded some nib but the view outlet was not set
    指标评比
    IOS DEVELOP FOR DUMMIES
    软件测试题二
    javascript select
    DOM节点类型详解
    mysql操作
    UVA 10055
    solutions for 'No Suitable Driver Found For Jdbc'
    解决git中文乱码问题
  • 原文地址:https://www.cnblogs.com/skylee03/p/9890896.html
Copyright © 2011-2022 走看看