1432: [ZJOI2009]Function

时间:2023-11-19 21:49:14

1432: [ZJOI2009]Function

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 710  Solved: 528
[Submit][Status][Discuss]

Description

1432: [ZJOI2009]Function

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时),都可以找到两个交叉的直线,就是第一层的那

两个线段所在的直线如图中左

1432: [ZJOI2009]Function

那么我们以这个为准,两边对称着加直线,会得到右图,每一层是折线,且每

加一对儿就多两条线段,一共要加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.