2014_csu选拔1_B
Description
Here is no naked girl nor naked runners, but a naked problem: you are to find the K-th smallest element in the set of all irreducible fractions
, with 0<p<q≤N.
Input
The first line of input is an integer T(T≤1000), indicated there are T cases in the file.
For each cases, there is one line with two positive integers N and K.(1≤K<N≤1000000)
Output
For each case, output a line containing answer.
Sample Input
4
5 1
5 2
5 3
5 4
Sample Output
1/5
1/4
1/3
2/5 昨天陶叔告诉我直接暴力DFS,我当时推出个规律是,最小的一定是 1/n,然后1/n和2/n中间隔着一些分母比n小的分数,我一开始觉得这些分数就是1/(n-1)..(n-i),照此规律,前几个数是可以满足的,后来发现错了,i/n和i+1/n之间隔的分数不可能就是这样能枚举出来,还有一些分子比i大的同样可以存在于里面,所以这个DFS宣告失败。
后来看了下别人代码,发现有个规律就是 1/(n)一定比1/(n-1)小,而 2/(n)一定是比 1/(n-1)大,所以通过这个构建子树,从 1/2开始先向左扩张,找到最小的(即 1/n),然后回退找到父亲那里就是次小的,然后搜右子树,。。其实就是个中序遍历就可以了。
发现写完后,给个符合题目要求的比较大的数据程序直接崩了,我cout了一下,发现是dfs栈开不了那么多,但是在OJ上是可以成功运行的,所以有时候本机会崩的程序好像OJ不一定会崩,别看到大数据本机运行崩了就以为通不过OJ
#include <iostream>
#include <cstdio>
using namespace std;
int n,k;
struct node
{
int p,q;
node operator+(const node &rhs)
{
node nt;
nt.p=p+rhs.p;
nt.q=q+rhs.q;
return nt;
}
};
node ans;
bool dfs(node f1,node f2)
{
if (k==) return ;
node nf=f1+f2;
if (nf.q>n) return false;//边界设置
//cout<<nf.q<<" "<<n<<endl;
bool flag=dfs(f1,nf);
//cout<<nf.q<<endl;
if (flag) return ;
if (!flag)
{
k--;//搜到边界就说明该数肯定为接下来要找的这个次序的值
if (k==){
ans=nf;
return ;
}
}
return dfs(nf,f2);
}
int main()
{
//std::ios::sync_with_stdio(false);
//freopen("naked.in","r",stdin);
//freopen("csu_b.out","w",stdout);
int t;
scanf("%d",&t);
while (t--)
{
scanf("%d%d",&n,&k);
node f=(node){,}; //通过f和nf控制向左子树和右子树走
node nf=(node){,};
//cout<<" pass"<<endl;
dfs(f,nf);
printf("%d/%d\n",ans.p,ans.q);
}
return ;
}
我发现自己代码规范写的真差,今天铁哥也讲了这个,确实要改进
2014_csu选拔1_B的更多相关文章
- FZU 1894 志愿者选拔(单调队列)
传送门 Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动.参加志愿者选拔的同学们排队接受面试官们的面试.参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查. ...
- [总结]HNOI2015省队选拔
// 此博文为迁移而来,写于2015年4月21日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vy9t.html 这次省 ...
- FZU 1894 志愿者选拔 (单调队列)
/****************************************************************** 题目: 志愿者选拔(FZU 1894) 算法: 单调队列 算法思 ...
- HDU 2188 悼念512汶川大地震遇难同胞――选拔志愿者(巴什博奕)
选拔志愿者 题意: 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理学专家.根据要求,我 ...
- 1987-A. 集训队选拔
描述 南邮ACM暑期集训队一年一度的选拔如火如荼的开始了.按照以往的惯例,通过ACM校赛预赛和决赛的两轮选拔,成绩优异者将入选集训队,获得下半年在各大赛区现场赛上与各路神牛角逐奖牌的机会.但是,校赛的 ...
- HDU-2188 悼念512汶川大地震遇难同胞——选拔志愿者
http://acm.hdu.edu.cn/showproblem.php?pid=2188 巴什博奕(Bash Game)的转换:换一种说法而已 悼念512汶川大地震遇难同胞——选拔志愿者 Time ...
- HDOJ 2188 悼念512汶川大地震遇难同胞——选拔志愿者
Problem Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理 ...
- hdu 2188 选拔志愿者(sg博弈)
Problem Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理 ...
- 51Nod 1182 完美字符串(字符串处理 贪心 Facebook Hacker Cup选拔)
1182 完美字符串 题目来源: Facebook Hacker Cup选拔 基准时间限制:1 秒 空间限制:1 ...
随机推荐
- 011.Delphi插件之QPlugins,延时加载服务
这个DEMO是是把DLL插件的相关信息做成了一个配置文件,主程序加载这个配置文件,从而起到延时加载的作用 主程序代码如下 unit Frm_Main; interface uses Winapi.Wi ...
- iPhone Safari下iframe不显示滚动条无法滚动的解决方法。iframe的坑!
<div class="dataTables_wrapper" style="-webkit-overflow-scrolling:touch;overflow:a ...
- 【剑指Offer】面试题10- I. 斐波那契数列
题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2) ...
- Android数据库(sqlite)之Room
说在前面: 1.使用Room需要添加的依赖: dependencies { def room_version = "2.2.3" implementation "andr ...
- JS - 使 input 失去焦点
$(document).ready(function(){ $("body").click(function(){ if(!event.srcElement.type) { ...
- Android Studio Madual作为application的使用以及工作空间和modual的区别
Android Studio Madual作为application的使用以及工作空间和modual的区别 前言: 写这篇文章的目的是因为自己使用Android Studio开发时进入了一个误区,后面 ...
- java课程课后作业190502之单词统计
自己想的方法一直都不是很好,但是又一直忘了改自己的算法,只能硬着头皮接着用自己以前的老方法了 第0步:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后 ...
- git使用代理
在使用git科隆一个repo的时候,因为这个repo的子模块是托管在google上的,还是因为gfw导致子模块科隆不下来 只好使用代理了,那么怎么配置git使用代理呢 代码如下 因为我用的是ss所以这 ...
- C# 基本元素
一.构成C#的基本元素 注释和空白编译器不会编译,自动忽略:而标记是可以通过编译器编译的. 关键字 (keyword) 官方定义:关键字是类似标识符的保留的字符序列,不能用作标识符(以 @ 字符开头时 ...
- 吴裕雄--天生自然TensorFlow2教程:高阶操作
import tensorflow as tf a = tf.random.normal([3, 3]) a mask = a > 0 mask # 为True元素,即>0的元素的索引 i ...