题意

有个m维的空间,并且每一维的坐标x都满足x∈ [0, 3]并且x为整数。
这个空间有n个部落,每个部落都坐落在这片空间中的一个点上,可以用坐标(x1, x2, …, xm)来表示。
有些部落可能在在同一个点上面。
定义两个点的距离为它们的曼哈顿距离,即每一维坐标差的绝对值的和。
比如对于点(x1, x2, …, xm)和(y1, y2, …, ym),它们之间的距离为
现在对0~3m之间的每一个数字x,统计有多少对部落之间的距离为x。
注意,一对部落是有序的,即部落(a, b)和部落(b, a)为不同的两对。
n<=200000,m<=9

分析

可以设f[i,j,k]表示四进制下前i位和k的距离为j,且后m-i位和k相同的数有多少个。
xjb转移即可。

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;typedef long long LL;int n,m,bin[15],f[10][30][272144];
struct data{int a[10];}bel[272144],a[200005];
LL ans[30];int read()
{int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}int get_num(data a)
{int ans=0;for (int i=m;i>=1;i--) ans=ans*4+a.a[i];return ans;
}data get_pos(int x)
{data a;for (int i=1;i<=m;i++) a.a[i]=x%4,x>>=2;return a;
}int main()
{n=read();m=read();bin[0]=1;for (int i=1;i<=m;i++) bin[i]=bin[i-1]*4;for (int i=1;i<=n;i++){for (int j=1;j<=m;j++) a[i].a[j]=read();int x=get_num(a[i]);f[0][0][x]++;}for (int i=0;i<bin[m];i++) bel[i]=get_pos(i);for (int i=1;i<=m;i++)for (int j=0;j<=m*3;j++)for (int k=0;k<bin[m];k++){int now=bel[k].a[i];for (int l=0;l<=3;l++) if (j>=abs(l-now)) f[i][j][k]+=f[i-1][j-abs(l-now)][k-bin[i-1]*(now-l)];}for (int i=1;i<=n;i++){int x=get_num(a[i]);for (int j=0;j<=m*3;j++) ans[j]+=f[m][j][x];}for (int i=0;i<=m*3;i++) printf("%lld ",ans[i]);return 0;
}

51nod 1920 空间统计学 动态规划相关推荐

  1. [51Nod 1920] 空间统计学

    Description 有个m维的空间,并且每一维的坐标x都满足x∈ [0, 3]并且x为整数. 这个空间有n个部落,每个部落都坐落在这片空间中的一个点上,可以用坐标(x1, x2, -, xm)来表 ...

  2. 白话空间统计二十七:统计学七支柱之空间统计版本(二)聚合(2)

    还记得a long long time ago 的青葱岁月--作为学渣的虾神最怕的就是各种(不擅长)的考试,虾神读书时候有个习惯,就拿到试卷之后,第一时间会把试卷翻到最后一页,去看最后一道大题.然后以 ...

  3. #中regex的命名空间_Python空间分析||geopandas安装与基本使用

    Python空间分析--geopandas安装与基本使用 一.geopandas安装 二.geopandas数据读取与存储 导入包 从geopandas自带的数据库中读取数据 从本地读取shp数据 显 ...

  4. 空间统计笔记之一(基础知识)

    前段时间在学习空间统计相关的知识,于是把ArcGIS里Spatial Statistics工具箱里的工具好好研究了一遍,同时也整理了一些笔记上传分享.这一篇先聊一些基础概念,工具介绍篇随后上传. 空间 ...

  5. leetcode剑指 Offer 63. 股票的最大利润(动态规划)

    假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候 ...

  6. leetcode413. 等差数列划分(动态规划)

    数组 A 包含 N 个数,且索引从0开始.数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N . 如果满足以下条件,则称子数组(P, Q)为等 ...

  7. 数字三角形_递归_递推(动态规划)

    输入格式: 5 // 三角形行数,下面是三角形 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 三角形的行数大于1小于等于100,数字为 0 – 99. 要求输出最大和,不必给出具体路径. ...

  8. ArcGIS中实现空间内插

    ArcGIS中实现空间内插 来自书籍<地统计学(现代空间统计学)> 来自书籍<地统计学(现代空间统计学)>

  9. 应用统计学与R语言实现学习笔记(八)——方差分析

    Chapter 8 ANOVA 本篇是第八章,内容是方差分析.前一段考试,汇报,作业.忙不过来,停更了一段时间,现在重新开始更这一部分内容.方差分析是很多实验的基础以及很重要的分析手段,这一章内容相比 ...

最新文章

  1. Spring Aop 常见注解和执行顺序
  2. 42、使用存放在存assets文件夹下的SQLite数据库
  3. php有个qrcode类,一个PHP的QRcode类与大家分享
  4. MySQL之深入解析自增主键为何不连续
  5. 2018年广东年销售额超千亿的企业有哪些?
  6. Python环境搭建与连接SQL Server类MyDBase的实现
  7. mysql emoji表情_让MySQL支持Emoji表情 mysql 5.6
  8. [vue] vue实例挂载的过程是什么?
  9. 西班牙夺得欧洲杯给IT业的十条启示
  10. -2. JavaScript Methods
  11. [CSP-S模拟测试]:走格子(模拟+BFS+Dijkstra)
  12. Pointnet++中tf_ops三个.so文件的生成
  13. NOI2021 退役记
  14. 百度地图离线开发demo(热力图)
  15. 从 LoG 到 DoG 再到 XDoG, FDoG
  16. 【汽车安全】ISO26262概要
  17. 如何用分词来简化状语从句
  18. linux系统的midi制作软件,在ubuntu系统下制作midi音乐
  19. 机器人的自述作文_我发明的机器人作文400字
  20. 【操作系统】I/O系统

热门文章

  1. sql选取连续三天登录的用户
  2. DV通配符证书申请方式及特点
  3. 计算机网络综合组网实验、综合组网实验
  4. 零基础抖音电商主播培训计划直播脚本话术大全范文ppt模板
  5. 关于什么都不会的阿里云服务器搭建及项目部署过程
  6. SpringBoot 整合Mybatis
  7. ubuntu 建立光纤连接
  8. 说太多都是话痨,上才艺——PostMan接口自动化测试(一)
  9. 浅谈vue2与vue3的区别
  10. idea怎么打开war包并运行