洛谷1350 车的放置

2023-11-07 20:58
文章标签 放置 洛谷 1350

本文主要是介绍洛谷1350 车的放置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

有下面这样的一个网格棋盘,a,b,c,d表示了对应边长度,也就是对应格子数。

当a=b=c=d=2时,对应下面这样一个棋盘

要在这个棋盘上放K个相互不攻击的车,也就是这K个车没有两个车在同一行,也没有两个车在同一列,问有多少种方案。同样只需要输出答案mod
100003后的结果。 输入输出格式 输入格式:

输入文件place.in的第1行为有5个非负整数a, b, c, d和k。

输出格式:

输出文件place.out包括1个正整数,为答案mod 100003后的结果。

先考虑一个长为a,宽为b的矩形,在里面放x个车,总的方案数为C(a,x) * C(b,x) * Σ(1..x)。
其实,这就相当于一个坐标有a种选法,另一个坐标有b种选法,选出x个坐标的方案数。
分成三个矩形,枚举左上角的矩形和右下角的矩形里有多少车,分别记为i和j,那么方案数就是qry(a,b,i) * qry(c,d,j) * qry(a-i,d-j,k-i-j),qry(a,b,x)就是a*b中放x个车。
C和Σ都可以预处理出来。

#include<cstdio>
#include<cstring>
#define LL long long
const int mod=100003,maxn=1000;
LL c[1010][1010],s[1010];
void init()
{for (int i=0;i<=maxn;i++)c[i][0]=1;for (int i=1;i<=maxn;i++)for (int j=1;j<=maxn;j++)c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;s[0]=1;for (int i=1;i<=maxn;i++)s[i]=(s[i-1]*i)%mod;
}
LL qry(int a,int b,int x)
{return c[a][x]*c[b][x]%mod*s[x]%mod;
}
int main()
{int i,j,k,m,n,p,q,x,y,z,a,b,c,d;LL ans=0;init();scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);for (i=0;i<=k&&i<=a&&i<=b;i++)for (j=0;i+j<=k&&j<=c&&j<=d;j++)if (k-i-j<=a-i&&k-i-j<=d-j)ans=(ans+qry(a,b,i)*qry(c,d,j)%mod*qry(a-i,d-j,k-i-j)%mod)%mod;printf("%lld\n",ans);
}

这篇关于洛谷1350 车的放置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366247

相关文章

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

洛谷 凸多边形划分

T282062 凸多边形的划分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先整一个半成品,高精度过两天复习一下补上 #include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <map>

能量项链,洛谷

解释:  环形dp问题还是考虑将环拉直,可以参考我上一篇文章:环形石子合并 [2 3 5 10 2] 3 5 10 将环拉直,[]内是一个有效的区间,可以模拟吸收珠子的过程,         如[2 3 5] <=>(2,3)(3,5)    2是头,3是中间,5是尾 len >= 3:因为最后[2 10 2]是最小的可以合并的有效区间 len <= n + 1因为[2 3

cocos2d-x Android实现广告条竖立放置

 2:实现 原理:将屏幕设置为竖屏,然后CCDirector::setDeviceOrientation()设置为cocos2d-x为横屏。            在这种转屏模式下,控件是不会旋转的 缺点:所有Android原生控件仍然是竖立的 注意事项: ccTouchesBegan,ccTouchesMoved, ccTouchesEnded传入的坐标值仍然是屏幕坐标

洛谷P5490扫描线

0是最小的数字,将一个线段看成一个区间,对于一个矩形,从下扫到上,入边为1,而出边为-1,意思是将这个区间上的所有点加1(区间修改).把线段表示为Line[i],其中记录了l,r,h,tag,左右端点,高度,入边还是出边(1或-1) 那么每次区间修改后不为0的区间它的值可能是1,2,3或者是其它数字,这不好统计,可以将它转化一下,0是不是表示没有被覆盖过的地方,我们只要统计0的个数然后用总长减去

C#自定义控件的放置与拖动

1、自定义控件 using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Text;using System.Threading

挤牛奶洛谷uasco

题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始2100秒结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300秒到1200秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200秒到1500秒)。

EPLAN中手动放置线号的方法

EPLAN中手动放置线号的方法 如下图所示,点击插入---------连接定义点, 如果没有显示红色的"", 点击键盘上的backspace键,然后如下图所示,选择CDP即可显示,点击确定, 选择需要放置线号的导线,如下图所示,鼠标选中后放置在合适位置, 放置完成后,设置线号的名称等属性信息,

洛谷刷题(7)

P8738 [蓝桥杯 2020 国 C] 天干地支 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊 (wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。 地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、

C++ 洛谷 哈希表(对应题库:哈希,hash)习题集及代码

马上就开学了,又一个卷季,不写点东西怎么行呢?辣么,我不准备写那些dalao们都懂得,熟练的,想来想去,最终还是写哈希表吧!提供讲解&题目&代码解析哦! 奉上题目链接: 洛谷题目 - 哈希,hash 1、哈希、哈希表(hash)简介 哈希(Hash)是一种将任意长度的输入映射为固定长度输出的算法。哈希函数的输出值称为哈希值或散列值。哈希函数具有以下特性: 确定性:对于相同的输入