先膜一波宽神Orz%%%%%

拿到这题的第一反应就是:暴力啊!感觉神奇的钟点并没有什么性质,可能卡常能过吧……所以就写了一个O(22^3*59^3)的暴力。本来想打表,但是发现代码长度有限制,写不下。写完后发现,总共只有127034种神奇的钟点,所以当k特别大时,直接输出-1就可以了。如果数据纯随机的话,2*10^9应该能骗过不少吧。然而这种并不对劲的思想显然是会被察觉的,虽然用尽各种方法卡常,但是并没有拿多少分。

下午听讲评时,宽神说:还能怎么做?暴力啊!

我:

事实上并不是神奇的卡常方法。这道题的正解竟然也是打表!不过要用到分段打表的技巧。因为可以发现,搜索时间时,已知前一个时间就可以递推出下一个时间。

这也就是说,暴力枚举可以从中间开始。这样就可以设定一个每段的大小k,只对排在第k,k*2,k*3等k的倍数打表,查询时从离查询的名次最近的表搜。这样就找到了暴力枚举(TLE)和打表(MLE或代码长度LE)的折中方法,分段打表(AC)。

#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<iomanip>
using namespace std;
int h1;
int h2,h3,m1,m2,m3;
int tmp1,gdc;
int upl,dnl,upr,dnr;
int ch1[]={,,,,,,,,,,,,,,,};
int ch2[]={,,,,,,,,,,,,,,,};
int ch3[]={,,,,,,,,,,,,,,,};
int cm1[]={,,,,,,,,,,,,,,,};
int cm2[]={,,,,,,,,,,,,,,,};
int cm3[]={,,,,,,,,,,,,,,,,};
inline int read()
{
int x=,f=;
char ch=getchar();
while((!isdigit(ch))&&ch!='-')ch=getchar();
if(ch=='-'){f=-,ch=getchar(); }
while(isdigit(ch))x=x*+ch-'',ch=getchar();
return x*f;
}
inline void write(int x)
{
char ch[];int f=;
if(!x){putchar('');return ;}
if(x<){putchar('-');x=-x;}
while(x)ch[++f]=x%+'',x=x/;
while(f)putchar(ch[f--]);
}
inline void writen(int x)
{
char ch[];int f=;
if(!x){putchar('');return ;}
if(x<){putchar('-');x=-x;}
while(x)ch[++f]=x%+'',x=x/;
while(f)putchar(ch[f--]);
putchar('\n');
}
inline int gcd(int x,int y)
{
//cout<<"+";
if(x>y)swap(x,y);
if(x==)return y;
return gcd(y%x,x);
}
void print()
{
if(h1<)putchar('');
write(h1);
putchar(':');
if(m1<)putchar('');
write(m1);
putchar(' ');
if(h2<)putchar('');
write(h2);
putchar(':');
if(m2<)putchar('');
write(m2);
putchar(' ');
if(h3<)putchar('');
write(h3);
putchar(':');
if(m3<)putchar('');
writen(m3);
}
int main()
{
int t=read();
if(t>){writen(-);return ;}
int h4,m4;
h1=ch1[t/];
h2=ch2[t/];
h3=ch3[t/];
m1=cm1[t/];
m2=cm2[t/];
m3=cm3[t/];
int T=(t/)*-;
bool f=;
for(;h1<;++h1)
{
if(f)m1=;
for(;m1<;++m1)
{
if(f)h2=;
for(;h2<;++h2)
{
if(h1+h2>=)continue;
if(f)m2=;
for(;m2<;++m2)
{
if(f)h3=;
for(;h3<;++h3)
{
if(h1+h2+h3>=)continue;
if(f)m3=;
for(;m3<;++m3)
{
//print();
//if(m3==0){++T;continue;}
m4=m1+m2+m3;
h4=m4/;
m4=m4-h4*;
if(m4>= || (!m4))continue;
h4+=h1+h2+h3;
if(h4>=)continue;
if((!h4) && (!h1+h2+h3))
{
// cout<<h1<<",";
++T;
f=;
//
if(t==T)
{
print();
goto end;
}
// cout<<t<<endl;
continue;
}
tmp1=gcd(h4,m4);
upl=h4/tmp1;
dnl=m4/tmp1;
tmp1=gcd(m1,m2);gdc=m1*m2/tmp1;
tmp1=gcd(gdc,m3);dnr=gdc*m3/tmp1;
upr=h1*dnr/m1+h2*dnr/m2+h3*dnr/m3;
tmp1=gcd(upr,dnr);
upr=upr/tmp1;
dnr=dnr/tmp1;
//cout<<t<<endl;
if(upl==upr && dnl==dnr)
{
// cout<<h1<<",";
++T;
f=;
// cout<<t<<endl;
//
if(t==T)
{
print();
goto end;
}
// if(t%10000==0)cout<<t;
} }
}
}
}
}
}
end:return ;
}
//

