A1016 | 磨人的大模拟
这题写得头晕……明天我再评价
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 1010
#define MAX 0x06FFFFFF
#define V vector<int> using namespace std; set<string> printTitle; typedef struct Record{
string name;
int month,dd,hh,mm;
int isOn;
Record(){}
Record(const Record& o){
name=o.name;month=o.month;dd=o.dd;hh=o.hh;mm=o.mm;isOn=o.isOn;
}
}Record; Record info[LEN];
int rate[];
int one_day_bill=; void init_one_day_bill(){
int i;
FF(i,){
one_day_bill+=*rate[i];
}
} bool cmp(Record a,Record b){
/*
if(a.name<b.name) return true;
else if(a.mouth<b.mouth) return true;
else if(a.dd<b.dd) return true;
else if(a.hh<b.hh) return true;
else if(a.mm<b.mm) return true;
return false;*/
if(a.name!=b.name) return a.name<b.name;
else if(a.month!=b.month) return a.month<b.month;
else if(a.dd!=b.dd) return a.dd<b.dd;
else if(a.hh!=b.hh) return a.hh<b.hh;
else return a.mm<b.mm;
} void diff(Record a,Record b,int& minute,int& money){
// minute=b.mm-a.mm+(b.hh-a.hh)*60+(b.dd-a.dd)*24*60;
// int i;
// money=0;
// if(a.dd!=b.dd)
// money+=(b.dd-a.dd)*one_day_bill;
// if(a.hh==b.hh) money=minute*rate[a.hh];
// else{
// for(i=a.hh;i<=b.hh;i++){
// if(i==a.hh) money+=(60-a.mm)*rate[i];
// else if(i==b.hh) money+=(b.mm)*rate[i];
// else money+=(60)*rate[i];
// }
// }
Record tmp=a;
minute=;money=;
while(tmp.dd<b.dd || tmp.hh< b.hh || tmp.mm < b.mm){
minute++;
money+=rate[tmp.hh];
tmp.mm++;
if(tmp.mm>=){
tmp.mm=;
tmp.hh++;
}
if(tmp.hh>=){
tmp.hh=;
tmp.dd++;
}
}
} int main(){
freopen("d:/input/A1016.txt","r",stdin);
int n,i;
FF(i,){
scanf("%d",&rate[i]);
}
init_one_day_bill();
scanf("%d",&n);
FF(i,n){
char buffer[];
I("%s",buffer);
I("%d:%d:%d:%d",&info[i].month,&info[i].dd,&info[i].hh,&info[i].mm);
info[i].name=buffer;
I("%s",buffer);
if(string(buffer)=="on-line") info[i].isOn=;
else info[i].isOn=;
}
sort(info,info+n,cmp); int on=,off,next;
while(on<n){
int needPrint=;
next=on;
while(next<n && info[next].name==info[on].name){
if(needPrint== && info[next].isOn){
needPrint=;
}else if(needPrint== && info[next].isOn==){
needPrint=;
}
next++;
}
// printf("%d\n",needPrint);
if(needPrint<){
on=next;
continue;
}
int allMoney=;
O("%s %02d\n",info[on].name.c_str(),info[on].month);
while(on<next){
while(on<next- && !(info[on].isOn&&info[on+].isOn==)) on++;
off=on+;
if(off==next){
on=next;
break;
}
Record a=info[on],b=info[off];
int minute;
int money;
diff(a,b,minute,money);
allMoney+=money;
O("%02d:%02d:%02d %02d:%02d:%02d %d $%.2lf\n",a.dd,a.hh,a.mm,b.dd,b.hh,b.mm,minute,money/.);
on=off+;
}
O("Total amount: $%.2lf\n",allMoney/.);
}
return ;
}
A1016 | 磨人的大模拟的更多相关文章
- Bzoj1972: [Sdoi2010]猪国杀 题解(大模拟+耐心+细心)
猪国杀 - 可读版本 https://mubu.com/doc/2707815814591da4 题目可真长,读题都要一个小时. 这道题很多人都说不可做,耗时间,代码量大,于是,本着不做死就不会死的精 ...
- HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛
题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...
- AC日记——神奇的幻方 洛谷 P2615(大模拟)
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...
- ACdream 1188 Read Phone Number (字符串大模拟)
Read Phone Number Time Limit:1000MS Memory Limit:64000KB 64bit IO Format:%lld & %llu Sub ...
- 磨人的Fragment的转换
磨人的Fragment的转换 本次任务是 程序运行之后将第一个Fragment加载出来 然后点击"SHOW NEXT PAGE"切换到第二个Fragment 当再次点击按钮时下方出 ...
- 2016ACM-ICPC网络赛北京赛区 1001 (trie树牌大模拟)
[题目传送门] 1383 : The Book List 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 The history of Peking University ...
- (大模拟紫题) Luogu P1953 易语言
原题链接:P1953 易语言 (我最近怎么总在做大模拟大搜索题) 分别处理两种情况. 如果只有一个1或0 直接设一个cnt为这个值,每次输入一个新名字之后把数字替换成cnt,最后cnt++即可. 注意 ...
- NOIP2017 时间复杂度 大模拟
再写一道大模拟题. 由于是限时写的,相当于考场代码,乱的一批. 题目链接:P3952 时间复杂度 先记几个教训: 字符串形式的数字比较大小老老实实写函数,字典序都搞错几次了 栈空的时候不但pop()会 ...
- [CSP-S模拟测试]:引子(大模拟)
题目描述 网上冲浪时,$Slavko$被冲到了水箱里,水箱由上而下竖直平面.示意图如下: 数字$i$所在的矩形代表一个编号为$i$的水箱.1号水箱为水箱中枢,有水管连出.除了$1$号水箱外,其他水箱上 ...
随机推荐
- SQL系列(十一)—— 函数(function)
SQL中的函数也非常多,而且不同的DBMS提供了相应的特殊函数.但是常用的共性函数大致可以分为以下几种: 函数类型 函数 数值函数 1.算术计算:+.-.*./ 2.数值处理:ABS()绝对值处理.P ...
- SQL系列(二)—— 查询(select)
在开始之前先了解下SQL中的操作分类.根据与数据库不同操作的交互,对数据不同的处理类型,可以将SQL分为四种:插入.删除.修改.查询.本篇文章中主要介绍查询操作.其实查询操作也是日常应用使用最为频繁且 ...
- java基本数据类型的变量
一.整型变量 短整型(short).整型(int)和长整型(long),它们都可以定义整型变量,但是由于分配的内存空间不同,所能表示的数据的长度也不同. 我们可以定义并初始化一个整型变量: int a ...
- 在ASP.NET Core中获取客户端和服务器端的IP地址(转载)
随着ASP.NET的发展,有不同的方式从请求中访问客户端IP地址.WebForms和MVC Web应用程序只是访问当前HTTP上下文的请求. var ip = HttpContext.Current. ...
- Vue3.0结合bootstrap做多页面应用(1)创建项目
本人主要做c# winform应用,刚接触vue,发现用vue做单页面应用的比较多,多页面的资料很少,特别是用vue3.0版本做多页面的资料,更少,所以自己整理一下,结合bootstrap和jquer ...
- 配置 Log4j 以便查看 MyBatis 操作数据库的过程
在 src/main/resources中添加 log4j.properties 配置文件 ,输入如下内 容.#全局面已直 log4j .rootLogger=ERROR, stdout #MyBat ...
- Java自学-操作符 关系操作符
Java的关系操作符 关系操作符:比较两个变量之间的关系 > 大于 >= 大于或等于 < 小于 <= 小于或等于 == 是否相等 != 是否不等 示例: public clas ...
- 前端1-----块级标签(独占一行),排版标签(样式排版),其他标签,form表单(input的多种类型)
前端1-----块级标签(独占一行),排版标签(样式排版),其他标签,form表单(input的多种类型) 一丶HTML块级标签 排版标签 p 标签: 段落标签,会自动在段落上下加上空白来分开 p标签 ...
- android启动时间慢的问题
[转]对于Android的性能这方面评估,大部分都是有超级兔子去比跑分的,还是不能反映全面的问题.就我知道的而言,应用启动时间是很影响用户体验的一个性能方面问题. 最近的一个项目,别人都说应用启动慢 ...
- Cheat Engine 模糊数值
打开游戏 玩到换枪为止 换枪 发现子弹数量是有限的200 扫描200 这是初次扫描 开两枪 剩余子弹数量194 再次扫描194 得到地址 尝试得到的这两个地址,经验证,第二个是我们想要的地址 重新开始 ...