数据结构与算法实验题 5.3 计分

原创 2013年12月03日 20:55:29
数据结构与算法实验题 5.3 计分
★实验任务
给定 n 个数 Ai(1<=i<=n),每个数由花色 R/B 加上一个值小于 5000000 的自然数构成,
比如"R1","B100",求 R,B 的分数(R、B 的初始分数为 0)。
我们的计分方式是,对于每一对的 Ai、Aj,(1<= i,j<=n),如果 Ai 和 Aj 的花色不同
并且 value(Ai)>value(Aj),则 Aj 所对应的花色的分数加上 value(Ai),花色相同则无视掉。 ★数据输入
输入第一行为一个正整数 n (n< =1000000)
输入第二行为 n 个数,由空格隔开
注意:输入输出请用 scanf,printf
★数据输出
输出两个数,花色 R 的分数和花色 B 的分数,由空格隔开
Hint:请用__int64 来计算分数
输入示例 输出示例
4
R4 B3 R1 B5

13 4

/*思路:对于输入的R和B,我们先对他们的值分别进行有小到大排序,然后开始检查他们的大小*/
#include<iostream>  
#include<stdio.h>  
#include<string.h>  
#include<algorithm>  
using namespace std;  
int p_r[1000000],p_b[1000000];  
bool cmp(int a,int b)  
{  
    return a<b;  
}  
int main()  
{  
    __int64 n,i,sumr=0,sumb=0,d,count_r=0,count_b=0,j,r,b;  
char c,s;  
scanf ("%I64d",&n);  
c=getchar();  
  
memset(p_r,0,sizeof(p_r)); 
memset(p_b,0,sizeof(p_b));   
    for(i=0;i<n;i++)  
    {  
        scanf("%c%I64d",&s,&d);  
            c=getchar();  
        if(s=='R')  
        {  
            sumr+=d;  
            p_r[count_r++]=d;  
        }  
        if(s=='B')  
        {  
            sumb+=d;  
            p_b[count_b++]=d;  
        }  
    }  
    sort(p_r,p_r+count_r,cmp);  
    sort(p_b,p_b+count_b,cmp);  
    __int64 sum1,sum2;  
    sum1=sum2=0;  
    j=0;  
    for(i=0;i<count_r;i++)  
    {  
        if(p_r[i]<p_b[j])  //如果r<b,那么sum1就是加上sumb的值。
        {  
            sum1+=sumb;  
                  
            sumr-=p_r[i];  //b之后的元素都大于现在的这个r,所以sumr减去他。
        }  
      
            if(p_r[i]==p_b[j])  //相等是一个难点。分别从r,b里找出相等的值各有几个。
            {  
				for(b=j;b<count_b;b++)
				{
					if(p_b[b]!=p_b[j])
						break;
				}
				for(r=i;r<count_r;r++)
				{
					if(p_r[r]!=p_r[i])
						break;
				}
				sumb-=p_b[j]*(b-j);//因为相等所以无需再管他们,就拿他们都减掉。
				sumr-=p_r[i]*(r-i);
				sum1+=sumb*(r-i);  //之后的值都会大于现在的值,所以有n个相等就把他们分别加到sum1和sum2
                sum2+=sumr*(b-j);
			
				i=r-1;
				j=b;
            if(j==count_b)  
                break;  
            }   
			
            if(p_r[i]>p_b[j])  //这里和第一种情况类似。
        {  
            sumb-=p_b[j];  
            sum2+=sumr;  
                  
            j++;  
            i--;  
            if(j==count_b)  
                break;  
  
    
              
        }  
  
    }  
   printf("%I64d %I64d\n",sum1,sum2); 
  
}  


PTA数据结构与算法题目集(中文) 函数题 (1)

PTA数据结构与算法题目集(中文) 函数题4-1~4-5
  • Phenixfate
  • Phenixfate
  • 2015年11月27日 14:22
  • 3413

数据结构-算法-时间复杂度计算

算法的时间复杂度定义为: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n}...
  • hitwhylz
  • hitwhylz
  • 2013年10月07日 12:50
  • 9699

数据结构和算法经典100题-第1题

说在开头的话:如果拿金庸武侠做个比喻,数据结构和算法的学习就好比是程序员内功。内功的修炼往往不能一蹴而就,需要水滴石川。在博客中的这个分类中,专门记录我在数据结构和算法中的修炼。希望数据结构和算法的武...
  • bobkentblog
  • bobkentblog
  • 2015年03月26日 17:48
  • 1135

【数据结构】算法5.3 行逻辑链接的顺序表-乘积

#include #include #include #include#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #defi...
  • Vit_rose
  • Vit_rose
  • 2016年10月10日 20:21
  • 1182

算法与数据结构实验题 2.2 幸运儿

算法与数据结构实验题 2.2 幸运儿 ★实验任务 泡泡最近下了个饱了吗 app,这个 app 推出了个坑蒙拐骗的红包系统,只要花一块钱买张一元抵用券,就有参与 20 元红包的抽奖机会,抽奖界面会实...
  • qq_40632377
  • qq_40632377
  • 2017年10月28日 10:23
  • 48

数据结构与算法实验题 4.2 Who is the strongest

数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶。这些魁偶排成一排,每个魁偶都有一个 战斗值。现在该召唤师有一个技能,该技能...
  • murmured
  • murmured
  • 2013年11月04日 21:56
  • 721

数据结构与算法实验题-战争来了

★实验任务 兽族和不死又要开战了。但是兽族的军队都是分部落管理的,为此,兽王 ——先知萨尔,要先知道自己能调度多少军队,才能在跟不死族开战的时候做好部署。已知现在兽族有 N 个兽人,编号从 1 到 N...
  • murmured
  • murmured
  • 2013年11月28日 12:55
  • 1278

数据结构与算法实验题 7.1 M 商人的求救

问题描述: A 国正面临着一场残酷的战争,城市被支持不同领导的两股势力占据,作为一个商人,M先生并不太关心政治,但是他知道局势很严重,他希望你能救他出去。M 先生说:“为了安全起见,我们的路线最多只能...
  • murmured
  • murmured
  • 2013年12月05日 12:25
  • 1203

数据结构与算法实验题 6.1 s_sin’s bonus

数据结构与算法实验题 6.1 s_sin’s bonus ★实验任务 正如你所知道的 s_sin 是一个非常贪玩的人 QAQ(如果你非常讨厌他请直接从第二段开 始看),并且令人感到非常遗憾的是,他是一...
  • murmured
  • murmured
  • 2013年11月03日 13:46
  • 875

福大数据结构与算法实验题 Who is behind(双端队列)

★实验任务 开学了,有 N 个新生需要排成一列。这 N 个新生编号从 1 到 N,为了排队方便,按编号 从 1 到 N 顺序入队伍,起始队伍为空,每个人进队伍的选择有两种,一种是直接排在当前队 ...
  • qq544529563
  • qq544529563
  • 2013年12月03日 13:23
  • 892
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构与算法实验题 5.3 计分
举报原因:
原因补充:

(最多只允许输入30个字)