座位调整问题【解决思路及求证】

这是一篇关于ACM竞赛中一道名为《座位调整》的题目解析,主要涉及如何将员工分配到他们喜欢的零食区域以最大化总体喜好程度。文章提供了C#程序实现,通过按区域独立筛选并选择喜好程度最高的员工,但作者对仅从最大值开始取是否能得到最优解提出疑问。
摘要由CSDN通过智能技术生成

近来无聊,开始做ACM练练脑子,恰好看到百度竞赛的一道《座位调整》题目:

 

题目描述:

百度办公区里到处摆放着各种各样的零食。百度人力资源部的调研发现,员工如果可以在自己喜欢的美食旁边工作,工作效率会大大提高。因此,百度决定进行一次员工座位的大调整。

调整的方法如下:

1 . 首先将办公区按照各种零食的摆放分成 N 个不同的区域。(例如:可乐区,饼干区,牛奶区等等)。

2 . 每个员工对不同的零食区域有不同的喜好程度(喜好程度度的范围为 1 — 100 的整数, 喜好程度越大表示该员工越希望被调整到相应的零食区域)。

3 . 由于每个零食区域可以容纳的员工数量有限,人力资源部希望找到一个最优的调整方案令到总的喜好程度最大。

数据输入:

第一行包含两个整数 N , M ,( 1<=N , M<=300 )。分别表示 N 个区域和 M 个员工。

第二行是 N 个整数构成的数列 a ,其中 a[i] 表示第 i 个区域可以容纳的员工数, (1<=a[i]<=M , a[1]+a[2]+..+a[N]=M) 。

紧接着是一个 M*N 的矩阵 P , P ( i , j )表示第 i 个员工对第 j 个区域的喜好度。

答案输出:

对于每个测试数据,输出可以达到的最大的喜好程度。

输入样例


3 3

1 1 1

100 50 25

100 50 25

100 50 25



输出样例



175


数据解释:此数据只存在一种安排方法,三个员工分别安置在三个区域。最终的喜好程度为 100+50+25=175

 

 

想了想,得出如下C#程序(我是C#初学者):

 

using System;
using System.Collections.Generic;

namespace ACM_2
{
    class Program
    {
        static void Main()
        {
            try
            {
                var program = new Program();
                string inputLine1 = Console.ReadLine();

                int areas = 0;
                int staffs = 0;

                if(inputLine1 != null)
                {
                    areas = Int32.Parse(i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值