zoukankan      html  css  js  c++  java
  • BZOJ1432: [ZJOI2009]Function(找规律)

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 1523  Solved: 1128
    [Submit][Status][Discuss]

    Description

    有n个连续函数fi(x),其中1≤i≤n。对于任何两个函数fi(x)和fj(x),(i!=j),恰好存在一个x使得fi(x)=fj(x),
    并且存在无穷多的x使得fi(x)<fj(x)。对于任何i;j;k,满足1≤i<j<k≤n,则不存在x使得fi(x)=fj(x)=fk(x)。
    如上左图就是3个满足条件的函数,最左边从下往上依次为f1;f2;f3。右图中红色部分是这整个函数图像的最低层
    ,我们称它为第一层。同理绿色部分称为第二层,蓝色部分称为第三层。注意到,右图中第一层左边一段属于f1,
    中间属于f2,最后属于f3。而第二层左边属于f2,接下来一段属于f1,再接下来一段属于f3,最后属于f2。因此,
    我们称第一层分为了三段,第二层分为了四段。同理第三层只分为了两段。求满足前面条件的n个函数,第k层最少
    能由多少段组成。

    Input

    一行两个整数n; k。1 ≤ k ≤ n ≤ 100。

    Output

    一行一个整数,表示n 个函数第k 层最少能由多少段组成。

    Sample Input

    1 1

    Sample Output

    1

    HINT

     

    Source

    考虑最优的情况一定是在所有线段的中间插一条,因此每一层会多$2$个贡献

    又因为正着和倒着是一样的,因此要从$n-k+1$和$k$中取个$min$

    这里有图

    https://blog.csdn.net/CHNWJD/article/details/71909581

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int main() {
        int N, K;
        scanf("%d %d", &N, &K);
        printf("%d", N == 1 ? 1 : (min(K, N - K + 1) << 1));
        return 0;
    }
  • 相关阅读:
    linux 首次登陆与线上求助
    003生信人必练
    计算器概论
    01 git 概念
    01 基因组学基本感念
    Python 函数习题
    Python字符编码详解,str,bytes
    python class
    [Leetcode]287. Find the Duplicate Number
    深度解析Word2vec
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/9245380.html
Copyright © 2011-2022 走看看