zoukankan      html  css  js  c++  java
  • [CF1519B] The Cake Is a Lie

    前言

    老少皆宜。

    题目

    CF

    洛谷

    题目大意:

    (t) 组数据,每组数据有三个整数 (n,m,k),询问是否存在一条路径从 ((1,1))((n,m)) 的花费恰好(k)

    你有两种行走方式:

    • ((x,y)) 走到 ((x,y+1)),花费为 (x)
    • ((x,y)) 走到 ((x+1,y)),花费为 (y)

    (1le t le 100 ; 1le n,mle 100 ; 0le k le 10^4.)

    讲解

    我们可以通过瞪眼或者打表发现,无论你选择任何一条路径,花费恒为 (nm-1)

    考虑归纳证明。

    特殊地:

    当我们位于 ((1,1)) 时,花费为 (0),成立。

    一般地:

    当我们从 ((n-1,m)) 走向 ((n,m)) 时,花费为 ((n-1)*m-1+m=n*m-1),成立。

    当我们从 ((n,m-1)) 走向 ((n,m)) 时,花费为 (n*(m-1)-1+n=n*m-1),成立。

    也就是说我们可以通过递推证明。

    然后你就可以写出一份优秀的 (O(T)) 的代码。

    代码

    int main()
    {
    //	freopen(".in","r",stdin);
    //	freopen(".out","w",stdout);
        for(int T = Read(); T ;-- T)
        {
            n = Read(); m = Read(); k = Read();
            if(k == (n*m)-1) printf("YES
    ");
            else printf("NO
    ");
        }
    	return 0;
    }
    
  • 相关阅读:
    Tree Constructe(icpc济南)(二分图+构造)
    Cleaning(CF1474D)
    Matrix Equation (2020icpc济南)
    关于位运算
    poj2540半平面交+判范围
    做题记录0(并查集|树状数组)
    ac自动机
    二次剩余
    BSGS算法
    无向图的桥
  • 原文地址:https://www.cnblogs.com/PPLPPL/p/14726957.html
Copyright © 2011-2022 走看看