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 閱讀(1020) 評論(0) 編輯 收藏 引用 所屬分類: 數據結構與算法
Powered by: C++博客 Copyright © Vincent