您的位置:首页 > 产品设计 > UI/UE

Uva 11039 Building designing

2017-02-14 09:36 357 查看
一开始没看到是选数,,,就以为是dp,但是后来看到是选出来排列,那么直接按照绝对值排序之后就加判断就好了。。。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<vector>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;
#define maxx 500000+10

int n,m,all[maxx];
bool y;

bool cmp(int a,int b)
{
return abs(a)<abs(b);
}

void solve()
{
int flag = 0;
int ans = 0;
for(int i = 1;i<=m;i++)
{
if(flag == 0)
{
if(all[i]>0){
flag = 1;
ans++;
}
if(all[i]<0){
flag = 2;
ans++;
}
}
if(all[i]>0&&flag==2) {ans++; flag = 1;}
if(all[i]<0&&flag==1) {ans++; flag = 2;}
}
cout<<ans<<endl;
}

int main()
{
//freopen("std.in","r",stdin);
cin>>n;
while(n--)
{
memset(f,1,sizeof(f));
cin>>m;
for(int i = 1;i<=m;i++) cin>>all[i];
sort(all+1,all+m+1,cmp);
solve();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: