CSU 1971: 安排座位

2023-12-26 16:48
文章标签 安排 座位 csu 1971

本文主要是介绍CSU 1971: 安排座位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1971: 安排座位

            Time Limit: 2 Sec       Memory Limit: 128 Mb       Submitted: 114       Solved: 83    

Description

一年一度的暑期集训又开始了!
作为老人的小明非常忧伤,因为他要给所有的新人安排座位。由于安排给新人的座位上的机器可能有各种毛病(比如很卡,上不了网之类的),这些问题的出现都会让新人的训练热情下降。为了让更多的新人能够留下,小明自然希望大家的热情都是高涨的。
对于每个新人,都会有一个热情值ai,而每个座位都会有一个热情耗损值bi,如果第i个新人坐在第j个位置,那这位同学对整个集训队热情值的贡献就是(ai - bj) ^2。现在给出所有新人的热情值,所有位置的热情耗损值,你能告诉小明采用最合理的位置安排方式后,能得到的最大的集训队热情值是多少?
当然,每个位置只能坐一个新人,每个新人也必须坐在某个位置上

Input

第一行一个数字T表示数据组数
每组数据包括三行:
第一行为一个整数n,表示新人的人数
第二行为n个整数,第i个数字表示第i个同学的热情值ai
第三行为n个整数,第i个数字表示第i个座位的热情耗损值为bi
其中T<=10 , 0<=ai , bi <=100, 1<=n<=100000

Output

输出一行只包含一个整数,表示集训队热情值的最大值

Sample Input

23
2 5 1
0 0 13
2 5 1
3 2 5

Sample Output

29
26

Hint

Source

2017年7月月赛

Author


简单贪心,可以把热情值从大到小排序,热情损耗值从小到大排序,用热情值大的去匹配损耗值小的,从而使得最后的热情值得到最大值

#include <iostream>
#include <cstring>
#include <stack>
#include <cstdio>
#include <cmath>
#include <queue>
#include <algorithm>
#include <vector>
#include <set>
#include <map>const double eps=1e-8;
const double PI=acos(-1.0);
using namespace std;
const int maxn=1e5+5;
int a[maxn],b[maxn];bool cmp(int a,int b){return a>b;
}int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&a[i]);for(int j=0;j<n;j++)scanf("%d",&b[j]);sort(a,a+n,cmp);sort(b,b+n);double sum=0;for(int i=0;i<n;i++)sum+=(a[i]-b[i])*(a[i]-b[i]);printf("%.0f\n",sum);}return 0;
}/**********************************************************************Problem: 1971User: 201501080127Language: C++Result: ACTime:156 msMemory:2804 kb
**********************************************************************/


这篇关于CSU 1971: 安排座位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/540163

相关文章

csu(背包的变形题)

题目链接 这是一道背包的变形题目。好题呀 题意:给n个怪物,m个人,每个人的魔法消耗和魔法伤害不同,求打死所有怪物所需的魔法 #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>//#include<u>#include<map

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

2014假期学习安排和感触

马上放假了,终于有一大块清净的时间留给自己了,一年多的研究生生活感慨良多,有负能量的东西,但是更多的是积极的东西。非要说个最有意义的,我觉得是学会思考了吧,该去做什么,不该去做什么,这个东西是有帮助的,那个是在走弯路。我想我们更应该把握时间!   研二上学期的半年接触了不少东西,自己现在做的东西是和FPGA有关的,一开始对Verilog or VHDL根本就没接触过,更别说这个叫做FPGA的

开发手札:关于项目管理中开发工作安排的问题

最近工作越来越偏向管理方向了(兼吗喽),所以仔细思考了一下给开发工作安排的问题。       结合自己开发过程中的体会,我觉得在构建完成用户需求文档的同时。       再站在开发的角度,构建一份详细的模块构架设计图就更好了,这样不仅可以给开发提供编码的思路和规范,也可以保证最终交付的代码大差不差,所以返工会减低很多。       前两天用processon画了两份系统的构架图。

动态规划--项目安排

题目来源:网易有道2013年校园招聘面试二面试题 题目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的。由于小明马上就要硕士毕业了,面临着买房、买车、给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包。万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项

SQL进阶技巧:经典问题题-换座位

目录 0 问题描述 1 数据准备 2 问题分析 3 小结 0 问题描述 表 seat中有2个字段id和student id 是该表的主键(唯一值)列,student表示学生姓名。 该表的每一行都表示学生的姓名和 ID。 id 是一个连续的增量。 编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。 按 id 升序 返回结果表。 查询结

【C++】1326. 需要安排几位师傅加工零件

问题:1326. 需要安排几位师傅加工零件 类型:贪心 题目描述: 某工厂有 n 个零件加工的师傅,每位师傅每天能够加工出不同数量的零件。 现有 m 个零件要求一天加工完,请问该工厂最少需要派几个师傅来完成这次零件加工任务,如果安排所有的师傅都参与加工也不能在一天内完成任务,请输出NO。 输入: 第一行有两个整数,用空格隔开; 第一个整数代表要加工的总零件个数 m (m≤10^6),

CSU - 1556 Jerry's trouble(快速幂取模)

【题目链接】:click here 【题目大意】:计算x1^m+x2^m+..xn^m(1<=x1<=n)( 1 <= n < 1 000 000, 1 <= m < 1000) 【解题思路】:快速幂取模 代码: solution one: #include<bits/stdc++.h>#define LL long longusing namespace std;const

华为OD机试-找座位(C++ Java Python)

题目描述:在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位 分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,最多还能坐下多少名观众。输入描述:一个数组,用来标识某一排座位中,每个座位是否已经坐人。0表示该座位没有坐人,1表示该座位已经坐人。输出描述:整数,在不移动现有观众座位的情况下,最

AW302 任务安排3

题目地址 易错点: 需要熟练掌握斜率优化DP的原理与实现方法.二分时需要仔细判定边界条件. #include<cstdio>#include<iostream>#define ll long longusing namespace std;const int MAXN=3e5+10;ll f[MAXN],sumT[MAXN],sumC[MAXN];int q[MAXN