why051115
why051115
关注数: 1,037
粉丝数: 294
发帖数: 99
关注贴吧数: 6
求助!一道并查集 题目见二楼
题目(二分做)矩阵大小和要找的第m小的值,输出这个值 矩阵(matrix) 时间限制:1Sec 内存限制128MB 【题目描述】 给定一个n*n的矩阵A,第i行第j列的值a[i,j]= i^2+100000 × i + j^2 - 100000 × j + i × j,求出矩阵中第m小的的值 【输入】 两个正整数n,m,表示矩阵大小和要找第m小的值 【输出】 一行,表示第m小的值 【样例输入1】 5 10 【样例输出1】 -99939 【样例输入2】 3 9 【样例输出2】 200013 【数据范围】 100%1<=n<=50000,1<=m<=n*n 【提示】 每一列的数都是从小到大单调递增的,用两个二分,一个二分枚举答案,一个二分用来验证答案是否正确。 为什么超时了? var n,i:longint; m:int64; f:boolean; function cal(i,j:int64):int64; begin if i=0 then exit(-(1 shl 60)); exit(i*i+100000*i+j*j-100000*j+i*j); end; begin assign(input,'matrix.in');reset(input); assign(output,'matrix.out');rewrite(output); readln(n,m); f:=true; for i:=1 to n do if m-i>0 then m:=m-i else begin f:=false; break; end; if not f then begin writeln(cal(m,n-i+m)); halt; end; for i:=n-1 downto 1 do if m-i>0 then m:=m-i else begin f:=false; break; end; writeln(cal(n-i+m,m)); close(input);close(output); end.
求解!!! 2288: 【基础】小X转进制时间限制 : 1 Sec内存限制 : 256 Mb 题目描述 小X喜欢研究进制转换。 在了解了进制转换的一般流程后,小X突然想起了以前学过的回文数(正着读倒着读都一样的数),于是开始思考一个奇怪的问题:1到N 中有多少个整数的平方在M进制下是回文数呢? 小X随手列了几个: 2的平方4,10进制表示为4,是回文数; 3的平方9,2进制表示为 1001,是回文数; 9046的平方81830116,16进制表示为4E0A0E4,是回文数。 小X觉得要全列出来太难了,希望你帮帮他。 输入第一行包含用一个空格隔开的两个整数N,M。 输出第一行包含一个整数,表示满足要求的整数个数。 样例输入 2 10 样例输出 2 数据范围 对于30%的数据,M=10。 对于另外30%的数据,M=2。 对于 100%的数据,1≤N≤10000,2≤M≤16。 来源 常州市2015“信息与未来”夏令营选拔赛
1
下一页