并不对劲的人好菜啊。

并不对劲的bjwc d4t1的更多相关文章

  1. bjwc Day3 & 4 妈妈我这是来了个什么地方呀

    真·bjwc开始了 Day3 T1啥啥啥 第k大斜率?想都没想码了个暴力,然后爆零...暴力都能错,退役 T2看着像网络流就扔了个网络流大暴力上去,六七十分的样子然后蜜汁wa T3题面说“想都没想就弄 ...

  2. bjwc Day0 大型签到日

    1.18期末考试 1.19试卷讲评 1.20我开始了bjwc愉快的冬眠之旅 上午先是颁发noip一等奖 我在台下笑得像个没有一等奖的孩子/手动微笑 然后去机房试了一下机 坐在鸡神边上,键盘竟然是坏的, ...

  3. 并不对劲的BJOI2019

    一些感想 现实并非游戏,并不支持反复刷关 猎人和防御工事一起被老山龙摧毁了: 猎人惨死雨中,结云村永无放晴之日: 猎人被狂龙病毒侵蚀,天空山上黑蚀龙泛滥. 好像这才是怪物猎人系列的真实结局呢 day ...

  4. 并不对劲的uoj276. [清华集训2016]汽水

    想要很对劲的讲解,请点击这里 题目大意 有一棵\(n\)(\(n\leq 50000\))个节点的树,有边权 求一条路径使该路径的边权平均值最接近给出的一个数\(k\) 输出边权平均值下取整的整数部分 ...

  5. 并不对劲的DFT

    FFT是一个很多人选择背诵全文的算法. #include<algorithm> #include<cmath> #include<complex> #include ...

  6. 并不对劲的字符串专题(三):Trie树

    据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 并不会讲Trie树. 1.poj1056-> 模板题. 2.bzoj1212-> 设dp[i]表示T长度为i的前 ...

  7. 并不对劲的字符串专题(二):kmp

    据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 先感叹一句<信息学奥赛一本通提高篇>上对kmp的解释和matrix67的博客相似度99%(还抄错了),莫非mat ...

  8. 并不对劲的bzoj1861: [Zjoi2006]Book 书架

    传送门-> 这题的正确做法是splay维护这摞书. 但是并不对劲的人选择了暴力(皮这一下很开心). #include<algorithm> #include<cmath> ...

  9. 并不对劲的bzoj3932: [CQOI2015]任务查询系统

    传送门-> 离线操作听上去很简单,遗憾的是它强制在线. 每个时刻可以看成可持久化线段树中的一个版本,而每一个版本的线段树维护的是值某一段区间且在这个版本对应的时刻出现的数之和. 会发现同一时刻可 ...

随机推荐

  1. 升级openssh踩得坑

    升级背景: 项目中使用的系统为CentOS6.8,经过漏洞扫描后发现openssh高危漏洞,具体描述如下:OpenSSH 7.2p2之前版本, sshd/ session.c/ do_setup_en ...

  2. Codeforces450 B. Jzzhu and Sequences

    B. Jzzhu and Sequences time limit per test 1 second memory limit per test 256 megabytes input standa ...

  3. python链家网高并发异步爬虫and异步存入数据

    python链家网二手房异步IO爬虫,使用asyncio.aiohttp和aiomysql 很多小伙伴初学python时都会学习到爬虫,刚入门时会使用requests.urllib这些同步的库进行单线 ...

  4. Uva 1572 自组合

    贴个源码// UVa1572 Self-Assembly // Rujia Liu #include<cstdio> #include<cstring> #include< ...

  5. POJ1013称硬币【枚举】

    Counterfeit Dollar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 52474   Accepted: 16 ...

  6. JQuery常用的案例

    1.给导航栏添加鼠标移上去的时候变换背景颜色的方法. $(function () { $(".nav li").mouseover(function () { $(this).cs ...

  7. Leetcode 187.重复的DNA序列

    重复的DNA序列 所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮 ...

  8. [luoguP1494] 岳麓山上打水 && [luoguP2744] [USACO5.3]量取牛奶Milk Measuring

    传送门 传送门 dfs选取集合,dp背包判断 虽然我觉的会TLE.. 但是的确是AC了 #include <cstdio> #include <cstring> #includ ...

  9. SQL SERVER 小技巧

    SQL SERVER 小技巧(不用exec实现in()的功能) declare @x varchar(20) SET @x='1,2,3' SELECT @x select * from data00 ...

  10. [bzoj3489]A simple rmq problem_KD-Tree

    A simple rmq problem 题目大意:给定一个长度为$n$的序列,给出$m$个询问:在$[l,r]$之间找到一个在这个区间里只出现过一次的最大的数. 注释:$1\le n\le 10^5 ...