2013年9月28日 星期六

UVA-11300

UVA-11330 Spreading the Wealth


#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    int n,i;
    unsigned long long ans;
    vector <long long>money;
    long long equal;
    unsigned long long temp;
    while(scanf("%d",&n)==1){
        money.clear();
        equal=0;ans=0;
        for(i=0;i<n;i++){
            scanf("%lld",&temp);
            money.push_back(temp);
            equal+=temp;
        }
        equal/=n;
        for(i=0;i<n;i++){
            money[i]=money[i]-equal;
            if(i>1){
                money[i]+=money[i-1];
            }
        }
        money[0]=0;
        sort(money.begin()++,money.end());
        for(i=0;i<n;i++){
            if(money[n/2]>=money[i])
                temp=money[n/2]-money[i];
            else
                temp=money[i]-money[n/2];
            ans+=temp;
        }
        printf("%lld\n",ans);
    }
return 0;
}


這題是數學分析
在下抓bug抓超久的...

2013年9月27日 星期五

UVA-11292

UVA-11292    The Dragon of Loowater


#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
    int n,m,ans;
    int dragon[20000],worrior[20000];
    bool ANS;
    while(scanf("%d%d",&n,&m)==2){
        if(n==0 && m==0)
            break;
        for(int i=0;i<n;i++){
            scanf("%d",&dragon[i]);
        }
        for(int i=0;i<m;i++){
            scanf("%d",&worrior[i]);
        }
        ans=0;ANS=false;
        if(n>m)
            printf("Loowater is doomed!\n");
        else{
            sort(dragon,dragon+n);
            sort(worrior,worrior+m);
            if(dragon[n-1]>worrior[m-1]){
                printf("Loowater is doomed!\n");
                break;
            }
            int count=0;
            for(int i=0;i<n;i++){
                ANS=false;
                for(int j=count;j<m;j++){
                    if(dragon[i]<=worrior[j]){
                        count=j+1;
                        ans+=worrior[j];
                        ANS=true;
                        break;
                    }
                }
                if(!ANS)
                    break;                
            }
            if(!ANS)
                printf("Loowater is doomed!\n");
            else
                printf("%d\n",ans);
        }
    }
    
    
return 0;
}


不知道為什麼,一開始送的時候一直RE= =

UVA-11729

UVA-11729  Commando War


#include<stdio.h>
#include<algorithm>
using namespace std;
int soldier[1000][2];
int ans[1000],temp,out;
bool cmp(int a,int b){
    return soldier[a][1]>soldier[b][1];
}
int main(){
    int cases=0,n;
    while(scanf("%d",&n) && n){
        cases++;
        temp=0;out=0;
        for(int i=0;i<n;i++){
            scanf("%d%d",&(soldier[i][0]),&(soldier[i][1]));
            ans[i]=i;
        }
        sort(ans,ans+n,cmp);
        for(int i=0;i<n;i++){
            out+=soldier[ans[i]][0];
            temp=(temp>out+soldier[ans[i]][1])?(temp):(out+soldier[ans[i]][1]);    
        }
        out+=soldier[ans[n-1]][1];
        printf("Case %d: %d\n",cases,temp>out?temp:out);
    }
return 0;    
}


這題也是一開始一直RE,莫名其妙 030