浙江理工大学2019年新生赛

问题 A: 你的名字题目描述Walfy同时喜欢上了n个妹子,第i个妹子的智力值为ai魅力值为bi。为了防止妹子们发现walfy是个渣男,现在walfy要给妹子排个序,这样他能按照这个排序分配和妹子聊天的时间。排序规则如下:智力高的妹子需要花费更多的时间来聊天,如果智力一样,那么魅力高的花费的时间将会多一点;如果她们的魅力也一样,姓名字典序更小的花费的时间也将多一点。对于字典序大小的定义,...
摘要由CSDN通过智能技术生成

问题 A: 你的名字

题目描述

Walfy同时喜欢上了n个妹子,第i个妹子的智力值为ai魅力值为bi。为了防止妹子们发现walfy是个渣男,现在walfy要给妹子排个序,这样他能按照这个排序分配和妹子聊天的时间。排序规则如下:智力高的妹子需要花费更多的时间来聊天,如果智力一样,那么魅力高的花费的时间将会多一点;如果她们的魅力也一样,姓名字典序更小的花费的时间也将多一点。
对于字典序大小的定义,对于字符串s和t来说,如果s<t,则存在一个k,对于所有i小于k,si==ti,且sk<tk。例如“abb” < “ac”,“acc”<“accb”。
由于他将所有时间都用于和妹子聊天了,他现在要请求你的帮助。

输入

a第一行输入一个正整数T,表示测试用例的数量。接下来是测试用例。
每个测试用例的第一行包含一个正整数n,含义见上文;
接下来的n行,每行一个字符串s和两个整数ai,bi,用空格隔开,表示妹子的姓名、智力和魅力;
数据范围:( 1 <= T <= 10, 1 <= n <= 1000, 1 <= |s| <= 10, 1<= ai,bi <= 1000,同一个测试用例没有两个妹子有同样的名字,且名字只包含小写英文字母)

输出

每个测试用例输出n个值,第i个值代表第i个妹子花费时间是第几大的。

样例输入

3
2
abb 2 1
ac 1 100
3
abb 1 1
accb 1 1
acc 2 1
3
abb 1 1
ac 1 1
accb 1 1

样例输出

1 2
2 3 1
1 2 3

提示

样例解释或提示:
第一组样例,abb的智商更高所以Walfy在她身上花费的时间更多。
第二组样例,acc的智商最高,所以在她身上花费的时间是第一大的,之后因为acc的名字字典序更小,所以在她身上花费的时间是第二大的。

题解:

多特征值排序,写个冒泡或者sort都行

代码:

#include<bits/stdc++.h>
using namespace std;
struct node
{
    int zs,ml;
    string name;
    int num2,num1;
}a[1005];
int comp(node a,node b)
{
	return a.num1<b.num1; 
}
int main()
{
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i].name>>a[i].zs>>a[i].ml;
            a[i].num1=i;
        }
        for(int i=1;i<=n;i++)
           for(int j=i+1;j<=n;j++)
           {
                if(a[i].zs<a[j].zs)swap(a[i],a[j]);
                else if(a[i].zs==a[j].zs)
                {
                    if(a[i].ml<a[j].ml)swap(a[i],a[j]);
                    else if(a[i].ml==a[j].ml)
                        if(a[i].name>a[j].name)swap(a[i],a[j]);
                }
           }
        for(int i=1;i<=n;i++)a[i].num2=i;
        sort(a+1,a+1+n,comp);
        for(int i=1;i<=n;i++)cout<<a[i].num2<<" ";
        cout<<endl;
    }
}

问题 B: duxing201606很快乐

题目描述

世界上没有两片完全相同的树叶,同样的,KFC也没有两个完全相同的原味鸡。而duxing哥是一个非常讲究的人,面对一个原味鸡,自己总是能说出这是第X级的原味鸡。可是duxing哥有点不满意,他希望知道这个原味鸡的美味值是多少。经过研究,他发现第X级的原味鸡美味值=第x-1级的原味鸡的美味值*1+第x-2级的原味鸡的美味值*2+.....+第1级原味鸡美味值*(x-1)。也就是:设第x级的原味鸡美味值是fx,那么fx=∑i=1x-1(x-i)*fi。
当然了,这一切需要一个基准,duxing哥把第1级的原味鸡美味值定为1,即f1=1
可是这个计算对于duxing哥来说太麻烦了,所以他把这个任务交给了你,给你一个x,问你第x级原味鸡美味值是多少?

输入

一个数x(1<=x<=40)

输出

一个数,表示第x的原味鸡美味值

样例输入

【输入样例1】
2
【输入样例2】
7

样例输出

【输出样例1】
1
【输出样例2】
144

题解:

递推题,双重for循环就能搞定(打表也行,数据量不大)

注意数组要开long long型,不然会运行错误

代码:

#include<bits/stdc++.h>
using namespace std;
long lon
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值