13765: 消灭冰龙发表时间:2022-10-27 19:53 13765: 消灭冰龙时间限制: 1 Sec 内存限制: 128 MB 题目描述寒枫将军将要带领他的部队去圣雪山消灭那里的冰龙。 部队分成了若干个小队,属于同一个小队的人兵种相同。寒枫将军有着杰出的指挥能力,在战斗的时候,寒枫将军能够让所有相同兵种的人互相配合,使t个相同兵种的人发挥出t2的战斗力;寒枫将军还能让不同兵种的人互相配合,使整个部队的战斗力是所有兵种战斗力的和。 例如,部队中有3个小队,分别是5个人的步兵小队,3个人的步兵小队,3个人的骑兵小队。那么步兵战斗力为64,骑兵战斗力为9,部队总战斗力为73。 输入第一行一个整数n,表示小队数。接下来n行,第i行有两个整数ai、bi,表示这个小队有ai个人,兵种为bi。 输出一行一个整数,部队的战斗力。 样例输入 Copy3 5 1 3 1 3 2 样例输出 Copy73 提示10%的数据,n=1 #include<bits/stdc++.h> using namespace std; struct node{ long long a,b; }a[100005]; long long read(){ char c=getchar();long long x=0; while(!isdigit(c)) c=getchar(); while(isdigit(c)){x=x*10+c-'0';c=getchar();} return x; } bool cmp(node x,node y){return x.b<y.b;} int main(){ long long n=read(); for(long long i=1;i<=n;i++) {a[i].a=read();a[i].b=read();} long long ans=0; sort(a+1,a+1+n,cmp); for(long long i=1;i<=n;i++){ long long nowa=a[i].a; while(i<=n&&a[i].b==a[i+1].b){nowa+=a[i+1].a;i++;} ans+=nowa*nowa; } cout<<ans<<endl; return 0; }
文章分类:
算法例题
|