Codeforces 452D [模拟][贪心]
题意:
给你k件衣服处理,告诉你洗衣机烘干机折叠机的数量,和它们处理一件衣服的时间,要求一件衣服在洗完之后必须立刻烘干,烘干之后必须立刻折叠,问所需的最小时间。
思路:
1.按照时间模拟
2.若洗完的衣服或者烘干的衣服较多来不及进行下一个步骤,则从一开始就顺延洗衣服的时间,贪心的思想也是体现在这里。
3.关键在于烘干衣服的顺延如何处理,因为需要调整洗衣服的起始时间,其实我们只要对烘干衣服的时间进行顺延处理就可以了,因为即使没有调整洗衣服的起始时间,那么下次到了烘干衣服的时间的时候因为烘干衣服的数量仍然被占用,所以可以顺次延时洗衣服的起始时间。
4.一开始担心复杂度的问题,但是交了之后发现时间并不多...这个问题还在思考中...
#include<bits/stdc++.h>
using namespace std;
struct st{
long long time,num;
int id;
st(long long a,long long b,int c){
time=a;id=c;num=b;
}
};
bool operator < (const st &a,const st &b){
if(a.time!=b.time)
return a.time<b.time;
return a.id>b.id;
}
multiset<st>a;
int main()
{
int k,n1,n2,n3,t1,t2,t3;
scanf("%d%d%d%d%d%d%d",&k,&n1,&n2,&n3,&t1,&t2,&t3);
long long a1,a2;
a1=a2=0;
a.insert(st(t1,n1,1));
while(k>0){
st tmp=*a.begin();
a.erase(a.begin());
//printf("%d %lld %lld\n",tmp.id,tmp.time,tmp.num);
if(tmp.id==1){
if(n2){
a.insert(st(tmp.time+t2,min((long long)n2,tmp.num),2));
a.insert(st(tmp.time+t1,min((long long)n2,tmp.num),1));
}
if(tmp.num>n2){
a.insert(st(tmp.time+1,tmp.num-n2,1));
}
n2-=min((long long)n2,tmp.num);
}
else if(tmp.id==2){
if(n3){
a.insert(st(tmp.time+t3,min((long long)n3,tmp.num),3));
}
if(tmp.num>n3){
a.insert(st(tmp.time+1,tmp.num-n3,2));
}
n2+=min((long long)n3,tmp.num);
n3-=min((long long)n3,tmp.num);
}
else{
k-=tmp.num;
n3+=tmp.num;
if(k<=0){printf("%I64d\n",tmp.time);return 0;}
}
}
}
Codeforces 452D [模拟][贪心]的更多相关文章
- CodeForces - 158B.Taxi (贪心)
CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...
- Codeforces Round #375 (Div. 2) A B C 水 模拟 贪心
A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...
- Codeforces Round #370 (Div. 2) A B C 水 模拟 贪心
A. Memory and Crow time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维
题意:博弈题面 给出一个数字序列 (>=11) 有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手 数字序列一定是奇 ...
- Codeforces Round #288 (Div. 2) C. Anya and Ghosts 模拟 贪心
C. Anya and Ghosts time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #482 (Div. 2) B、Treasure Hunt(模拟+贪心)979B
题目 大致题意 n表示要进行n次操作,接着给出三个字符串,表示三个人初始拥有的串.每次操作要替换字符串中的字母,询问最后在游戏中曾出现过的相同的子串谁最多. 思路 (1) 讨论最多的子串,肯定是全部 ...
- Codeforces 980 并查集/模拟贪心最小字典序 找规律/数去除完全平方因子 逆思维倍增预处理祖先标记点
A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...
- Codeforces 950C Zebras ( 贪心 && 模拟 )
题意 : 给出一个 01 串,要求你将其分隔出若干个子序列 ( 每个数字只能属于某一个子序列 ) ,子序列必须满足由 0 开头和结尾,且中间需 01 交替构成.若无法做到,则输出 -1. 分析 : ...
- CodeForces 6C(贪心 + 模拟)
题目链接 思路如下 贪心的思想,⚠️女士优先的策略,当它们吃掉之前的物品所用的时间相同的时候,此时女士先开始 继续吃 题解如下 #include<iostream> using names ...
随机推荐
- Linux-CentOS6.4-PXE-DHCP-FTP
DHCP服务器地址:192.168.1.100TFTPfFF服务器地址:192.168.1.100FTP服务器地址:192.168.1.100安装树目录:/var/ftp/pub引导程序目录:/var ...
- ActionContext表格总结
用一张表格来总结: 变量 从ActionContext中获得 生命周期 用Ongl来读取值 使用ServletConfigInterceptor来注入 ActionContext类 静态方法Actio ...
- android dimens 读取 px&dp问题
1.dimens.xml文件: <resources> <dimen name="area_margin_top">100dp</dimen& ...
- 转载: scikit-learn学习之回归分析
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...
- Python关键字yield的解释(stackoverflow)
3.1. 提问者的问题 Python关键字yield的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self, dista ...
- js中的各种宽高以及位置总结
在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...
- js替换字符指定字符方法
1.递归替换 function replaceChar(str, oldChar, newChar) { if (str.indexOf(oldChar) != -1) { str = str.rep ...
- Js闭包函数
一.变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域.变量的作用域无非就是两种:全局变量和局部变量.Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. ( ...
- 【log】log4j
常用log4j.properties配置文件 log4j.rootLogger = info,console #指定serviceImpl层 日志输出 log4j.logger.com.sms.ser ...
- .NET常用方法——邮件发送
邮件发送类文件,可直接使用: 调用方法(实例化.静态调用): 实例化: string exception = ""; SendEmail.SendEmail SE = new Se ...