zoukankan      html  css  js  c++  java
  • 【乱搞】【中等难度】noip模拟赛 藏妹子之处

    藏妹子之处(excel)

    问题描述:

    今天陈泽宇又找到了三个妹子,有着收藏爱好的他想要找三个地方将妹子们藏起来,将一片空地抽象成一个R行C列的表格,CZY要选出3个单元格。但要满足如下的两个条件:

    (1)任意两个单元格都不在同一行。

    (2)任意两个单元格都不在同一列。

    选取格子存在一个花费,而这个花费是三个格子两两之间曼哈顿距离的和(如(x1,y1)和(x,y2)的曼哈顿距离为|x1-x2|+|y1-y2|)。狗狗想知道的是,花费在minT到maxT之间的方案数有多少。

    答案模1000000007。所谓的两种不同方案是指:只要它选中的单元格有一个不同,就认为是不同的方案。

    输入格式:

     一行,4个整数,R、C、minT、maxT。3≤R,C≤4000, 1≤minT≤maxT≤20000。

    对于30%的数据,  3 ≤ R, C ≤ 70。

    输出格式: 

     一个整数,表示不同的选择方案数量模1000000007后的结果。

    输入输出样例:

    输入样例

    3 3 1 20000

     

    3 3 4 7

     

    4 6 9 12

    7 5 13  18

     

    4000 4000  4000  14000

    输出样例

    6

    0

    264

    1212

    859690013

     

    思路:

    我会说我还没有思路吗。。。基本是背hzwer黄巨大的代码的。。。

    明天进去听黄巨大再解释一下,然后再写吧

    代码:

    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    #define mod 1000000007
    using namespace std;
    long long ans=0;
    int t1[10001];
    int t2[10001];
    int R,C,minT,maxT; 
    int main()
    {
        freopen("excel.in","r",stdin);
        freopen("excel.out","w",stdout);
        cin>>R>>C>>minT>>maxT;
        for (int i=1;i<=R;i++) t1[i]=(R-i)*(i-1);
        for (int j=1;j<=C;j++) t2[j]=(C-j)*(j-1);
        for (int i=1;i<=R;i++)
         for (int j=1;j<=C;j++)
         {
                if (    ( (2*(i+j))>=minT ) && ( (2*(i+j))<=maxT )    ) 
                {
                    ans=(ans+ ((long long)t1[i]*t2[j]*6)%mod )%mod;
                }
         } 
         cout<<ans;
         return 0;
    }

    结果:

    用时这么久我也是服了。。。同一个代码为什么黄巨大交就是两秒多,我交就是四秒多呢?一定是黄巨大rp比我高。。。(/自卑)

    noip忘记取模的痛
  • 相关阅读:
    linux运维学习
    2017年阿里巴巴三面经验
    Spring Boot:在Spring Boot中使用Mysql和JPA
    meshroom和alicevision在Ubuntu16上的安装过程
    ubuntu rm -rf ntfs 硬盘恢复
    python 脚本内部修改 LD_LIBRARY_PATH
    python uml 图
    tlmgr 相关
    ubuntu 安装 clangd 10.0.0
    zsh 快捷键
  • 原文地址:https://www.cnblogs.com/seekdreamer/p/3961854.html
Copyright © 2011-2022 走看看