about:blank
题解题目名称 二进制除法 奇怪的函数 最小函数值 矩阵乘法源文件名称 binary.(pas/c/cpp) xx.(pas/c/cpp) minval.(pas/c/cpp) matrix.(pas/c/cpp)输入文件名 binary.in xx.in minval.in matrix.in输出文件名 binary.out xx.out minval.out matrix.out时间限制 1秒 1秒 1秒 1秒内存限制 32M 32M 32M 32M测试点 10个 10个 10个 10个分值 100分 100分 100分 100分
Problem 1 : binary二进制除法
问题描述 二进制数n mod m的结果是多少?
输入数据 第一行输入一个二进制数n。 第二行输入一个二进制数m。
输出数据 输出n mod m的结果。
输入样例1010101010111000
输出样例1010
时间限制 各测试点1秒
内存限制 你的程序将被分配32MB的运行空间
数据规模 n的长度(二进制数的位数)<=200 000; m的长度(二进制数的位数)<=20。题解: 进制转换,当然,直接用二进制去做也是可以的
Problem 2 : xx奇怪的函数
问题描述 使得x^x达到或超过n位数字的最小正整数x是多少?
输入数据 输入一个正整数n。
输出数据 输出使得x^x达到n位数字的最小正整数x。
输入样例11
输出样例10
数据规模 n<=2 000 000 000题解: 关键是trunc((x*log10(x)/log10(10)+1))这个公式.可以直接求出x^x的位数.然后二分..纠结的是我二分竟然写错了2次..
Problem 3 : minval最小函数值
问题描述 有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci(x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。
输入数据 第一行输入两个正整数n和m。 以下n行每行三个正整数,其中第i行的三个数分别位Ai、Bi和Ci。输入数据保证Ai<=10,Bi<=100,Ci<=10 000。
输出数据 输出将这n个函数所有可以生成的函数值排序后的前m个元素。 这m个数应该输出到一行,用空格隔开。
样例输入3 104 5 33 4 51 7 1
样例输出9 12 12 19 25 29 31 44 45 54
数据规模 n,m<=10 000题解: 用小头堆来维护这些函数的值..每次取出最小的保存.然后对其更新..O(m log n)
Problem 4 : matrix矩阵乘法
问题描述 一个A x B的矩阵乘以一个B x C的矩阵将得到一个A x C的矩阵,时间复杂度为A x B x C。矩阵乘法满足结合律(但不满足交换律)。顺序给出n个矩阵的大小,请问计算出它们的乘积的最少需要花费多少时间。
输入数据 第一行输入一个正整数n,表示有n个矩阵。 接下来m行每行两个正整数Xi,Yi,其中第i行的两个数表示第i个矩阵的规模为Xi x Yi。所有的Xi、Yi<=100。输入数据保证这些矩阵可以相乘。
输出数据 输出最少需要花费的时间。
样例输入310 100100 55 50
样例输出7500
样例说明 顺序计算总耗时7500;先算后两个总耗时75000。
数据范围 n<=100。题解: 动态规划,最小代价子母树
posted on 2009-07-31 12:46 Vincent 阅读(1008) 评论(0) 编辑 收藏 引用 所属分类: 数据结构与算法
Powered by: C++博客 Copyright © Vincent