并不对劲的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]任务查询系统
传送门-> 离线操作听上去很简单,遗憾的是它强制在线. 每个时刻可以看成可持久化线段树中的一个版本,而每一个版本的线段树维护的是值某一段区间且在这个版本对应的时刻出现的数之和. 会发现同一时刻可 ...
随机推荐
- mysql常用命令用法
Mysql帮助文档地址:http://dev.mysql.com/doc/ 1.创建数据库: create database database_name; 2.选择数据库: use database_ ...
- Python之函数作业
Python之函数作业 爬页面 #爬虫页面,send一次爬一次 from urllib.request import urlopen def get(): while True: url = yiel ...
- 84-Market Facilitation Index 市场促进指数指标.(2015.7.3)
Market Facilitation Index 市场促进指数指标 MFI指标的计算方式为: MFI=High(最高价)-Low(最低价))/ Volume(成交量) MFI上升,成交量上升,表示价 ...
- CentOS下LVS DR模式负载均衡配置详解
一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Ma ...
- HDU 1016 素数环问题
题目大意: 给定1-n这n个数,组成以1开头的素数环,保证相邻两个数相加均为素数 题目用dfs搜索再回溯,这样碰到不成立的立刻退出递归,就减少了很多步骤,不然暴力来就是n!次复杂度,肯定是超时的 每次 ...
- codeforces365A
#include<stdio.h> #include<string.h>//刚做codeforces上的比赛题我都没看懂啊啊啊啊啊啊 int main() { int n,m, ...
- bzoj1834 网络扩容 网络流
好久没写题解了啊··· 题目大意: 给你一幅n个点的网络,先求出其1到n的最大流,每条弧还会有个属性\(cost_i\),表示没扩容一个单位的费用,现在我们要求的就是扩容K个单位的最小费用 思路: 这 ...
- [Nescafé 20] 玉蟾宫
★ 输入文件:jademoon.in 输出文件:jademoon.out 简单对比 时间限制:1 s 内存限制:128 MB [背景] 有一天,小猫rainbow和freda来到了湘西 ...
- 快速幂取模模板 && 51nod 1013 3的幂的和
#include <iostream> #include <cstdio> #include <cmath> #include <vector> #in ...
- hihocoder1496(高维前缀和)
题意:给定N个数A1, A2, A3, ... AN,小Ho想从中找到两个数Ai和Aj(i ≠ j)使得乘积Ai × Aj × (Ai AND Aj)最大.其中AND是按位与操作. 第一行一个整数N( ...