zoukankan      html  css  js  c++  java
  • 远征【考试】

    Description

    寒枫将军将要带领他的部队去圣雪山消灭那里的冰龙。 部队分成了 若干个小队, 属于同一个小队的人兵种相同 。 寒枫将军有着杰出的指挥能力 , 在战斗的时候, 寒枫将军能够让所有相同兵种的人互相配合, 使 t 个相同兵种的人发挥出t2t2 的战斗力 ; 寒枫将军还能让不同兵种的人互相配合, 使整个部队的战斗力是所有兵种战斗力的和。 
    例如, 部队中有 3 个小队, 分别是 5 个人的步兵小队, 3 个人的步兵小队,3 个人的骑兵小队。 那么步兵战斗力为 64, 骑兵战斗力为 9, 部队总战斗力为73。 
    寒枫将军需要知道他的部队的战斗力是多少 。

    Input

    第一行一个整数 n, 表示小队数。 
    接下来 n 行, 第 i 行有两个整数 ai、 bi,表示这个小队有 ai 个人, 兵种为 bi。

    Output

    一行一个整数, 部队的战斗力 。

    Sample Input


    5 1 
    3 1 
    3 2

    Sample Output

    73

    Hint

    【 数据规模与约定】 
    10%的数据, n=1 
    30%的数据, n≤1000 
    另有 20%的数据, ai=1 
    另有 30%的数据, bi≤1000 
    100%的数据, 1≤n≤100000, 1≤ai≤10000, 1≤bi≤1,000,000,000

     
    题解:
    模拟一下,map离散化一下就可以了。
     
     
    代码:
    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    #include<cstring>
    #include<stdlib.h>
    #include<map>
    #define ll long long
    using namespace std;
    ll from[100100];
    int n,num=0;
    map<ll,int> mp;
    int main(){
        memset(from,0,sizeof(from));
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            ll x,y;scanf("%lld%lld",&x,&y);
            if(mp[y]==0) mp[y]=++num;
            from[mp[y]]+=x;
        }
        ll ans=0;
        for(int i=1;i<=n;i++){
            ans+=from[i]*from[i];
        }
        printf("%lld",ans);
    }
  • 相关阅读:
    set, bag, list, map的语义
    ExtJs 自定义Vtype验证
    详解.NET中的动态编译技术
    IL汇编语言介绍(译)
    C# 文件操作相关
    邮件系统
    关于Nhibernate中的多数据库支持
    .NET中 用C#操纵IIS
    ExtJS日期格式
    完全详解使用Resource实现多语言的支持
  • 原文地址:https://www.cnblogs.com/renjianshige/p/7309788.html
Copyright © 2011-2022 走看看