2018ACM ICPC Asia Regional-Seoul L题 Working Plan(贪心)

news/2024/5/19 9:22:52/文章来源:https://blog.csdn.net/AmarisCR/article/details/89405130

题面:

题意:一共有m个工人,第i个工人一共工作wi天,一共有n天,第i天共有di个人工作,且每个人只要开始工作就必须连续工作w天,每次工作结束,至少休息h天才开始下一次工作,现在题目给n,m,w,h,数组w[i]和数组d[i],问有没有合理的安排方案满足所给条件,按输入顺序输出每个人的工作安排,每行表示一个人的工作安排,按照日期升序输出每次工作开始的天数

思路:把d[i]数组n^{2}预处理成有几个从第i天开始的工作,然后把所有人推进一个优先队列,下一个时间最近的工作分给剩余工作量最大的人,若有几人剩余工作量相同则分给上一个工作结束时间最早的人

代码:

#include<iostream>
#include <cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<functional>
#include <unordered_map>
#include<queue>
#include<cmath>
#include<unordered_map>
#include<fstream>
#include<ctime>
using namespace std;typedef long long ll;
const ll mod = 1e9 + 7;
const int maxn = 2050;typedef struct node
{int id;int wi;int now;bool operator <(const node &x) const{if (x.wi == wi)return now > x.now;return wi < x.wi;}
}node;node a;
int d[maxn];
vector<int> ans[maxn];
int m, n, w, h;
priority_queue<node> q;
int as = 0, ds = 0;int main()
{scanf("%d%d%d%d", &m, &n, &w, &h);for (int i = 1; i <= m; i++){scanf("%d", &a.wi);as += a.wi;a.wi /= w;a.id = i;a.now = 1;q.push(a);}for (int i = 1; i <= n; i++) {scanf("%d", &d[i]);ds += d[i];}if (as != ds){printf("-1\n");return 0;}for (int i = 1; i <= n; i++){for (int j = 1; j < w && i + j <= n; j++)d[i + j] -= d[i];}for (int i = 1; i <= n; i++) {if (d[i] < 0){printf("-1\n");return 0;}}for (int i = 0; i < w - 1; i++){if (d[n - i] != 0){printf("-1\n");return 0;}}for (int i = 1; i <= n;) {queue<node> tmp;node k;int f = 0;while (!q.empty()){k = q.top();q.pop();if (k.now<=i) {ans[k.id].push_back(i);d[i]--;k.wi--;f = 1;k.now = i + w + h;}tmp.push(k);if (!d[i])break;}while (!tmp.empty()){k = tmp.front();tmp.pop();if (k.wi)q.push(k);}if (!f)break;while (!d[i] && i <= n)i++;if (q.empty())break;}if (!q.empty()) {printf("-1\n");return 0;}for (int i = 1; i <= n; i++){if (d[i] != 0){printf("-1\n");return 0;}}printf("1\n");for (int i = 1; i <= m; i++){int len = ans[i].size();for (int j = 0; j < len - 1; j++){printf("%d ", ans[i][j]);}printf("%d\n", ans[i][len - 1]);}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_895584.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniGUI - v1.90.0.1506-SEO-国内最新版

产品亮点&#xff1a; 基于业界最先进的脚本库Sencha Ext JS。 包括Sencha Ext JS的OEM许可证。 创建状态Web应用程序的独特平台。 完整的IDE支持&#xff0c;用于创建项目&#xff0c;设计表单&#xff0c;框架和处理数据模块。 脚本客户端jVA脚本事件的高级支持。 库核心经…

EurekaLog 7.5.1.0 Enterprise for Delphi 10.3 fixed- SEO-开发小女

适用于Delphi 10.3的EurekaLog 7.5.1.0 Enterprise完整版本FiXED EurekaLog是新的Delphi和C Builder异常跟踪工具&#xff0c;它使您的应用程序&#xff08;GUI&#xff0c;控制台&#xff0c;Web等&#xff09;能够捕获所有异常&#xff0c;内存泄漏并检测无限循环和死锁。它…

Cosmos DB学习 - 在门户网站创建Azure Function(Node.js)连接 Cosmos DB查询数据

Cosmos DB学习 1、什么是结构化数据、非结构化数据与半结构化数据2、什么是关系型数据库&#xff0c;什么是非关系型数据库Nosql3、MongoDB4、在Azure中使用MongoDB的途径5、Azure 的 Cosmos DB概述6、在门户网站创建Node.js Function连接CosmosDB 1、什么是结构化数据、非结构…

JAVA SSM实现国际化 中英双语网站

一、思路 前段时间做了一个双语网站&#xff0c;记录一下自己实现国际化的方式。 实现国际化有两种方法。 1、第一种调用必应、百度、微软等翻译接口实时翻译。 优点&#xff1a;对于开发者来说非常省时省力&#xff0c;在前端直接调用接口翻译&#xff0c;使用js保存cooki…

浅谈大型网站动态应用系统架构

动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统…

sql server数据库《音乐网站》项目歌曲管理模块

1.sql server数据库《音乐网站》项目歌曲管理模块 你&#xff08;1&#xff09;任务描述 《歌曲管理》模块的E-R图如图2.50.1 所示&#xff0c;逻辑数据模型如图2.50.2 所示&#xff0c;物理数据模型如图2.50.3所示&#xff0c;数据表字段名定义见表2.50.1。请按以下设计完成数…

ASP.NET网站开发——LINQ TO SQL 动态数据支持

ASP.NET 3.5 Extensions CTP 包含了一个新特性是 ASP.NET Dynamic Data Support&#xff08;动态数据支持&#xff09;&#xff0c;它允许开发人员不用编写一行代码就能快速地建造使用LINQ to SQL对象模型的数据驱动网站。 下面就来简单介绍一下创建步骤&#xff1a; 1.创建AS…

ASP.NET网站开发——用户控件与HttpHandler

一丶用户控件 定义&#xff1a;用户控件可用来实现页面中可重用的代码&#xff0c;是可以一次编写就多处方便使用的功能块。它们是ASP.NET控件封装最简单的形式。由于它们最简单&#xff0c;因此创建和使用它们也最简单。用户控件实际上是把已有的服务器控件组合到一个空间容器…

ASP.NET网站开发——LINQ TO SQL 查询数据库数据(八大子句)

LINQ查询字句概述 1.查询&#xff08;Query&#xff09;是一组指令&#xff0c;这些指令可以从一个或多个给定的数据源中检索数据&#xff0c;并指定检索结果的数据类型和表现形式。 2.查询表达式是一种用查询语法表示的表达式&#xff0c;由一组用类似于SQL的生明性语法编写的…

ASP.NET网站开发——成员资格(安全模式)

安全的必要性 构造特殊的链接地址&#xff0c;导致文件内的数据泄露 数据库泄露 安全防范的首要范畴&#xff1a;所有的HTTP访问都要经过IIS&#xff0c;所以限制IIS的安全性是关键 asp.net的安全模式 简介&#xff1a;根据所请求的资源类型&#xff0c;IIS能够自己处理请求&…

ASP.NET网站开发——LINQ TO SQL类

LINQ TO SQL是LINQ中最重要的一个组件&#xff0c;为NET. Framework3.5所支持&#xff0c;它可以为关系数据库提供一个对象模型&#xff0c;并在该对象模型基础上实现对数据的查询丶添加丶修改丶删除等功能&#xff0c;即LINQ TO SQL提供了用于将关系数据作为对象管理的运行时…

React + Vite 实现一个音乐网站(项目搭建篇)

最近找工作屡屡碰壁&#xff0c;突然不想努力了… 最初想搭建一个个人博客&#xff0c;技术栈确定为React TS Vite&#xff0c;一方面是为了学习新知识&#xff0c;一方面是实在闲着。但是由于之前做过个人博客所有觉得个人博客可能没啥意思。主要是设计也是一大麻烦&#x…

React + Vite 实现一个音乐网站(menu篇)

众所周知&#xff0c;每个网站都有菜单… 1.建立component文件夹 内部创建menu文件夹&#xff0c;文件夹内创建index.jsx和index.scss 目录结构如下 2.代码的编写 1.解决思路&#xff1a;首先我们肯定是要搭建页面的&#xff0c;我将meun分为两部分一步份为logo&#xff0…

React + Vite 实现一个音乐网站(动画篇)

为了让网站能够炫酷一点&#xff0c;必然的动画是不可或缺的 现在实现一个类似canvas流动背景的功能&#xff0c;最初设计是遍历多个小球在页面上&#xff0c;然后小球在dom节点内移动变换。后决定加入小球一起变换&#xff0c;让小球跟随大球移动&#xff0c;同时小球也能有自…

React + Vite 实现一个音乐网站(aplayer音乐播放器 )

众所周知&#xff0c;音乐网站需要能播放音乐 1.页面搭建 我们需要搭建这样一个部分 那么秉承一分为二的原则&#xff0c;左边音乐列表&#xff0c;右边显示cd图片。理所应当我们得让cd运动起来。 components里面建立文件夹Music&#xff0c;文件夹内新建index.jsx和index.scs…

快速把网站变成纯灰度显示

直接上代码了&#xff0c;在Header中添加这句话&#xff1a; <style>html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1);-webkit-filter: grayscale(100%);}</style> 上面的应该是对应IE的&#xff0c;Mac版Chrome&#xff0c;没有进行实测…

看李俊超老师SEO视频教程 全程笔记

SEO教程详解 一次偶然的机会发现了百度文库新推出的公开课栏目&#xff0c;并在其中发现了的李俊超老师的SEO视频教程&#xff0c;从中学到了很多知识。并在观看的过程中做了如下笔记&#xff1a; 核心思想及工作流程 1&#xff0e;内容为王&#xff0c;外链为帝&#xff0…

网站在微信中提示从浏览器打开

做微信营销活动或者APK下载推广时候&#xff0c;域名被经常被封&#xff0c;做到微信中正常使用呢&#xff1f;这就要借助一些工具来实现有效的操作。 由于微信的限制&#xff0c;通常会出现下面几种情况 1、应用文件在内置浏览器中下载全部被屏蔽掉&#xff0c;造成很多人用…

插件效果【网站开发必备】——12款响应式 Lightbox(灯箱)效果插件

文章结束给大家来个程序员笑话&#xff1a;[M] 灯箱效果&#xff08;Lightbox&#xff09;是网站中最用常的效果之一&#xff0c;用于现实相似模态对话框的效果。网络上各种 Lightbox 插件满目琳琅&#xff0c;随着应响式计划&#xff08;Respnsive Design&#xff09;的开展&a…