zoukankan      html  css  js  c++  java
  • 《Codeforces Round #645 (Div. 2)》

    C:

    思路:

    观察表可以发下,路径权值和最小的走法为一直向右然后一直向下。

    最大的走法为一直向下然后一直向右。(因为权值是斜向下递增)

    从下面图片可见,当我们将向右走的操作改成向下走,就可以让总的权值增加1.且发现最大值和最小值之间的数都能得到.

    那么显然ans = max-min+1.

     如果直接暴力去求max和min显然不行。

    观察可以发现为(x1-x2)*(y1-y2)+1..

    Code:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    typedef pair<int,int> pii;
    const int N = 1e4+5;
    const int M = 1e6+5;
    const int Mod = 998244353;
    #define pi acos(-1)
    #define INF 1e27
    #define INM INT_MIN
    #define pb(a)  push_back(a)
    #define mk(a,b) make_pair(a,b)
    #define dbg(x) cout << "now this num is " << x << endl;
    #define met0(axx) memset(axx,0,sizeof(axx));
    #define metf(axx) memset(axx,-1,sizeof(axx));
    #define sd(ax) scanf("%d",&ax)
    #define sld(ax) scanf("%lld",&ax)
    #define sldd(ax,bx) scanf("%lld %lld",&ax,&bx)
    #define sdd(ax,bx) scanf("%d %d",&ax,&bx)
    #define sddd(ax,bx,cx) scanf("%d %d %d",&ax,&bx,&cx)
    #define sfd(ax) scanf("%lf",&ax)
    #define sfdd(ax,bx) scanf("%lf %lf",&ax,&bx)
    #define pr(a) printf("%d\n",a)
    #define plr(a) printf("%lld\n",a)
    void slove()
    {
        int t;sd(t);
        while(t--)
        {
            int x1,x2,y1,y2;
            sdd(x1,y1);sdd(x2,y2);
            LL d1 = abs(x1-x2),d2 = abs(y1-y2);
            plr(d1*d2+1);
        }
    }
    int main()
    {
        slove();
       // system("pause");
        return 0;
    }
    View Code
  • 相关阅读:
    jQuery全选反选全不选
    Ubuntu安装VMware Workstation8.0.3
    ubuntu安装的软件如何启动
    ubuntu装VirtualBox遇到的问题
    你是优秀的PHP程序员吗?
    VMWare 三种工作模式(bridged、hostonly、NAT)
    最近要做的事
    090224
    2月23日 月曜日
    周五 26日
  • 原文地址:https://www.cnblogs.com/zwjzwj/p/13047870.html
Copyright © 2011-2022 走看看