腾讯 编程 机器和 任务题解法(很多贴的贪心解法是错的)

很多人贪心解法:,(数据水过了)
  先按时间排序,然后相等按等级排序,每次选的时候都满足情况下 选等级小的。

反例1:
机器 3 100 (第一个数是时间,第二个等级)
任务 3 0
      2 100
按这个方法输出600 实际700
反例2:
机器 30 30;29 40
任务 29 31 ; 28 30 
这个方法选第一个任务选了第二个机器(因为第一个不满足),然后第二个任务没得选了。输出是1个任务.   实际是2个都可以完成。

这题正规解法??


#笔试题目#
全部评论
本是一个最大匹配下,收益最大问题。 正规解法是 二分图,添加源汇点,跑最大费用最大流,TMD 点100000个,必超时。 结论--->这题有问题。出题人。。。拿了N年前多校错题搬过来。。
点赞 回复 分享
发布于 2018-04-05 20:03
原题的公式的500*xi+2*yi   yi范围是0-100  他的公式是200*xi+3*yi      yi范围是0-100
点赞 回复 分享
发布于 2018-04-05 22:16
大佬,这题在牛客哪地方啊,我想做做看,找不到啊😂
点赞 回复 分享
发布于 2019-04-12 10:35
我的贪心思路是,用最差的机器完成当前他能完成的收益最高的任务。可是WA40%,不知道为什么,感觉很完美。 #include <bits/stdc++.h> #define MEM(a,b) memset(a, b, sizeof(a)) using namespace std; typedef long long LL; typedef pair<int,int> pii; struct Node {     int t, val;     Node() {}     Node(int t, int v) : t(t), val(v) {}     bool operator < (const Node& o) const {         int x1 = 200 * t + 3 * val;         int x2 = 200 * o.t + 3 * o.val;         return x1 < x2;     } }; priority_queue<Node>q; int task[2010][110]; int mach[2010][110]; int main() {     int n, m, x, y;     scanf("%d%d", &n, &m);     for(int i = 0; i < n; ++ i) {         scanf("%d%d", &x, &y);         mach[x][y]++;     }     for(int i = 0; i < m; ++ i) {         scanf("%d%d", &x, &y);         task[x][y]++;     }     LL sum_task = 0, sum_val = 0;     for(int i = 1; i < 1440; ++ i) {         for(int j = 0; j <= 100; ++ j) {             while(task[i][j]--) {                 q.push(Node(i, j));             }             while(mach[i][j]--) {                 if(!q.empty()) {                     Node top = q.top();                     q.pop();                     sum_task++;                     sum_val += 1LL * 200 * top.t + 1LL * 3 * top.val;                 }             }         }     }     cout << sum_task << ' ' <<sum_val << endl;     return 0; }
点赞 回复 分享
发布于 2018-04-07 14:14
贪心和DP什么的感觉好难啊
点赞 回复 分享
发布于 2018-04-05 21:55
可以贪心做。先对机器进行贪心算法,按照从小到大排序,然后对任务从大到小贪心,每次选择满足当前剩余最大任务的资源最小的机器即可。如果不对机器从小太大排,可能后面的时间少但是难度大的任务没有机器去做。
点赞 回复 分享
发布于 2018-04-05 21:22

相关推荐

饥饿的长颈鹿就要上岸...:简历五项结构 简历只放五项内容,顺序和格式如下: 一、个人信息 只写名字、电话、邮箱 不写性别、年龄、籍贯、政治面貌、微信等额外信息 二、教育经历 格式:学校名称 | 学历 | 专业 | 就读时间 从左到右排列,一行写完 如果专业和岗位对口,写1-2行主修课程;不对口就不写 学历如果不占优势,可以把教育经历放到简历靠后的位置 三、实习/项目经历 如果没有实习经历,全部写项目经历 每条经历格式:项目名 + 岗位名 + 任职时间段 下面写三到五条工作内容 每条工作内容开头必须用四个字概括,加粗,后面跟一条完整描述 所有描述必须用STAR法则来写(情境-任务-行动-结果) 每一条都要有数据支撑和具体成果 四、个人优势 可以写获得的奖项、证书 如果奖项不够,就写你熟练掌握的技能 每条也要有具体数据或成果支撑,不能空泛堆砌 五、整体要求 一页纸,不要超过一页 个人信息只写名字加电话邮箱 贝贝试一下这个方式写简历,我虽然没收到offer,至少收到了好几轮面试
点赞 评论 收藏
分享
04-15 20:51
门头沟学院 Java
纳斯卡可:把名字改一下吧 千万级用户你真测过吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务