离散化

状压DP,一不小心就T了.......

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int mod=1e9+7;
int h,w,m,n,Ex[1005],Ey[1005],Lim[1005],F[2005],cntx,cnty,cnt,Num[1005],belong[2005];
struct node{int x1,y1,x2,y2,lim;
}a[15];
int pow(int a,int b){int ans=1;while (b){if (b&1) ans=1ll*ans*a%mod;a=1ll*a*a%mod;b=b>>1;}return ans;
}
void Pre(){sort(Ex+1,Ex+cntx+1); cntx=unique(Ex+1,Ex+cntx+1)-Ex-1;sort(Ey+1,Ey+cnty+1); cnty=unique(Ey+1,Ey+cnty+1)-Ey-1;cnt=0;for (int i=2; i<=cntx; i++)for (int j=2; j<=cnty; j++){Num[++cnt]=(Ex[i]-Ex[i-1])*(Ey[j]-Ey[j-1]);Lim[cnt]=m;belong[cnt]=0;for (int k=0; k<n; k++) if (a[k].x1<=Ex[i-1] && a[k].x2>=Ex[i] && a[k].y1<=Ey[j-1] && a[k].y2>=Ey[j]) Lim[cnt]=min(Lim[cnt],a[k].lim);for (int k=0; k<n; k++) if (a[k].x1<=Ex[i-1] && a[k].x2>=Ex[i] && a[k].y1<=Ey[j-1] && a[k].y2>=Ey[j] && Lim[cnt]==a[k].lim) belong[cnt]|=(1<<k);}
}
int main(){int T;scanf("%d",&T);while (T--){scanf("%d%d%d%d",&h,&w,&m,&n);cntx=cnty=0;Ex[++cntx]=0;Ex[++cntx]=h;Ey[++cnty]=0;Ey[++cnty]=w;for (int i=0; i<n; i++){scanf("%d%d%d%d%d",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2,&a[i].lim);a[i].x1--,a[i].y1--;Ex[++cntx]=a[i].x1;Ex[++cntx]=a[i].x2;Ey[++cnty]=a[i].y1;Ey[++cnty]=a[i].y2;}Pre();memset(F,0,sizeof(F));F[0]=1;for (int i=1; i<=cnt; i++)for (int now=(1<<n)-1; now>=0; now--)if (F[now]){int Val=F[now];F[now]=0;(F[now|belong[i]]+=1ll*Val*(pow(Lim[i],Num[i])-pow(Lim[i]-1,Num[i])+mod)%mod)%=mod;(F[now]+=1ll*Val*pow(Lim[i]-1,Num[i])%mod)%=mod;}printf("%d\n",F[(1<<n)-1]);}return 0;
}

  

转载于:https://www.cnblogs.com/silenty/p/9887909.html

BZOJ 5010: [Fjoi2017]矩阵填数相关推荐

  1. [BZOJ5010][FJOI2017]矩阵填数(状压DP)

    5010: [Fjoi2017]矩阵填数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 90  Solved: 45 [Submit][Status ...

  2. 2018D2T2 P5023 填数游戏

    P5023 填数游戏 https://www.luogu.com.cn/problem/P5023 解题参考: https://www.acwing.com/activity/content/code ...

  3. 第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)

    试题 C: 蛇形填数 本题总分:10 分 [问题描述] 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 容易看出矩阵第二行第二列中的数是 5.请你计算矩阵中第 2 ...

  4. 【NOIP2015】【Luogu2615】神奇的幻方(模拟填数)

    problem 给一定n*n的矩阵,要求填上1~n*n的数,使之每行.列.对角线的和都相等. n为奇数时,按如下步骤构建: 1.若(K−1)在第一行但不在最后一列,则将K填在最后一行,(K−1)所在列 ...

  5. 多项式辗转相除法求最大公约数_点灯游戏、方格填数与 Chebyshev 多项式(续)...

    本文是上一篇文章的续集. 预告:上篇文章说过的基解可视化在本文末尾,不想看中间推导过程的可以直接拉到最底下看图.个人觉得这些图都相当地优美,大概这就是数学的魅力吧. Chebyshev 多项式的性质 ...

  6. 【NOIP2018提高组D2T2】填数游戏

    前言--2020.10.17 下面的公式推导似乎有些出锅,具体情况就看图想想. Description 小D特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个n*m的矩形表格.玩家 ...

  7. 【题解】[NOIP2018 提高组] 填数游戏

    题意 给你一个 01 矩阵,一条从左上到右下的路径,可以表述为 DR 的字符串和 01 串.构造填数方案,满足 DR 串小的 01 串一定大. Solution: 考点:数学+搜索+找规律/推式子. ...

  8. Zig-Zag(Z型)填数

    描述 在一个m*n的数组中,按照Zig-Zag的顺序依次填写1,2,3,-m*n. 输入 两个整数m,n表示m*n的矩阵,整数间以空格隔开.2<=m,n<100 输出 输出矩阵 样例1 输 ...

  9. 方块填数 “数独”是当下炙手可热的智力游戏。一般认为它的起源是“拉丁方块”,是大数学家欧拉于1783年发明的。 如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部

    /* 方块填数 "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6的小格被分为 ...

最新文章

  1. 知识图谱实体链接是什么?一份“由浅入深”的综述
  2. 通信 / HTTP / 什么是 REST 接口
  3. Java黑皮书课后题第10章:10.4(MyPoint类)设计一个名为MyPoint的类,代表一个以x坐标和y坐标表示的点
  4. WebView http图片加载失败
  5. SAP Spartacus 自定义指令的实现以及通过@HostBinding实现属性绑定
  6. 云南省行政村谷歌图层_云南省基本农田划定工作实施细则
  7. ArrayList和LinkedList使用不当,性能差距会如此之大!
  8. 性能提升120倍!滴滴东北大学提出自动结构化剪枝压缩算法框架
  9. Linux centosVMware df命令、du命令、磁盘分区
  10. 【Java】java.util.Objects 工具类方法研究
  11. 开店软件透彻分析推荐
  12. 12个新鲜出炉的Web开发框架
  13. python语言程序设计期末试卷_Python语言程序设计17182试题题目及答案,课程2020最新期末考试题库,章节测验答案...
  14. IE9 和 IE11 安装及相关补丁
  15. pbootcms模板,pbootcms模板程序,pboot响应式模板
  16. MATLAB中.m文件命名规则
  17. Python制作个人动漫头像(简化版)
  18. 织梦模板被植入index.html,织梦dedecms百度快照劫持注入代码防范
  19. android 亮屏 激活自动亮度调节,Android 屏幕亮度调节(2.0以后出现亮度自动调节)如何开启、关闭亮度自动调节...
  20. 3D建模贴图是个啥?先薅羊毛再说!(附1000张高清3D贴图素材)

热门文章

  1. html中富田文本,富田桥曾氏游浆豆腐制作技艺
  2. 平方预测误差(Squared prediction error,SPE)和霍特林统计量(Hotelling’s T2)原理
  3. unity lua 交互比较好的文章
  4. 读书-每天为自己打个勾-郭腾尹
  5. Linux下的motion detection(最简单的办公室监控系统) 邮件自动发送
  6. 职业经验 聊一聊职业发展
  7. 【HTML基础】CSS样式表
  8. java代码怎么打印松树_用JAVA画一颗树(Applet)
  9. 爱是瞬间的美,情是永恒的痛
  10. Chromium之工程依赖关系.