【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工具中,有一个合并居中功能,可以将选中的单元格合并成一个大的单元格.现在需要在程序中直接实现查询结果的汇总, 问题分析 ...
随机推荐
- java:Spring框架4(Project,ER图)
1.Project: ER图: applicationContext.xml: <?xml version="1.0" encoding="UTF-8"? ...
- cocos2dx[3.2](6) 节点类Node
与2.x相比,节点类Node的属性和功能做了大幅度的修改与增加. Node类是绝大部分类的父类(并不是所有的类,例如Director类是直接继承Ref类的),如Scene.Layer.Sprite以及 ...
- 【VS开发】设置文档标题
[注意]我们注意到我们的文档的创建的时候我们会发现系统会去调用Doc类中的OnNewDocument函数,这里我们知道他是一个虚函数,我们可以在这里设置我们的文档的标题. 代码如下: BOOL CGr ...
- lua基础学习(三)
一.lua函数 1.在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作,也可以用来计算一些值.Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print( ...
- MSF魔鬼训练营-3.1.2信息收集-通过搜索引擎进行信息搜集
1.Google hacking 技术 自动化的Google搜索工具 SiteDigger https://www.mcafee.com/us/downloads/free-tools/sitedig ...
- 利用三层交换机实现VLAN间路由
利用三层交换机实现VLAN间路由 本实验模拟企业网络场景.公司有两个部门一销 售部和客服部,分别规划使用VLAN 10和VLAN 20.其中销售部下有两台终端PC-1和PC-2,客服部下有一台终端PC ...
- Solr 4.4.0安装
软件包准备 JDK http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin Solr https://archi ...
- CentOS7之ssh-Xshell密钥认证登陆
操作系统版本:CentOS Linux release 7.2.1511 (Core) SSH版本:OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 1.打开Xshell工 ...
- mysql 官网下载太慢了,来这里!!!
RT.去官网下载mysql简直是折磨,太慢了!!! 但我还是坚持住了,下载下来了,我自己下载的是 MAC 5.7.27版本,网盘分享下,有需要的自提吧: 链接:https://pan.baidu.co ...
- Git介绍、安装、命令和实战
一.Git介绍 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. 二.Git安装(Mac系统) 在Git官网下载安装包双击直接安装 在终端输入git来检测Git ...