poj 1634

题意:给你m个员工,和n次的查询。

每个员工有他独立的id,收入,和身高

上司的收入一定大于下属的收入,身高也是大于等于下属的。

每个公司的头头没有上司,上司的编号为0,,同时他也是收入最多身高最高的人。

n次查询。

对于每一次查询,输出它对应的上司的其下属的个数。

Memory: 4572K		Time: 766MS
Language: C++		Result: Accepted
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;

struct moreid{
    int id;
    int father;
    int son;
    int hight;
    int money;
}s[30005];
int id[1000000];  //这个数组是用来找id所对应的结构体的。

int cmp(const void *a,const void *b)   //根据收入的多少来进行排序。
{
    return(*(moreid *)a).money-(*(moreid *)b).money;
}

int main()
{
    int n,a,b,x;
    scanf("%d",&n);
    while(n--)
    {
        memset(id,0,sizeof(id));
        scanf("%d%d",&a,&b);
        for(int i=0;i<a;i++)
        {
            scanf("%d%d%d",&s[i].id,&s[i].money,&s[i].hight);
            s[i].son=0,s[i].father=0;    //对每个编号的下属和上司进行归零。
        }
        qsort(s,a,sizeof(s[0]),cmp);
        for(int i=0;i<a;i++)
        {
            id[s[i].id]=i;    //对结构体的编号的员工身份进行一一对应,用map也是可以的。
            for(int j=i+1;j<a;j++)
            {
                if(s[i].hight<=s[j].hight)    //如果身高要小于第一个钱比他高的人,那么那没人就是他的上司。
                {
                    s[i].father=s[j].id;  //记录上司
                    s[j].son+=s[i].son+1;   //上司的下属就是它的直属下属加上它下属的下属。
                    break;    //找到了直属后,记得跳出。
                }
            }
        }
        for(int i=0;i<b;i++)
        {
            scanf("%d",&x);
             printf("%d %d\n",s[id[x]].father,s[id[x]].son);
        }
    }
    return 0;
}
时间: 2024-10-14 14:05:59

poj 1634的相关文章

POJ 1634 Who&#39;s the boss?

Who's the boss? Time Limit: 5000MS   Memory Limit: 30000K Total Submissions: 2773   Accepted: 1142 Description Several surveys indicate that the taller you are, the higher you can climb the corporate ladder. At TALL Enterprises Inc. this "de facto st

ACM训练方案-POJ题目分类

ACM训练方案-POJ题目分类 博客分类: 算法 ACM online Judge 中国: 浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 中国科技大学(USTC):http://acm.ustc.edu.cn/ 北京航天航空大学(BUAA)http://acm.buaa.edu.cn/oj/index.php 南京

转载:poj题目分类(侵删)

转载:from: POJ:http://blog.csdn.net/qq_28236309/article/details/47818407 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K–0.50K:中短代码:0.51K–1.00K:中等代码量:1.01K–2.00K:长代码:2.01K以上. 短:1147.1163.1922.2211.2215.2229.2232.2234.2242.2245.2262.2301.2309.2313.2334.2346.2348

poj题库分类

初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:     (1)图的深度优先遍历和广度优先遍历.     (2)最短路径算法(dijkstra,bellman-ford,floyd,hea

POJ题目(转)

http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html 初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:     (

Poj 题目分类

初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:     (1)图的深度优先遍历和广度优先遍历.     (2)最短路径算法(dijkstra,bellman-ford,floyd,hea

POJ题目分类(转)

初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:     (1)图的深度优先遍历和广度优先遍历.     (2)最短路径算法(dijkstra,bellman-ford,floyd,hea

北大POJ题库使用指南

原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列组合).递推关系.质因数法 6.计算几何 //凸壳.同等安置矩形的并的面积与周长.凸包计算问题 8.模拟 9.数据结构 //并查集.堆.树形结构 10.博弈论 11.CD有正气法题目分类: 1. 排序 1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1

POJ - 3186 Treats for the Cows (区间DP)

题目链接:http://poj.org/problem?id=3186 题意:给定一组序列,取n次,每次可以取序列最前面的数或最后面的数,第n次出来就乘n,然后求和的最大值. 题解:用dp[i][j]表示i~j区间和的最大值,然后根据这个状态可以从删前和删后转移过来,推出状态转移方程: dp[i][j]=max(dp[i+1][j]+value[i]*k,dp[i][j-1]+value[j]*k) 1 #include <iostream> 2 #include <algorithm&