题目链接

题目大意

给你一个边长为n的正方形和边长为a和b的正方形,要求把边长为a和b的正方形放在长度为n的正方形内,且没有覆盖(可以相邻)求有多少种放法(mod 1e9+7)

题目思路

这个思路不是很容易想

假设a正方形在b正方形左边

那么只考虑纵坐标,还剩下n-a-b个空格,根据插空法则有C(n-a-b+1,2)种方法,然而需要注意可以这两个三角形可以插在一个空格里面则要加n-a-b+1,则总方案为C(n-a-b+2,2)然后考虑横坐标,那么a正方形有(n-a+1)种方法,b三角形有(n-b+1)种放法

那么总共可以有\(C(n-a-b+1,2)*(n-a+1)*(n-b+1)\)

还可以让a在b右边,上面,下面。由于是正方形所以直接答案4

但是你会发现会有重复的,为什么有的即是他的左边也是他的上面即同时满足两个条件的...

就是满足两个条件即\(C(n-a-b+1,2)*C(n-a-b+1,2)\)

显然也需要乘以4

那么ans=\(4*(C(n-a-b+1,2)*(n-a+1)*(n-b+1)-C(n-a-b+1,2)*C(n-a-b+1,2))\)

注意取模即可

代码

#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
//#include<unordered_map>
#define fi first
#define se second
#define debug printf(" I am here\n");
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const double pi=acos(-1);
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=2e3+5,inf=0x3f3f3f3f,mod=1e9+7;
const double eps=1e-10;
ll n,a,b;
signed main(){
int _;scanf("%d",&_);
while(_--){
scanf("%lld%lld%lld",&n,&a,&b);
if(n<a+b){
printf("0\n");
}else{
ll ans1=2*(n-a-b+2)%mod*(n-a-b+1)%mod*(n-a+1)%mod*(n-b+1)%mod;
ll ans2=(n-a-b+2)*(n-a-b+1)%mod*(n-a-b+2)%mod*(n-a-b+1)%mod;
printf("%lld\n",((ans1-ans2)%mod+mod)%mod);
}
}
return 0;
}

HHKB Programming Contest 2020 D - Squares 题解(思维)的更多相关文章

  1. HHKB Programming Contest 2020【ABCE】

    比赛链接:https://atcoder.jp/contests/hhkb2020/tasks A - Keyboard 代码 #include <bits/stdc++.h> using ...

  2. Social Infrastructure Information Systems Division, Hitachi Programming Contest 2020 D题题解

    将题意转换为一开始\(t = 0\),第\(i\)个操作是令\(t \leftarrow (a_i + 1) t + (a_i + b_i + 1)\).记\(A_i = a_i + 1, B_i = ...

  3. Social Infrastructure Information Systems Division, Hitachi Programming Contest 2020 C题题解

    首先,我们将题目理解成若\(i\)与\(j\)距离恰好为\(3\),则不可能\(p_i \equiv p_j \equiv 1 \space or \space 2 (\bmod 3)\).这就相当于 ...

  4. M-SOLUTIONS Programming Contest 2020 题解

    M-SOLUTIONS Programming Contest 2020 题解 目录 M-SOLUTIONS Programming Contest 2020 题解 A - Kyu in AtCode ...

  5. atcoder Keyence Programming Contest 2020 题解

    比赛地址 A 题意:给一个\(n*m\)的初始为白色的矩阵,一次操作可以将一行或一列染成 黑色,问至少染出\(k\)个黑点的最少操作次数. \(n\),\(m\)<=100,\(k\)<= ...

  6. 2021.7.27--Benelux Algorithm Programming Contest 2020 补提

    I Jigsaw 题目内容: 链接:https://ac.nowcoder.com/acm/contest/18454/I 来源:牛客网 You have found an old jigsaw pu ...

  7. Atcoder Panasonic Programming Contest 2020

    前三题随便写,D题是一道dfs的水题,但当时没有找到规律,直接卡到结束 A - Kth Term /  Time Limit: 2 sec / Memory Limit: 1024 MB Score ...

  8. 2017, X Samara Regional Intercollegiate Programming Contest E. Bonuses and Teleports (思维,模拟)

    题意:在\(x\)轴上有很多传送点和钻石,当位于传送点上时,可以传送到其他任意传送点(不记操作数),位于钻石上时可以吃掉它,每次可以移动一个单位,问最少多少次可以吃掉所有的钻石. 题解:对于某个位置上 ...

  9. AtCoder AIsing Programming Contest 2020 D - Anything Goes to Zero (二进制,模拟)

    题意:给你一个长度为\(n\)的\(01\)串,从高位到低位遍历,对该位取反,用得到的十进制数\(mod\)所有位上\(1\)的个数,不断循环直到为\(0\),输出每次遍历时循环的次数. 题解:根据题 ...

随机推荐

  1. tp3.2,php5使用PHPExcel将数据导出至Excel

    安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel public function checkexcel($id){ ...

  2. TypeError: render() got an unexpected keyword argument ‘renderer‘

    关注公众号"轻松学编程"了解更多 原因 在使用xadmin时,如果是Django2版本以上的会报这个错误.这是由于xadmin中的文件xadmin\views\dashboard. ...

  3. 技术总监的故事告诉大家,要学会say【NO!】

    今天就给大家分享一个发生在我自己身上的事情吧. 1 2015年的时候,我和我的领导A,还有几个小伙伴正在做一个"紧急定制",这个任务是公司老大CEO和重要客户定下来的一个项目,背后 ...

  4. 什么是 session 和 cookie

    cookie 大家应该都熟悉,比如说登录某些网站一段时间后,就要求你重新登录:再比如有的同学很喜欢玩爬虫技术,有时候网站就是可以拦截住你的爬虫,这些都和 cookie 有关.如果你明白了服务器后端对于 ...

  5. K8s之实践Pod深入理解

      K8s之实践Pod深入理解 1.同一pod下的nginx+php+mysql nginx+php+mysql.yaml文件 --- apiVersion: v1 kind: Secret meta ...

  6. Mybatis日记

    SqlSession build: ExecutorType :SIMPLE ,REUSE, BATCH, SIMPLE 为默认执行器: REUSE 为可重用执行器,重用Statement,执行器会缓 ...

  7. CF1396E——Distance Matching

    传送门:QAQQAQ(题面翻译) 以后博客可能一直咕咕咕了.一些做题的思考可能会直接放在代码里而不是单独写博客,因为这样太浪费时间,只有一些比较新的题才会单独写博客 思路:对于这种构造可行解使得权值和 ...

  8. 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)

    再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...

  9. 【Spring Boot】web开发

    ​ springboot在开发web项目的时候具备天然的优势,现在的很多企业级开发都是依托于springboot的. ​ 使用springboot的步骤: ​ 1.创建一个SpringBoot应用,选 ...

  10. wpf 全局异常捕捉+错误日志记录+自动创建桌面图标

    /// /// 创建桌面图标 /// public static void CreateShortcutOnDesktop(string LnkName) { String shortcutPath ...