TYVJ P1077 有理逼近 Label:坑,tle的好帮手 不懂
描述
任 务 :
给定P、N(N>sqrt(p)),求X、Y、U、V,使x/y<sqrt(p)<u/v且x/y与sqrt(p)之间、sqrt(p)与u/v之间都不能再插入满足题意的有理分数。
输入格式
输出格式
测试样例1
输入
样例1:
2 5
样例2:
5 100
输出
样例1:
4/3 3/2样例2:
38/17 85/38
代码
#include<iostream>
#include<cstdio>
#include<vector>
#include<cmath>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
int des_int,P,N,a,b,ans[]={,,,,,,,,,};
double des; int check(int i,int j,double x){
return (fabs( des-double(ans[i])/double(ans[j]) ) > fabs( des-x ));
} void xiao(){//ans1~2
for(int i=des_int-;i<=N;i++){
int flag=;
for(int j=;j<=i;j++){
double x=double(i)/double(j);
if(x>des) continue;
if(check(,,x)){
double k1=(double(ans[])/double(ans[])),k2=x;
bool fl=(k1==k2);
if(fl) continue;
ans[]=i;ans[]=j;
}
else{
flag=;break;
}
}
if(flag==) continue;
}
} void da(){//ans3~4
for(int i=des_int+;i<=N;i++){
int flag=;
for(int j=i-;j>=;j--){
double x=double(i)/double(j);
if(x<des) continue;
if(check(,,x)){
if(fabs( des-double(ans[])/double(ans[]) )== fabs( des-x )) continue;
ans[]=i;ans[]=j;
}
else{
flag=;break;
}
}
if(flag==) continue;
}
}
int main(){
// freopen("01.txt","r",stdin);
scanf("%d %d",&P,&N);
des=sqrt(double(P));
des_int=des;
xiao();
da(); printf("%d/%d %d/%d\n",ans[],ans[],ans[],ans[]);
return ;
}穷尽今生所学,T掉2个点
上看不懂的别人代码:
#include <math.h>
#include <stdio.h>
#include <stdlib.h> int main(int argc, char **argv)
{
int i, j;
int p, n;
int a, b, c, d;
int beg, end;
double s, max = , min = , t;
scanf("%d%d", &p, &n);
s = sqrt(p);
for(i = ; i <= n; i++){
beg = i * s - ;
end = beg + ;
if(beg <= ){
beg = ;
}
if(end > n){
end = n;
}
for(j = beg; j <= end; j++){
t = (double)(j) / i;
if(t < s && t > max){
a = j, b = i;
max = t;
}
}
}
for(i = ; i <= n; i++){
beg = i * s;
end = beg + ;
if(beg <= ){
beg = ;
}
if(end > n){
end = n;
}
for(j = beg; j <= end; j++){
t = (double)(j) / i;
if(t > s && min > t){
c = j, d = i;
min = t;
}
}
}
printf("%d/%d %d/%d\n", a, b, c, d);
return ;
}
---------------我是猥琐的分割线---------------
#include<iostream>
#include<cstdio>
#include<vector>
#include<cmath>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
int des_int,P,N,a,b,ans[]={,,,,,,,,,};
double des; int check(int i,int j,double x){
return (fabs( des-double(ans[i])/double(ans[j]) ) > fabs( des-x ));
} void xiao(){//ans1~2
for(int i=des_int-;i<=N;i++){
int flag=;
for(int j=;j<=i;j++){
double x=double(i)/double(j);
if(x>des) continue;
if(check(,,x)){
double k1=(double(ans[])/double(ans[])),k2=x;
bool fl=(k1==k2);
if(fl) continue;
ans[]=i;ans[]=j;
}
else{
flag=;break;
}
}
if(flag==) continue;
}
} void da(){//ans3~4
for(int i=des_int+;i<=N;i++){
int flag=;
for(int j=des_int/i+;j>=;j--){
double x=double(i)/double(j);
if(x<des) continue;
if(check(,,x)){
if(fabs( des-double(ans[])/double(ans[]) )== fabs( des-x )) continue;
ans[]=i;ans[]=j;
}
else{
flag=;break;
}
}
if(flag==) continue;
}
}
int main(){
// freopen("01.txt","r",stdin);
scanf("%d %d",&P,&N);
des=sqrt(double(P));
des_int=des;
xiao();
da(); printf("%d/%d %d/%d\n",ans[],ans[],ans[],ans[]);
return ;
}39行调了个阈值成功骗分,主要都是da()函数耗的时间,也就没多想,+500有点危险,+100绝对过不了
想法来源于(能跑这么久的数肯定很大,分母也就没必要那么大了!!!)
TYVJ P1077 有理逼近 Label:坑,tle的好帮手 不懂的更多相关文章
- TYVJ P1037 阶乘统计2 Label:坑
描述 n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少 输入格式 第一行包括两个数n,k 输 ...
- TYVJ P1032 零用钱 Label:贪心
背景 USACO OCT09 7TH 描述 作為创造產奶纪录的回报,Farmer John决定开始每个星期给Bessie一点零花钱. FJ有一些硬币,一共有N (1 <= N <= 20) ...
- 1833 深坑 TLE 求解
题目描述: 大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 ...
- TYVJ P1004 滑雪 Label:记忆化搜索
背景 成成第一次模拟赛 第三道 描述 trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形.为了得到更快的速度,滑行的路线必须向下倾斜. ...
- TYVJ P1068 STR Label:KMP匹配 不懂
描述 给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度.给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个.N,M,K<=200000 输入格式 第一行三个数 ...
- TYVJ P1070 罗马数字 Label:一定要看的枚举
描述 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 L 50 M 1000V 5 C 100X 10 D 500最多3个同样的可以表示为10 ...
- TYVJ P1090 母舰 Label:模拟,题目看清就好
背景 广东汕头聿怀初中 Train#3 Problem 1 描述 在小A的星际大战游戏中,一艘强力的母舰往往决定了一场战争的胜负.一艘母舰的攻击力是普通的MA(Mobile Armor)无法比较的.对 ...
- TYVJ P1072 bomb Label:看不懂题意
描述 一场战争正在A国与B国之间如火如荼的展开.B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利!当然,A国人民不会允许这样的 ...
- TYVJ P1016 装箱问题 Label:01背包 DP
做题记录:2016-08-15 23:07:04 背景 太原成成中学第2次模拟赛 第三道 描述 有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 ( ...
随机推荐
- 代码风格与树形DP
Streaming很惨,不过因为比赛之间没有提交过就没掉(或掉了)rating.第二题是一个树形DP,但是我都在想第一题了,简直作死. 看着神犇的代码我也是醉了...各种宏,真是好好写会死系列. 看到 ...
- Linux生产服务器Shell脚本分享
Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...
- LVS-三种负载均衡方式比较
1.什么是LVS? 首 先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和 基于内容请求分发技术.调度器具 ...
- UML基础:统一建模语言简介
目录 背景知识 用例图 类图 序列图 状态图 活动图 组件图 部署图 结束语 英文原文:UML basics: An introduction to the Unified Modeling Lang ...
- MVC NonAction属性
3.1. NonAction属性 若将NonAction属性应用在Controller中的Action方法上,即使该Action方法是公共方法,也会告知ActionInvoker不要选取这个Actio ...
- DisJSet:Wireless Network(POJ 2236)
无线电网络 题目大意:就是地震后,所有的电脑都坏了,现在可以修复,而且要重新连成一个网络,两台电脑之间最大连接距离为D,两台电脑可以有中继电脑,按O修复电脑,按S测试两台电脑是否有链接,如果有就输 ...
- CodeForces - 416A (判断大于小于等于 模拟题)
Guess a number! Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- Fresco 源码分析(三) Fresco服务端处理(1) ImagePipeline为何物
4.3 服务端的处理 备注: 因为是分析,而不是设计,所以很多知识我们类似于插叙的方式叙述,就是用到了哪个知识点,我们再提及相关的知识点,如果分析到了最后,我想想是不是应该将这个架构按照设计的方式,重 ...
- mysql 源码包 有的版本 可能没有 CMakeCache.txt
如果没有CMakeCache.txt 文件编译的时候会报错!!找不到CMakeCache.txt
- 7.适配器模式(Adapter Pattern)
using System; namespace Test { /// <summary> /// 适配器模式主要解决的问题就是我们要调用的接口类型,无法满足我们新系统的使用需求, /// ...