大概是CCf第三题中最麻烦的一个吧

我的思路其实我觉得还可以,模拟...可是超时了233 只有90分 [ 可是我看网上其他人也是模拟算法啊,

速度还是太慢了 120行, 1个半小时  大部分花在了debug上了

总结: debug时 不要直接看中间结果,先自己仔细读一遍程序,很多bug不是逻辑错误,而是自己不细心....加油!!

 #include <bits/stdc++.h>
using namespace std;
struct node {
string name;
bool isok[][];
};
node ord[];
int mon[][]={,,,,,,,,,,,,,
,,,,,,,,,,,,};
string smon[]={"","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"};
string swek[]={"sun","mon","tue","wed","thu","fri","sat"};
map <string,int> mapp;
int t[]={,,,,,}; // min 0,hou 1,day 2,mon 3,week 4,year 5
int ts[],te[];
int base[]={,,,};
bool is_r (int year) {
if (year%==&&year%!=||year%==) return ;
return ;
}
void dd(int k) {
bool flag=is_r(t[]);
base[]=mon[flag][t[]];
for (int i=;i<=;i++) {
int tmp=t[i]+k;
k=tmp/base[i];
t[i]=tmp%base[i];
}
for (int i=;i<=;i++) {
if (i==) t[]=(t[]+k)%;
int tmp=t[i]-+k;
k=tmp/base[i];
t[i]=tmp%base[i]+;
}
t[]+=k;
}
int to_int (string str) {
int ans=;
for (int i=;i<str.size();i++)
ans=ans*+str[i]-'';
return ans;
}
void get_t(string str,int* x) {
x[]=to_int(str.substr(,));
for (int i=,pos=;i>=;i--,pos+=)
x[i]=to_int(str.substr(pos,));
}
bool is_same (int *x,int *y) {
for (int i=;i<=;i++)
if (x[i]!=y[i]) return ;
return x[]==y[];
}
vector <string> split(string str,const char flag=',') {
vector <string> ans;
istringstream iss(str);
while (getline(iss,str,flag)) {
if (str.size()) {
for (int i=;i<str.size();i++)
if (str[i]>='A'&&str[i]<='Z')
str[i]=str[i]-'A'+'a';
ans.push_back(str);
}
}
return ans;
}
int get_num (string str) {
if (str[]>=''&&str[]<='') return to_int(str);
return mapp[str];
}
void get_isok(string str,bool* isok) {
if (str=="*") {
for (int i=;i<=;i++) isok[i]=;
return ;
}
vector <string> sv=split(str);
for (int i=;i<sv.size();i++) {
string tmp=sv[i];
int pos=tmp.find("-");
if (pos==-) isok[get_num(tmp)]=;
else {
string s1=tmp.substr(,pos),s2=tmp.substr(pos+);
int l1=get_num(s1),l2=get_num(s2);
for (int j=l1;j<=l2;j++)
isok[j]=;
}
}
}
bool isok(node x) {
for (int i=;i<;i++)
if (!x.isok[i][t[i]]) return ;
return ;
}
int main ()
{
ios::sync_with_stdio(false);
for (int i=;i<=;i++) mapp[smon[i]]=i;
for (int i=;i<;i++) mapp[swek[i]]=i;
int n; string _s,_e;
cin>>n>>_s>>_e;
get_t(_s,ts); get_t(_e,te);
t[]=ts[]; t[]=ts[];
while (!is_same(t,ts)) dd(*);
for (int i=;i<=n;i++) {
for (int j=;j<;j++) {
string str; cin>>str;
get_isok(str,ord[i].isok[j]);
}
cin>>ord[i].name;
}
while (!is_same(t,te)) {
for (int i=;i<=n;i++)
if (isok(ord[i])) {
cout<<t[];
for (int j=;j>=;j--)
cout<<setw()<<setfill('')<<t[j];
cout<<" "<<ord[i].name<<"\n";
}
dd();
}
return ;
}

CCF-Crontab-201712-3的更多相关文章

  1. ccf 201712-3 Crontab(Python实现)

    一.原题 问题描述 试题编号: 201712-3 试题名称: Crontab 时间限制: 10.0s 内存限制: 256.0MB 问题描述: 样例输入 3 201711170032 201711222 ...

  2. CCF认证历年试题

    CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201709-1 打酱油(100分) CCF201703-1 分蛋糕(100分) CCF2 ...

  3. crontab介绍

    1.Cron的启动与关闭 由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务: /sbin/service crond start           //启动服务/sbin/se ...

  4. 使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  5. 浅谈 linux 例行性工作 crontab (linux定时任务)

    定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...

  6. 用Crontab打造简易工作流引擎

    1. 引言 众所周知,Oozie(1, 2)是基于时间条件与数据生成来做工作流调度的,但是Oozie的数据触发条件只支持HDFS路径,故而面临着这样的问题: 无法判断Hive partition是否已 ...

  7. Linux crontab定时器的使用

    crontab参数: -u:帮助其他用户建立或移除工作排程 -l:查阅crontab的工作内容 -r:移除所有的crontab的工作内容 -e:编辑crontab文件 每项工作有六个字段: * * * ...

  8. crontab 启动 、运行 和编辑 查看

    cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start /sbin/service crond stop /sbi ...

  9. Linux下使用crontab定时备份日志

    上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 ...

  10. Linux下实现秒级的crontab定时任务

    crontab的格式如下 * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 ...

随机推荐

  1. gat和post封装代码和爬虫的5个步奏

    1了解需求2根据需求找网站3请求4获取5存储from urllib import request, parsefrom urllib.error import HTTPError, URLError ...

  2. python之路-----python操作 mysql

    ========================pymysql============================ 一.pymysql 基础 安装命令:pip3 install pymysql - ...

  3. Divisor Subtraction

    Description You are given an integer number nn. The following algorithm is applied to it: if n=0, th ...

  4. 《深入分析Java web技术内幕》读书笔记(一)

    1.什么时网站 网站就是利用Html工具制作用于展示特定内容的网页集合,网站也是一种软件. 网站的开发过程需要考虑其完整性.目的性.扩展性和安全性. 2.C/S架构跟B/S架构 C/S架构:客户端和服 ...

  5. failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected 排坑指南

    训练maskrcnn时,出现了 failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected 一开始以 ...

  6. 阿里巴巴开源项目汇总-(JAVA)

    来源:https://segmentfault.com/a/1190000017346799 1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud ...

  7. 电脑小白和ta的小白电脑——MySQL的简单使用

    数据库的基本操作:增删改查 分别使用cmd环境和Navicat可视化工具连接MySQL数据库来实现 这里默认了已经安装和配置MySQL↓ https://www.cnblogs.com/gifted3 ...

  8. asp.net core 实战项目(一)——ef core的使用

    数据库设计 数据结构图如下:   此次实例比较简单,暂时只设计到上述3张表 SMUser:用于存储用户信息. Role:用于存储角色信息. SMUser_Role:用建立用户和角色关系的一直关联表. ...

  9. Hello1 web

    <?xml version="1.0" encoding="UTF-8"?>     xml版本,指定编码格式 <web-app versio ...

  10. Prime ring problem,递归,广搜,回溯法枚举,很好的题

    题目描述: A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each ...