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),每个物品有一个体积 ( ...
随机推荐
- 修改setup.py的源
方法一: 修改文件 ~/.pydistutils.cfg为: [easy_install] index_url = http://pypi.douban.com/simple 方法二: 直接在setu ...
- jQuery属性,方法操作
addClass() 向匹配的元素添加指定的类名.attr() 设置或返回匹配元素的属性和值.hasClass() 检查匹配的元素是否拥有指定的类.html() 设置或返回匹配的元素集合中的 HTM ...
- 66. 有序数组构造二叉搜索树[array to binary search tree]
[本文链接] http://www.cnblogs.com/hellogiser/p/array-to-binary-search-tree.html [题目] 编写一个程序,把一个有序整数数组放到二 ...
- Solr5.3.1通过copyField设置多个field(字段)同时检索
如果业务需要我们对多个field同时进行检索,有没有什么好的办法呢?非常幸运的是Solr为我们提供了copyField对多个field进行索引和检索.然而配置也非常简单. 修改schame.xml,添 ...
- 2.saltstack笔记之目标,模块,返回写入数据库
作者:刘耀 QQ:22102107 一.目标(targeting Minions) 1.匹配Minions Id 匹配所有 (*) [root@node1 salt]# salt '*' test.p ...
- 如何从sun公司官网下载java API文档(转载)
相信很多同人和我一样,想去官网下载一份纯英文的java API文档,可使sun公司的网站让我实在很头疼,很乱,全是英文!所以就在网上下载了别人提供的下载!可是还是不甘心!其实多去看看这些英文的技术网站 ...
- Road Construction(poj 3352)
题意:求最少天几条边,使这个无向图变成双连通图. /* tarjan缩点后,形成一棵树,求出叶子节点数tot,答案是(tot+1)/2 */ #include<cstdio> #inclu ...
- mysql 建表语句
修改id为自动增长: alter table book b_ISBN int(11) auto_increment; 自动增长要加的:auto_increment 基本的sql语句: 选择:sel ...
- hdu 2050:折线分割平面(水题,递归)
折线分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu 2041:超级楼梯(水题,递归)
超级楼梯 Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Su ...