求调
查看原帖
求调
482610
Mortidesperatslav楼主2023/9/24 18:35

模拟赛代码被一组数据

#include<bits/stdc++.h>
using namespace std;
struct node{
	int x;
	double h;
};
int t,n,k;
node a[100005];
int qz[100005],qzm[100005][20];
bool cmp(node a,node b){return a.h<b.h;}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>t;
	for(int _=0;_<t;_++){
		cin>>n>>k;
		for(int i=1;i<=n;i++)cin>>a[i].x>>a[i].h;
		sort(a+1,a+1+n,cmp);
		for(int i=1;i<=n;i++){qz[i]=qz[i-1]+a[i].x;qzm[i][0]=qz[i];}
		for(int i=1;i<=log2(k);i++)
			for(int j=1;j+(1<<i)-1<=n;j++)
				qzm[j][i]=max(qzm[j][i-1],qzm[j+(1<<(i-1))][i-1]);
		int ans=INT_MIN;
		for(int i=1;i<=n;i++){
			int p=log2(k);
			int mxi=max(qzm[i][p],qzm[(i+k-(1<<p))+1][p])-qz[i-1];
			ans=max(ans,mxi);
		}
		cout<<ans<<"\n";
	}
}

题目:

题目描述

一年一度的大合唱比赛开始了,大家想选至多K个人去参加合唱比赛,但是今年的同学大家的身高参差不齐,甚至找不到两个身高相同的人,身高差距太大无疑会影响合唱表演,因此要保证身高尽量平均的情况下,再使合唱效果最好。(身高尽量平均指的是在所有的人中选出来的那些合唱队员中的最高身高为b,最低身高为a,任意未被选上的人身高为x,对于所有x均不满足a<x<b,举个例子,总共有4个人身高分别是1,2,3,4;当K==3的时候我们可以选择1,2;也可以选择1,2,3;但是不能选择1,3也不能选择1,2,4)。每个人对合唱都有一个贡献值,有些人是正的,有些人是负的(唱的太差),最佳和唱效果就是选出的人的贡献值的总和最大。

输入格式

首先输入一个T,表示T组案例,然后每组案例输入两个数N,K,表示这组案例有N个人,至多选K个人,然后N行,每行一个整数P和一个浮点型数Q,表示学生的和合唱贡献和身高。K<N<=1e5;-1000<P<1000;0<Q<1000;T<=200。

输出格式

输出最佳合唱效果

样例 #1

样例输入 #1

1
6 3
-1 172.0 
6 171.5
2 173.697
-6 174.7849
5 185.15
-5 191.9

样例输出 #1

7

原题没有 LaTeX,懒得修了。

2023/9/24 18:35
加载中...