⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3.txt

📁 poj1018的源代码
💻 TXT
字号:
Source

Problem Id:1018  User Id:00204726 
Memory:112K  Time:40MS 
Language:C++  Result:Accepted

Source 
#include <iostream.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 

struct manu 
{ 
    int b,p; 
}; 

struct device 
{ 
    struct manu m[100]; 
    int n; 
}device[100]; 

struct 
{ 
    int bw[10000]; 
    int n; 
}bw; 
int n; 
int cmp(const void* a,const void* b) 
{ 
    if (((struct manu *)a)->b>((struct manu*)b)->b) 
        return 1; 
    else 
        if (((struct manu *)a)->b<((struct manu *)b)->b) 
            return(-1); 
        else 
            return(0); 
} 

void main() 
{ 
    int i,j,k,p,cases,mcases; 
    scanf("%d",&cases); 
    for (mcases=1;mcases<=cases;mcases++) 
    { 
        scanf("%d",&n); 
        for (i=0;i<n;i++) 
        { 
            scanf("%d",&device[i].n); 
            for (j=0;j<device[i].n;j++) 
                scanf("%d%d",&device[i].m[j].b,&device[i].m[j].p); 
            for (j=0;j<device[i].n;j++) 
            { 
                for (k=j+1;k<device[i].n;k++) 
                { 
                    if (device[i].m[k].b<=device[i].m[j].b&&device[i].m[k].p>=device[i].m[j].p) 
                    { 
                        device[i].m[k]=device[i].m[device[i].n-1]; 
                        k--;device[i].n--; 
                    } 
                    else 
                    { 
                        if (device[i].m[k].b>=device[i].m[j].b&&device[i].m[k].p<=device[i].m[j].p) 
                        { 
                            device[i].m[j]=device[i].m[device[i].n-1]; 
                            j--;device[i].n--; 
                            break; 
                        } 
                    } 
                } 
            } 
            qsort(device[i].m,device[i].n,sizeof(struct manu),cmp); 
            if (i==0) 
            { 
                for (j=0;j<device[0].n;j++) 
                    bw.bw[j]=device[0].m[j].b; 
                bw.n=device[0].n; 
            } 
            else 
            { 
                for (j=k=0;j<device[i].n;j++) 
                { 
                    for (;bw.bw[k]<device[i].m[j].b&&k<bw.n;k++); 
                    if (k!=bw.n) 
                    { 
                        if (bw.bw[k]>device[i].m[j].b) 
                        { 
                            for (p=bw.n;p>k;p--) 
                                bw.bw[p]=bw.bw[p-1]; 
                            bw.bw[k]=device[i].m[j].b; 
                            bw.n++; 
                        } 
                    } 
                } 
                bw.n=k+1; 
            } 
        } 
        float mbp,bp; 
        for (i=0,mbp=0;i<bw.n;i++) 
        { 
            float price=0; 
            for (j=0;j<n;j++) 
            { 
                for (k=0;k<device[j].n&&device[j].m[k].b<bw.bw[i];k++); 
                price=price+device[j].m[k].p; 
            } 
            bp=bw.bw[i]/price; 
            if (bp>mbp) mbp=bp; 
        } 
        printf("%0.3f\n",mbp); 
    } 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -