0
点赞
收藏
分享

微信扫一扫

蓝桥杯官网 试题 PREV-240 历届真题 答疑【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法

为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来。希望能对大家的成绩有所帮助。

今年的最大目标就是能为【一亿技术人】创造更高的价值。

资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

蓝桥杯官网 试题 PREV-240 历届真题 答疑【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法_java蓝桥杯官网 试题 PREV-240 历届真题 答疑【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法_#include_02

C++

#include 
#include
#include
#include

using namespace std;

typedef long long ll;

const int N=1e6+10;
struct time
{
int s,a,e,sum,Time;
};
bool cmp(time a,time b)
{
return a.sum<b.sum;
}
int main()
{
ll n;
cin>>n;
time T[n];
for(ll i=0;i<n;i++)
{
cin>>T[i].s>>T[i].a>>T[i].e;
T[i].sum=T[i].s+T[i].a+T[i].e;
}
sort(T,T+n,cmp);
T[0].Time=T[0].s+T[0].a;
for(ll i=1;i<n;i++)
{
T[i].Time=T[i-1].Time+T[i-1].e+T[i].s+T[i].a;
}
ll k=0;
for(ll i=0;i<n;i++)
{
k+=T[i].Time;
}
cout<<k;
return 0;
}

C

#include 
int shuru(int ,int []);
void paixu(int ,int []);
void bing(int ,int []);
void copy(int ,int [],int []);
long long qiu_zosj(int ,int ,int []);

int main(void)
{
int n;
scanf("%d",&n);
int shijian[n];
int likai = shuru(n,shijian);
paixu(n,shijian);
printf("%lld\n",qiu_zosj(likai,n,shijian));
return 0;
}

long long qiu_zosj(int lk,int n,int a[])
{
long long zsj = 0LL;
int i;
int n_ = n;
for(i = 0;i < n; i++)
{
zsj += a[i] * n_;
n_ --;
}
return zsj - lk;
}

void copy(int n,int b[],int a[])
{
while(n -- > 0)
{
*b ++ = *a ++;
}
}

void bing(int n,int a[])
{
int b[n];
copy(n,b,a);
int *q = b;
int q_gs = n/2;
int *h = b+n/2;
int h_gs = n-n/2;
while(q_gs > 0 && h_gs > 0)
{
if(*q < *h)
{
*a ++ = *q++;
q_gs --;
}
else
{
*a ++ = *h++;
h_gs --;
}
}
while(q_gs > 0)
{
*a ++ = *q++;
q_gs --;
}
while(h_gs > 0)
{
*a ++ = *h++;
h_gs --;
}
}

void paixu(int n,int a[])
{
if(n > 1)
{
paixu(n/2,a);
paixu(n-n/2,a+n/2);
bing(n,a);
}
}

int shuru(int n,int a[])
{
int likai = 0;
int i;
for(i = 0 ;i < n ; i++)
{
int j , jie , li;
scanf("%d%d%d",&j,&jie,&li);
a[i] = j+jie+li;
likai += li;
}
return likai;
}

Java

import java.io.IOException;
import java.io.StreamTokenizer;
import java.util.Arrays;

public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in=new StreamTokenizer(System.in);
in.nextToken();
int n=(int) in.nval;
user[] u=new user[n];
for (int i = 0; i < n; i++) {
in.nextToken();
int a=(int) in.nval;
in.nextToken();
a+=(int) in.nval;
in.nextToken();
int c=(int) in.nval;
u[i]=new user(a,c,a+c);
}
Arrays.sort(u);
//System.out.println(Arrays.toString(u));
long ans=0,m=0;
for (int i = 0; i < n; i++) {
ans+=m+=u[i].ab;
m+=u[i].c;
}
System.out.println(ans);
}
static class user implements Comparable<user> {
int ab;
int c;
int sum;
public user(int ab, int c, int sum) {
this.ab = ab;
this.c = c;
this.sum = sum;
}
public user() {
}
@Override
public int compareTo(user o) {
return this.sum-o.sum;
}
@Override
public String toString() {
return "user [ab=" + ab + ", c=" + c + ", sum=" + sum + "]";
}

}
}

Python

class TimeCost():

def __init__(s, a, b, c):
s.w = a + b
s.s = s.w + c

def __lt__(s, o):
return s.s < o.s

n = int(input())
l = []
for i in range(n):
a, b, c = map(int, input().split())
l.append(TimeCost(a, b, c))
l = sorted(l) # 就按照时间和排序一下就行了。
s, s1 = 0, 0
for i in l:
s += i.w + s1
s1 += i.s
print(s)


举报

相关推荐

0 条评论