码迷,mamicode.com
首页 > 其他好文 > 详细

中位数——二维坐标下的中位数lightoj1349

时间:2019-04-23 23:57:14      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:sort   col   turn   else   max   strong   i++   div   include   

第一次碰到这种题,不知所措,题解链接 =》 https://www.cnblogs.com/fu3638/p/7426074.html

#include<bits/stdc++.h>
using namespace std;
#define maxn 50005
struct Node{int x,y,num;}p[maxn];
int cmp1(Node a,Node b){return a.x<b.x;}
int cmp2(Node a,Node b){return a.y<b.y;}
int n,m,q;
int main(){
    int T;cin>>T;
    for(int tt=1;tt<=T;tt++){
        printf("Case %d: ",tt);
        
        int sum=0,mid;
        cin>>n>>m>>q;
        for(int i=1;i<=q;i++)
            cin>>p[i].x>>p[i].y>>p[i].num,sum+=p[i].num;
        mid=sum+1>>1;
        
        sort(p+1,p+1+q,cmp1);
        int tot=0,x=0,y=0;
        for(int i=1;i<=q;i++){
            tot+=p[i].num;
            if(tot>=mid){
                if(sum%2)x=p[i].x;//总数是奇数,那么中位数很好确定 
                else if(tot==mid)x=(p[i].x+p[i+1].x)/2;//总数是偶数,当前刚好卡在一半的位置 
                else x=p[i].x; 
            break;}
            
        }
        
        sort(p+1,p+1+q,cmp2);
        tot=0;
        for(int i=1;i<=q;i++){
            tot+=p[i].num;
            if(tot>=mid){
                if(sum%2)y=p[i].y;//总数是奇数,那么中位数很好确定 
                else if(tot==mid)y=(p[i].y+p[i+1].y)/2;//总数是偶数,当前刚好卡在一半的位置 
                else y=p[i].y; 
                break;
            }
        
        }
        cout<<x<<" "<<y<<endl;
    }
}

 

中位数——二维坐标下的中位数lightoj1349

标签:sort   col   turn   else   max   strong   i++   div   include   

原文地址:https://www.cnblogs.com/zsben991126/p/10759885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!