POJ 2021

#include <iostream>
#include <string>
#include <algorithm>
#define MAXN 105

using namespace std;

struct node
{
    string name_f;
    string name;
    int f_c;
    int age;
};

node _m[MAXN];

int find_pre(string _name);

int n;

bool op(node a,node b);

int main()
{
    //freopen("acm.acm","r",stdin);
    int test;
    int i;
    int tem;
    cin>>test;
    tem = test;
    while(test --)
    {
        cout<<"DATASET "<<tem - test<<endl;
        cin>>n;
        for(i = 0; i < n; ++ i)
        {
            cin>>_m[i].name_f;
            cin>>_m[i].name;
            cin>>_m[i].f_c;
        }
        for(i = 0; i < n; ++ i)
        {
            _m[i].age = -1;
        }
        for(i = 0;i < n; ++ i)
        {
            if(_m[i].name_f == "Ted")
            {
                _m[i].age = 100 - _m[i].f_c;
            }
            else
                _m[i].age = find_pre(_m[i].name_f) - _m[i].f_c;
        }
        sort(_m,_m+n,op);

        for(i = 0; i < n; ++ i)
        {
            cout<<_m[i].name<<" "<<_m[i].age<<endl;
        }
    }
}

bool op(node a,node b)
{
    if(a.age > b.age)
        return true;
    else if(a.age == b.age)
    {
        if(a.name < b.name)
        {
            return true;
        }
    }
    return false;
}

int find_pre(string _name)
{
    int i;
    if(_name == "Ted")
    {
        return 100;
    }
    for(i = 0; i < n; ++ i)
    {
        if(_m[i].name == _name)
        {
            if(_m[i].age != -1)
            {
                return _m[i].age;
            }
            _m[i].age = find_pre(_m[i].name_f) - _m[i].f_c;
            return _m[i].age;
        }
    }
}
时间: 2024-11-05 18:35:31

POJ 2021的相关文章

poj 2021 Relative Relatives

题目链接:http://poj.org/problem?id=2021 思路: 由于数据较小,采用O(N^2)的暴力算法,算出所有后代的年龄,再排序输出. 代码: #include <iostream> #include <string.h> #include <algorithm> using namespace std; #define MAX_N ( 100 + 10 ) typedef struct Descendant { char Name[30]; int

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&