并不对劲的bjwc d4t1
先膜一波宽神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的更多相关文章
- bjwc Day3 & 4 妈妈我这是来了个什么地方呀
真·bjwc开始了 Day3 T1啥啥啥 第k大斜率?想都没想码了个暴力,然后爆零...暴力都能错,退役 T2看着像网络流就扔了个网络流大暴力上去,六七十分的样子然后蜜汁wa T3题面说“想都没想就弄 ...
- bjwc Day0 大型签到日
1.18期末考试 1.19试卷讲评 1.20我开始了bjwc愉快的冬眠之旅 上午先是颁发noip一等奖 我在台下笑得像个没有一等奖的孩子/手动微笑 然后去机房试了一下机 坐在鸡神边上,键盘竟然是坏的, ...
- 并不对劲的BJOI2019
一些感想 现实并非游戏,并不支持反复刷关 猎人和防御工事一起被老山龙摧毁了: 猎人惨死雨中,结云村永无放晴之日: 猎人被狂龙病毒侵蚀,天空山上黑蚀龙泛滥. 好像这才是怪物猎人系列的真实结局呢 day ...
- 并不对劲的uoj276. [清华集训2016]汽水
想要很对劲的讲解,请点击这里 题目大意 有一棵\(n\)(\(n\leq 50000\))个节点的树,有边权 求一条路径使该路径的边权平均值最接近给出的一个数\(k\) 输出边权平均值下取整的整数部分 ...
- 并不对劲的DFT
FFT是一个很多人选择背诵全文的算法. #include<algorithm> #include<cmath> #include<complex> #include ...
- 并不对劲的字符串专题(三):Trie树
据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 并不会讲Trie树. 1.poj1056-> 模板题. 2.bzoj1212-> 设dp[i]表示T长度为i的前 ...
- 并不对劲的字符串专题(二):kmp
据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 先感叹一句<信息学奥赛一本通提高篇>上对kmp的解释和matrix67的博客相似度99%(还抄错了),莫非mat ...
- 并不对劲的bzoj1861: [Zjoi2006]Book 书架
传送门-> 这题的正确做法是splay维护这摞书. 但是并不对劲的人选择了暴力(皮这一下很开心). #include<algorithm> #include<cmath> ...
- 并不对劲的bzoj3932: [CQOI2015]任务查询系统
传送门-> 离线操作听上去很简单,遗憾的是它强制在线. 每个时刻可以看成可持久化线段树中的一个版本,而每一个版本的线段树维护的是值某一段区间且在这个版本对应的时刻出现的数之和. 会发现同一时刻可 ...
随机推荐
- [Python3网络爬虫开发实战] 2.1-HTTP基本原理
在本节中,我们会详细了解HTTP的基本原理,了解在浏览器中敲入URL到获取网页内容之间发生了什么.了解了这些内容,有助于我们进一步了解爬虫的基本原理. 1. URI和URL 这里我们先了解一下URI和 ...
- mysql explain的使用
一.explain返回各列的含义: 1.table:显示这一行的数据是关于那张表的 2.type:重要的列,显示连接使用了何种类型,从最好到最差的连接类型为const.eq_reg.ref.range ...
- Spider-scrapy 中的 xpath 语法与调试
把setting中的机器人过滤设为False ROBOTSTXT_OBEY = False 1 语法 artcile 选取所有子节点 /article 选取根元素 artile article/a 选 ...
- 51NOD 2370 奈芙莲的护符
>>这是原题传送门<< 答案参考来自 http://www.cnblogs.com/sugewud/p/9822933.html 思路:看到取值范围之后,仅有的思路还是暴力
- org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start()
http://freestyle21.cn 不知什么时候,启动eclipse的时候就一直不行,说是an error ..我查了下log 报错:org.osgi.framework.BundleExce ...
- [bzoj3306]树_dfs序_线段树_倍增lca
树 bzoj-3306 题目大意:给定一颗n个节点的树,支持换根.修改点权.查询子树最小值. 注释:$1\le n,q\le 10^5$. 想法: 如果没有换根操作,就是$dfs$序+线段树维护区间最 ...
- HDU——1281 棋盘游戏
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Servlet实现国际化
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/internationalization.html: 三个重要术语: 国际化(i18n):这意味着 ...
- ETL增量单表同步简述_根据dateTime增量
ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如 ...
- Python进阶系列之怎么写出pythonic的代码
使用 in/not in 检查key是否存在于字典中 判断某个key是否存在于字典中时,一般的初学者想到的方法是,先以列表的形式把字典所有的key返回,在判断该key是否存在于key列表中 d = { ...