容斥原理-shuoj—小明系列之高中时光

2023-12-22 17:32

本文主要是介绍容斥原理-shuoj—小明系列之高中时光,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

小明是一个聪明的小孩,虽然初中没有前三年学习成绩都很差。但是凭借这中考前最后几个月的冲刺还是考进了一所离家里比较近的普通高中。刚进入高中小明对课堂上老师讲授的问题依然没有什么兴趣。但是小明的聪明头脑依然不会停止转动。平时只要一闲下来就会去思考一些有趣的数学问题。今天小明学校开运动会,小明和他的同学们都坐在操场上观看开幕仪式。爱思考的小明又闲不住了,正好小明身边有k个石子,小明又在地板上画了一个m行n列的矩形网格,问题是有多少种方法可以将这k个石子放进网格里?现在要你写程序计算这个问题,看看你能不能借助计算机的力量算的比小明快。每个格子最多放一个石子,所有的石子必须用完,另外小明为了加大难度又加了一个条件:第一行、最后一行、第一列、最后一列都得有石子。

Input

输入第一行为数据组数T(T<=50),每组数据包含三个整数m,n,k(2<=m,n<=20,k<=500)。输入数据至文件结尾。

Output

对于每组数据输出一行,方案总数除以1000007的余数。

Sample Input

22 2 12 3 2

Sample Output

02

题解:
容斥原理(p(A+B) = p(A) + P(B) - P(AB))  (百度链接,点击打开链接)。

组合数 (百度链接 点击打开链接)

本题主要运用了容斥原理和求组合数(组合数链接,点击打开链接)。

现在具体分析这道题。

四个边上都有点的组合  =  总组合数  -  四个边中至少有一个边没有点的组合数。

将问题转化成 求:四个边中至少有一个边没有点的组合数

用数组 dp[ i ][ j ]来保存组合数C(i  ,  j)。

由容斥原理:

设A=  上边没点
    B = 下边没点
    C = 左边没点
    D = 右边没点
四个边中至少有一个边没有点  =  A + B +  C  + D -AB - AC - AD  - BC - BD  -CD + ABC + ABD + ACD + BCD - ABCD

分别求出上述独立事件的组合数即为最终结果。



代码如下:
#include<bits/stdc++.h>
using namespace std;
const int mod = 1000007;
long long dp[405][405];//将组合数打表
void com(){memset(dp,0,sizeof(dp));dp[0][0] = 1;dp[1][0] = 1;dp[1][1] = 1;for(int i = 2;i<401;i++){for(int j = 0;j<=i;j++){if(j == 0||j == i)dp[i][j] = 1;else dp[i][j] = (dp[i-1][j-1]+dp[i-1][j])%mod;}}
}
int main(){com();int T;cin>>T;while(T--){int m,n,k;cin>>m>>n>>k;if(k<2||k>m*n){cout<<0<<endl;continue;}long long sum;sum = (dp[n*m][k] - 2*dp[(n-1)*m][k] - 2*dp[n*(m-1)][k]+mod)%mod;while(sum<0)sum+=mod;sum = (sum + dp[(n-2)*m][k] + dp[(m-2)*n][k] + 4 * dp[(n-1)*(m-1)][k])%mod;while(sum<0)sum+=mod;sum = (sum - 2*dp[(n-2)*(m-1)][k] - 2*dp[(m-2)*(n-1)][k]+mod)%mod;while(sum<0)sum+=mod;sum = (sum + dp[(n-2)*(m-2)][k])%mod;while(sum<0)sum+=mod;cout<<sum<<endl;}
谢谢!

这篇关于容斥原理-shuoj—小明系列之高中时光的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类