BZOJ 1432 [ZJOI2009]Function
生活随笔
收集整理的這篇文章主要介紹了
BZOJ 1432 [ZJOI2009]Function
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1432: [ZJOI2009]Function
Description
Input
一行兩個整數n; k。Output
一行一個整數,表示n 個函數第k 層最少能由多少段組成。Sample Input
1 1Sample Output
1HINT
對于100% 的數據滿足1 ≤ k ≤ n ≤ 100。
很明顯這是一道結論題。又是愣沒想出來,以下來自:http://blog.csdn.net/zmoiynlp/article/details/44226459
n=1的時候輸出1,其余時候輸出2*k,
假如k>(n>>1)的話,令k=n-k+1(因為1和n-1是對稱的)。
為什么呢……
我們畫一個圖。(這個圖是很經典的)
這是5條直線(函數)。可以看到,這些點以
A
BC
DEF
GHIJ
的方式排列。
第一個部分只經過A(這樣一定是最優的)
第二個部分只經過BAC
第三個部分只經過DBECF……
1
1+2
2+3
3+4……
線段數比點數多一,所以就是
2
4
6
8……
特別地,當n=1時是1。
當然,對于結論題,代碼往往都很短……
當時圖已經畫出來了,但因為題目中的“連續函數”(天知道是不是線性的),卡了很久。但現在一想,只有線性最優啊……
我又先看了題解,罪過啊……
1 /************************************************************** 2 Problem: 1432 3 User: Doggu 4 Language: C++ 5 Result: Accepted 6 Time:0 ms 7 Memory:820 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 #include <algorithm> 12 int n, k, a; 13 int main() { 14 scanf("%d%d",&n,&k); 15 if(n==1) a=1; 16 else if(k<=(n>>1)) a=2*k; 17 else a=2*(n-k+1); 18 printf("%d\n",a); 19 return 0; 20 } 結論題?
轉載于:https://www.cnblogs.com/Doggu/p/bzoj1432.html
總結
以上是生活随笔為你收集整理的BZOJ 1432 [ZJOI2009]Function的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java(3) if结构
- 下一篇: Microsoft Fluent Des