loj2280 「FJOI2017」矩阵填数
状压 dp。参考there
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
int T, h, w, m, n, dp[1055][1055], qx[55], qy[55], dx, dy, blc, sss[505], bel[505];
int maxn[505];
const int mod=1000000007;
struct Node{
int xu, yu, xv, yv, vv;
}nd[15];
bool f(int x, int y, int i){
return (x>nd[i].xu && y>nd[i].yu && x<=nd[i].xv && y<=nd[i].yv);
}
int ksm(int a, int b){
int re=1;
while(b){
if(b&1) re = (ll)re * a % mod;
a = (ll)a * a % mod;
b >>= 1;
}
return re;
}
int main(){
cin>>T;
while(T--){
memset(dp, 0, sizeof(dp));
memset(bel, 0, sizeof(bel));
dx = dy = blc = 0;
scanf("%d %d %d %d", &h, &w, &m, &n);
for(int i=1; i<=n; i++){
scanf("%d %d %d %d %d", &nd[i].xu, &nd[i].yu, &nd[i].xv, &nd[i].yv, &nd[i].vv);
nd[i].xu--; nd[i].yu--;
qx[++dx] = nd[i].xu; qx[++dx] = nd[i].xv;
qy[++dy] = nd[i].yu; qy[++dy] = nd[i].yv;
}
qx[++dx] = 0;
qy[++dy] = 0;
qx[++dx] = h;
qy[++dy] = w;
sort(qx+1, qx+1+dx);
sort(qy+1, qy+1+dy);
dx = unique(qx+1, qx+1+dx) - (qx + 1);
dy = unique(qy+1, qy+1+dy) - (qy + 1);
for(int i=2; i<=dx; i++)
for(int j=2; j<=dy; j++){
blc++;
sss[blc] = (qx[i] - qx[i-1]) * (qy[j] - qy[j-1]);
maxn[blc] = m;
for(int k=1; k<=n; k++)
if(f(qx[i], qy[j], k))
maxn[blc] = min(maxn[blc], nd[k].vv);
for(int k=1; k<=n; k++)
if(f(qx[i], qy[j], k) && maxn[blc]==nd[k].vv)
bel[blc] |= 1<<(k-1);
}
dp[0][0] = 1;
for(int i=1; i<=blc; i++){
int fai=ksm(maxn[i]-1, sss[i]);
int suc=(ksm(maxn[i], sss[i])-fai+mod)%mod;
for(int j=0; j<(1<<n); j++){
dp[i][j] = (dp[i][j] + (ll)dp[i-1][j]*fai%mod) % mod;
dp[i][j|bel[i]] = (dp[i][j|bel[i]] + (ll)dp[i-1][j]*suc%mod) % mod;
}
}
printf("%d\n", dp[blc][(1<<n)-1]);
}
return 0;
}
loj2280 「FJOI2017」矩阵填数的更多相关文章
- 【LOJ】#2280. 「FJOI2017」矩阵填数
题解 我们发现没有限制的小方格可以随便填 然后考虑有限制的,我们把它切割成一个个小块(枚举相邻的横纵坐标),然后记录一下这个小块的最大值限制(也就是所有覆盖它的矩形最小的最大值) 记录一下每个小块的大 ...
- 【BZOJ5010】【FJOI2017】矩阵填数 [状压DP]
矩阵填数 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 给定一个 h*w 的矩阵,矩阵的行 ...
- 「BZOJ 5010」「FJOI 2017」矩阵填数「状压DP」
题意 你有一个\(h\times w\)的棋盘,你需要在每个格子里填\([1, m]\)中的某个整数,且满足\(n\)个矩形限制:矩形的最大值为某定值.求方案数\(\bmod 10^9+7\) \(h ...
- [FJOI2017]矩阵填数——容斥
参考:题解 P3813 [[FJOI2017]矩阵填数] 题目大意: 给定一个 h∗w 的矩阵,矩阵的行编号从上到下依次为 1...h ,列编号从左到右依次 1...w . 在这个矩阵中你需要在每个格 ...
- P3813 [FJOI2017]矩阵填数(组合数学)
P3813 [FJOI2017]矩阵填数 shadowice1984说:看到计数想容斥........ 这题中,我们把图分成若干块,每块的最大值域不同 蓝后根据乘法原理把每块的方案数(互不相干)相乘. ...
- [BZOJ5010][FJOI2017]矩阵填数(状压DP)
5010: [Fjoi2017]矩阵填数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 90 Solved: 45[Submit][Status][ ...
- bzoj5010: [Fjoi2017]矩阵填数
Description 给定一个 h*w 的矩阵,矩阵的行编号从上到下依次为 1..h,列编号从左到右依次1..w.在这个矩阵中你需要在每 个格子中填入 1..m 中的某个数.给这个矩阵填数的时候有一 ...
- bzoj 5010: [Fjoi2017]矩阵填数
Description 给定一个 h*w 的矩阵,矩阵的行编号从上到下依次为 1..h,列编号从左到右依次1..w.在这个矩阵中你需要在每 个格子中填入 1..m 中的某个数.给这个矩阵填数的时候有一 ...
- [luogu P3813] [FJOI2017] 矩阵填数 解题报告 (容斥原理)
题目链接: https://www.luogu.org/problemnew/show/P3813 题目: 给定一个 h*w的矩阵,矩阵的行编号从上到下依次为 1..h,列编号从左到右依次1..w. ...
随机推荐
- CSS中垂直水平居中
方法一:使用flex布局,父级元素设置justify-content和align-items <div class="cont"> <div class=&quo ...
- webpack.config.js====output出口文件的配置
output: { filename: './js/[name].[hash:8].js', /* * filename:在使用webpack-dev-server模式时,如果要使用hash,是不可以 ...
- edittext 设置不自动获取焦点
给父级控件 设置两个属性,可以把焦点抢夺过去,最好是没有任何事件的父级控件(本人比较喜欢在xml文件的跟布局设置,因为页面的跟布局一般情况下,是不会设置任何事件的) android:focusable ...
- (转)!注意:PreTranslateMessage弹出框出错
dlg.DoModal()截住了界面消息,所以返回时原来的pMsg的内容已经更改了,消息,窗口句柄都不在是if以前的值了,而且窗口句柄应该是对话框里的子窗口的句柄,所以调用CFrameWnd::Pre ...
- (转载)资源字典(Pro WPF 学习)
原地址:http://www.cnblogs.com/yxhq/archive/2012/07/09/2582508.html 1.创建资源字典 下面是一个资源字典(AppBrushes.xaml), ...
- jsp另外五大内置对象之response-设置头信息
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- 洛谷 P2598 [ZJOI2009]狼和羊的故事
题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...
- ABAP system landscape和vue项目webpack构建的最佳实践
基于Netweaver的ABAP transport route一般都有dev,test和prod三种类型的系统. 而Vue前端项目的webpack build设置也类似. 以SAP成都研究院数字创新 ...
- Hbase 操作工具类
依赖jar <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-cli ...
- 掉坑日志:Windows Native API与DPI缩放
高DPI显示器越来越普及,软件自然也要适应这个变化,最近实习的时候也遇到了一个关于DPI缩放的问题.因为内部框架的一个控件有BUG,会导致内容的显示出问题,后来实在没办法改成了用Windows Nat ...