1432: [ZJOI2009]Function
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 710 Solved: 528
[Submit][Status][Discuss]
Description
Input
一行两个整数n; k。
Output
一行一个整数,表示n 个函数第k 层最少能由多少段组成。
Sample Input
1 1
Sample Output
1
HINT
对于100% 的数据满足1 ≤ k ≤ n ≤ 100。
Source
题解:一道神奇的规律题(HansBug:感觉JSOI2015 Round2 Day1 T1都没这个题目神orz)
题解直接饮用吧,源链接在此,鸣谢BLADEVIL神犇么么哒
我们可以发现所有的情况(除n=1时),都可以找到两个交叉的直线,就是第一层的那
两个线段所在的直线如图中左
那么我们以这个为准,两边对称着加直线,会得到右图,每一层是折线,且每
加一对儿就多两条线段,一共要加k对儿,所以答案是2*k,由于图是对称的,就是
这张图从上往下看和从下网上看是对称的,所以上面第k个是下面第n-k+1个,所以
比较下这两个大小,k取min然后输出2*k就行了
/**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ var
m,n:longint;
begin
readln(n,m);
case n of
:writeln();
else if (n+)<(m*) then writeln((n-m+)*) else writeln(*m);
end;
end.