【NOIP2012模拟10.25】单元格
题目
在一个R行C列的表格里,我们要选出3个不同的单元格。但要满足如下的两个条件:
(1)选中的任意两个单元格都不在同一行。
(2)选中的任意两个单元格都不在同一列。
假设我们选中的单元格分别是:A,B,C,那么我们定义这种选择的“费用”= f[A][B] + f[B][C] + f[C][A]。 其中f[A][B]是指单元格A到单元格B的距离,即两个单元格所在行编号的差的绝对值 + 两个单元格所在列编号的差的绝对值。例如:单元格A在第3行第2列,单元格B在第5行第1列,那么f[A][B] = |3-5| + |2-1| = 2 + 1 = 3。至于f[B][C], f[C][A]的意义也是同样的道理。现在你的任务是:有多少种不同的选择方案,使得“费用”不小于给定的数minT,而且不大于给定的数maxT,即“费用”在【minT, maxT】范围内有多少种不同的选择方案。答案模1000000007。所谓的两种不同方案是指:只要它们选中的单元格有一个不同,就认为是不同的方案。
分析
我们枚举一个矩阵的长和宽,分别是i个点和j个点。
那么对于这个矩阵,我们求出三个单元格在矩阵中的位置的方案数,矩阵要包含这三个单元格,并且是包含这三个单元格的矩阵中最小的一个,单元格的位置主要分2种情况:
一、其中两个单元格在对角,另一个单元格不在边上
经过平移等操作,费用就是这个矩阵的周长\(2(i+j-2)\)(为什么减2自己理解,本人语文不好,不知道如何解释)
对角的单元格有2种位置(看图),不在边上单元格的位置有\((i-2)(j-2)\)种位置,
那么这个矩阵的答案就是\(2(i-2)(j-2)\)
二、其中一个单元格在矩阵的一个角,另两个单元格在边上
(经过平移等操作,费用就是这个矩阵的周长\(2(i+j-2)\)(为什么减2自己理解,本人语文不好,不知道如何解释))
这种情况又有4种情况(看图),
在长上的单元格有\((i-2)\)种位置,
在宽上的单元格有\((j-2)\)种位置。
那么这个矩阵的答案就是\(4(i-2)(j-2)\)
接着,
我们枚举的矩阵在原表格中又有\((r-i+1)(c-j+1)\)个,所以乘上\((r-i+1)(c-j+1)\)。
答案就是\(\sum_{i=3}^{r}\sum_{j=3}^{c}6(i-2)(j-2)(r-i+1)(c-j+1)\)
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const long long maxlongint=2147483647;
const long long mo=1000000007;
const long long N=50005;
using namespace std;
long long mxt,mnt,n,m,ans;
int main()
{
scanf("%lld%lld%lld%lld",&n,&m,&mnt,&mxt);
for(long long i=3;i<=n;i++)
for(long long j=3;j<=m;j++)
if(i+j+i+j-4>=mnt && i+j+i+j-4<=mxt)
{
ans=(ans+(i-2)*(j-2)*(n-i+1)*(m-j+1))%mo;
}
printf("%lld",ans*6%mo);
}
【NOIP2012模拟10.25】单元格的更多相关文章
- 【NOIP2012模拟10.25】旅行
题目 给定一个n行m列的字符矩阵,'.'代表空地,'X'代表障碍.移动的规则是:每秒钟以上下左右四个方向之一移动一格,不能进入障碍. 计算:在空地中随机选择起点和终点(可以重合,此时最短耗时为0),从 ...
- 【NOIP2012模拟10.25】剪草
题目 有N棵小草,编号0至N-1.奶牛Bessie不喜欢小草,所以Bessie要用剪刀剪草,目标是使得这N棵小草的高度总和不超过H.在第0时刻,第i棵小草的高度是h[i],接下来的每个整数时刻,会依次 ...
- 【NOIP2012模拟10.31】掷骰子
题目 太郎和一只免子正在玩一个掷骰子游戏.有一个有N个格子的长条棋盘,太郎和兔子轮流掷一个有M面的骰子,骰子M面分别是1到M的数字.且掷到任意一面的概率是相同的.掷到几.就往前走几步.当谁走到第N格时 ...
- [jzoj 5926] [NOIP2018模拟10.25] naive 的图 解题报告(kruskal重构树+二维数点)
题目链接: https://jzoj.net/senior/#main/show/5926 题目: 题解: 显然最小的最大路径在最小生成树上(最小生成树=最小瓶颈生成树) 于是我们建出kruskal重 ...
- 001-poi-excel-基础、单元格使用操作
一.概述 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI ...
- [转]NPOI 单元格级别应用
原文地址:http://hi.baidu.com/linrao/item/fadf96dce8770753d63aaef2 HSSFWorkbook hssfworkbook = new HSSFWo ...
- 【转】NPOI 单元格级别应用
NPOI 单元格级别应用A HSSFWorkbook hssfworkbook = new HSSFWorkbook();//初始化一个新的HSSFWorkbook实例 //#region 1.创建一 ...
- QTableWidget 用法总结(只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象)
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...
- 模拟Excel同一列相同值的单元格合并
背景 项目中有一个查询工作量,可以将查询的结果导出到Excel表中.在Excel工具中,有一个合并居中功能,可以将选中的单元格合并成一个大的单元格.现在需要在程序中直接实现查询结果的汇总, 问题分析 ...
随机推荐
- onserverclick
<button type="button" id="Log_Submit" runat="server" runat="se ...
- 使用svctraceviewer查看WCF服务异常信息
这两天遇到一个问题,调用一个WCF服务的时候,服务器端正常的返回了数据,但是客户端却遇到了一场 System.ServiceModel.CommunicationException: The unde ...
- AWSome Day简介
AWSome Day是什么? 它是一场为时一天.结合教育与技术新知的云计算技术免费研讨会.是面向所有开发人员.IT技术人员.或技术/业务领域决策者必备的基础云计算课程.AWS专业级讲师将在现场带领您从 ...
- 【HANA系列】SAP HANA SQL/MDX及TCP/IP端口介绍
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL/MDX ...
- mesh重叠闪烁问题
我用正交摄像机做了2d游戏,但是导出spine动画文件是个mesh ,在游戏里有时会出现2个Mesh来回切换显示顺序问题,导致闪烁 查了下并没有发现什么解决方案 后面突然发现只要将摄像机的Y轴偏移一点 ...
- python学习之数据类型(set)
3.9 集合(set) 3.9.1 介绍 集合是一个无序且不重复的元素集合.元素必须是可哈希的(int,str,tuple,bool).可以把它看作是dic的key的集合.用{}表示. 注意: ...
- Linux解决Python调用Matlab函数无法导入matlab.engine问题及其他注意事项
问题描述 Linux系统,根据matlab官方文档说明,利用Matlab中的API来实现Python调用Matlab函数.具体方法见文档: https://ww2.mathworks.cn/help/ ...
- 【VS开发】raw socket 的例子
raw socket 的例子 一. 摘要 Raw Socket: 原始套接字 可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRa ...
- mysql——多表——子查询——示例
子查询: 子查询是将一个查询语句嵌套在另外一个查询语句中,内层查询语句的查询结果,可以作为外来层查询语句提供查询条件. 因此在特定条件下,一个查询语句的条件,需要另外一个查询语句来获取. 前期准备表: ...
- HDU 5437 & ICPC 2015 Changchun Alisha's Party(优先队列)
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...