codeforces 797B Odd sum
2017-05-22 19:41
344 查看
题意:给定一个整型序列,求得其中一个子序列,其和为奇数,且和是所有子序列中最大的。输入的数据保证一定包含和为奇数的子序列
思路:所有正数相加得sum,如果为奇数,sum即答案,否则答案为Max(sum-mi,sum+mx)mi为最小正奇数,mx为最大负奇数
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int maxn = 1e5+10;
int a[maxn];
int Max(int a,int b){return a>b?a:b;}
int main()
{
int n;
//freopen("in.txt","r",stdin);
while(~scanf("%d",&n))
{
ll sum=0;
int mi,mx;
mi=(1<<30);
mx=-1<<30;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]>0)sum+=a[i];
if(a[i]>0&&a[i]%2==1&&mi>a[i])
mi=a[i];
if(a[i]<0&&a[i]%2==1||a[i]%2==-1&&mx<a[i])
mx=a[i];
}
if(sum%2)
printf("%d\n",sum);
else
printf("%d\n",Max(sum-mi,sum+mx));
}
}
思路:所有正数相加得sum,如果为奇数,sum即答案,否则答案为Max(sum-mi,sum+mx)mi为最小正奇数,mx为最大负奇数
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int maxn = 1e5+10;
int a[maxn];
int Max(int a,int b){return a>b?a:b;}
int main()
{
int n;
//freopen("in.txt","r",stdin);
while(~scanf("%d",&n))
{
ll sum=0;
int mi,mx;
mi=(1<<30);
mx=-1<<30;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]>0)sum+=a[i];
if(a[i]>0&&a[i]%2==1&&mi>a[i])
mi=a[i];
if(a[i]<0&&a[i]%2==1||a[i]%2==-1&&mx<a[i])
mx=a[i];
}
if(sum%2)
printf("%d\n",sum);
else
printf("%d\n",Max(sum-mi,sum+mx));
}
}
相关文章推荐
- Codeforces 492D Vanya and Computer Game 循环节找规律
- codeforces 614 C Peter and Snow Blower
- codeforces 148E Porcelain
- Codeforces 765D Artsem and Saunders(数学)
- CodeForces 659E New Reform (图的遍历判环)
- CodeForces 785 D.Anton and School - 2(组合数学)
- codeforces 493C Vasya and Basketball(二分)
- Codeforces 625C K-special Tables 【贪心】
- CodeForces 696 A. Lorenzo Von Matterhorn(水~)
- codeforces 730 A Toda 2
- codeforces 835 a Key races
- 【CodeForces】915 D. Almost Acyclic Graph 拓扑排序找环
- Codeforces 4D. Mysterious Present
- Codeforces 622A Infinite Sequence
- codeforces EDU 15 (A,B,C,D,E)题解
- CodeForces - 687A (连通图染色)
- CodeForces - 834C The Meaningless Game
- Codeforces 898E Squares and not squares (贪心)
- Codeforces 1C. Ancient Berland Circus(计算几何:正多边形性质+高精度)
- Codeforces 622