第1題染色(paint)
現有w*h
的棋盤格仔,要在其上用藍色染其中的一些格仔,形成乙個藍色的矩形。由於費用問題,你最多只能染色
m個格仔,請問你能染色的矩形最大面積是多少?
【輸入格式】
(paint.in)
第1行:2
個整數w和h
,範圍在
[1…10^6]。
第2行:
1個整數
m,範圍在
[1…10^12]。
【輸出格式】
(paint.out)
乙個整數,可能的矩形最大面積。
【輸入輸出樣例】
輸入 輸出
3 5
14 12
4 4
10 9
1000000 1000000
999999999999
999999000000
【分析】
這顯然是一道很簡單的題,但是我交的時候竟然錯了三次,有一次是因為沒有考慮到m>w*h的情況,有兩次是因為沒有去掉測試的語句。這一道題最直觀的思路就是列舉所有的w和h,求出所有的面積,並取乙個小於m又最大的情況。不過顯然可以觀察到只需列舉w或h即可,因為m/w就是以當前的w為一邊的最大又不超過m的矩形面積的另一邊長度。當然,還要判斷一下m/w是否超過h,如果超過就不行了,就放不下了。當然要注意另一點:當m>w*h時,怎樣列舉都是找不出來的,則直接輸出w*h就好了。
【**】
# include# include
using namespace std;
unsigned long long int w,h;
unsigned long long int m,i;
unsigned long long int maxans = 0;
int main()
for (i=1;i<=w;++i)
}cout << maxans << endl;
}
第2題飛鏢(dart)
小明喜歡玩飛鏢遊戲,他會把每次的得分都記錄在陣列中。今天有個飛鏢大獎,得獎的規則是:如果你
4次飛鏢的得分先後是
(a,b,c,d)
,滿足a*b*c = d 。
小明準備把記錄裡的其他項刪除,只留下滿足獲獎條件的
4個分數,他想問你有多少種不同方案?
【輸入格式】
(dart.in)
第1行:1
個整數n。
第2行:
n個整數,每個整數範圍在
[1…10^6]。
【輸出格式】
(dart.out)
乙個整數,方案數。
【輸入輸出樣例】
輸入 輸出
610 2 2 7 40 160 2
注:(10,2,2,40)
、(2,2,40,160) 8
128 64 32 16 8 4 2 1 0
212 3 4 5 6 8 12 16 20 24 40 24 20 16 12 8 6 5 4 3 2 3
【n範圍】
80%在[4…500],
100%
在[4…2000]。
【分析】
這一道題最基本的解法(最直觀的)是列舉a,b,c,並判斷a*b*c是否在陣列中存在,這可以用乙個計數排序的思想(或者雜湊表)用o(1)的時間判定a*b*c是否存在(還要判定a*b*c是否小於10^6),就可以過80%的資料。而滿分演算法,則是找到a*b和d/c的對應性,因為若a*b=d/c,則a*b*c=d,所以可以得出乙個o(n^2)的題解。
只不過要注意一點:在聯賽的時候,因為系統的不同,scanf對於linux與windows中long long的讀入所用的方式是不同的。舉個例子,假如a是long long,用scanf讀入時,在linux下是scanf("%lld",&a);,windows下是scanf("%i64d",&a);。考試時要注意這個不同。
【**】
# includeusing namespace std;
const int maxn = 2000;
const int pow10_6 = 1000000;
int show[pow10_6 + 2];
int num[maxn + 1];
int main()
for (int i=2;i!=n;++i)
}for (int j=i+1;j!=n;++j)}}
printf("%i64d\n",ans);
}
topcoder SRM 641 解題報告
題意 給乙個長度2n的序列,每次洗牌可以把前n個數任意排列 記為a 後n個數任意排列 記為b 然後把兩個序列交叉,即把序列排成a1,b1,a2,b2,a3,b3 an,bn。現在初始序列是1,2,3,4 2n,給出乙個目標序列,求能否用兩次洗牌達到目標序列。思路 大大大水題!3行 因為前n個數和後n...
topcoder SRM 642 解題報告
題意 有一張圖,n n 個節點 n 50 role presentation style position relative n 50 n 50 每條邊有乙個高度值,the king要從某條路走過必須滿足他的shoes高度小於等於這條路的高度值。他現在有一些金幣,把一條邊的高度約束上調 k k 個單...
67 單詞模式
給定一種 pattern 模式 和乙個字串 str 判斷 str 是否遵循相同的模式。這裡的遵循指完全匹配,例如,pattern 裡的每個字母和字串 str 中的每個非空單詞之間存在著雙向連線的對應模式。示例1 輸入 pattern abba str dog cat cat dog 輸出 true ...