Poland_OI_Density is pursued密度图

问题描述

在byteland上有一块地区,蕴藏了byteland上最珍贵的Bit矿物质。科学家们将这块地区划分成了nn个相同大小的单元格,并对每个单元格进行了考察研究:有的单元格中有丰富的Bit矿物质—科学家用1来标识;有的单元格蕴藏的矿物质很少—科学家用0来标识。

假设用W(i,j)和F(i’,j’)来分别表示两个单元格。那么它们之间的距离被定义为:max(|i - i‘|,|j - j‘|),例如W(1,3)和F(4,2)的距离为3。

鉴于可持续发展的思想和开采能力的限制,ByteLand当局计划以一块单元格为中心,开采与中心距离不超过R的所有单元格内的矿藏。为了选定一个合适的单元格作中心,当局希望能够预先了解:以任意一个单元格为中心时,开采量的情况。

于是,当局将一张矿藏地图交给你,上面的nn个单元格中包含数字0或1。你被要求根据这张矿藏地图,绘制出相应的“矿藏密度图”,分别以每块单元格为中心,计算与中心距离不超过R的所有标识为1的单元格个数。

输入文件

输入文件名:map.in

第一行有两个数字n和r(0r<n250)。

以下n行,每行n个数字。第i+1行第j个数字为单元格(i,j)的标识—0或1。

输出文件

输出文件名:map.out

输出文件有n行,每行n个数字。第i行第j个数字表示:与(i,j)距离不超过r的所有标识为1的单元格个数。

样例输入

5 1

1 0 0 0 1

1 1 1 0 0

1 0 0 0 0

0 0 0 1 1

0 1 0 0 0

 

样例输出

3 4 2 2 1

4 5 2 2 1

3 4 3 3 2

2 2 2 2 2

1 1 2 2 2

//求前缀和 ,s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+x;

特别要注意边界情况(在边界-1)

不能四重循环,否则严重TLE

#include<bits/stdc++.h>
using namespace std;
const int Maxn=255;

int s[Maxn][Maxn];
int ans[Maxn][Maxn];
int n,i,j,r,x;
int Xn,Xn2,Yn,Yn2;

int main()
{
    freopen("map.in","r",stdin);
    freopen("map.out","w",stdout);
    cin>>n>>r;
    memset(s,sizeof(s),0);
    s[0][0]=0;
    s[0][1]=0;
    s[1][0]=0;
    for (i=1; i<=n; i++)
    for (j=1; j<=n; j++)
    {
        cin>>x;
        s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+x;
    }
    for (int i=1; i<=n; i++)
    for (int j=1; j<=n; j++)
    {
        Xn=min(i+r,n); Yn=min(j+r,n);
        Xn2=max(i-r-1,0); Yn2=max(j-r-1,0);
        ans[i][j]=s[Xn][Yn]-s[Xn2][Yn]-s[Xn][Yn2]+s[Xn2][Yn2];    
    }
    for (int i=1; i<=n; i++)
    for (int j=1; j<=n; j++)
    {
      cout<<ans[i][j];
      if (j!=n) cout<<" ";
      if ((j==n) && (i!=n)) cout<<endl;
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}

原文地址:https://www.cnblogs.com/SandStorm/p/9313178.html

时间: 2024-11-09 01:08:08

Poland_OI_Density is pursued密度图的相关文章

人群密度图的生成(MATLAB+malldataset)

首先malldataset数据集下载 参见人群密度估计之MCNN写的关于密度图的生成,在MATLAB跑了程序,代码如下: clear; load('perspective_roi.mat'); load('mall_gt.mat'); m=480;n=640; m=m/4; n=n/4; mask = imresize(roi.mask,0.25); %图像缩小4倍 for i=1:2000 %2000幅图像 gt = frame{i}.loc; %第一个frame结构体的loc字段 gt =

密度图-反映事实真相

今天挑战的是密度图: 表象的纷繁无常,我们总需要一种图形可以一眼表现出数据的特征.数据分布图无疑是非常能反映数据特征(用户症状)的.配合中位数和9分位数,效果更佳. 例如下图,由于保密关系我隐藏各条线分别代表什么,以及这张图是什么数据产出.单单从线条中就可以看出各个渠道下单的人群习惯买多少前的东西,并且大概分布式什么.从图中可以看出这三条线其实区别不大,粉色的渠道略微倾向用户下单的金额高一点,蓝色的渠道呢倾向用户下单的金额偏低一些. R语言处理的具体步骤 1.用which函数调取各个渠道数据,例

Arcgis由离散点制作核密度图

问题:由离散点生成核密度图 解决思路:使用ArcToolbox工具制作核密度图 解决方法: (1)ArcToolbox-->Spatial Analyst 工具-->密度分析-->核密度分析. (2)输入各项参数.注意:Population字段可为None:实验中设的输出像元大小0.0001:搜索半径需要进行尝试设定一个合适的值以实现更好的效果,实验中设置为0.01 完成即可查看结果

Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)

直方图用于展示数据的分布情况,x轴是一个连续变量,y轴是该变量的频次. 下面利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://datasets.flowingdata.com/crimeRatesByState2005.csv 以下是这个数据文件的前5行: state murder forcible_rape robbery aggravated_assault 0 United States 5.6 31.7 140.7 291.1

R语言与医学统计图形-【14】ggplot2几何对象之直方密度图

ggplot2绘图系统--几何对象之直方图.密度图 1.直方图 参数. geom_histogram(mapping = , data = , stat = 'bin', #统计变换,概率密度为density position = 'stack', binwidth = , #条柱宽度 bins = , #条柱数目,默认30 na.rm = FALSE, show.legend = NA, inherit.aes = TRUE ) 示例. ggplot(diamonds,aes(carat))+

R-散点密度图

有时候看见很多论文中有那种散点密度图,还有拟合线,感觉瞬间一张图里面信息很丰富,特别是针对数据很多的时候,散点图上的点就会存在很多重叠,这时候比较难以看出其分布特征,所以叠加点密度的可视化效果还是很有必要的. 1 基本 基本的R语言:使用plot()函数即可 # Create data data = data.frame( x=seq(1:100) + 0.1*seq(1:100)*sample(c(1:10) , 100 , replace=T), y=seq(1:100) + 0.2*seq

MATLAB中mesh函数的使用:基于像素强度画3D密度图(create a 3D density plot based on the pixel intensity:mesh function)

所用的函数非常简单,只需要用到mesh函数,示例代码如下: Ima=imread('F:\pathto\test.jpg'); surf_ima = surf(rgb2gray(Ima)); %黑色的3D图 title('3D') mesh_ima = mesh(rgb2gray(Ima)); %有色彩的3D图 参考链接:https://cn.mathworks.com/matlabcentral/answers/17998-image-processing-how-can-i-create-a

小提琴图解读 - 统计学

小提琴图现在比较流行,在文章里很常见. [小提琴图]其实是[箱线图]与[核密度图]的结合,[箱线图]展示了分位数的位置,[小提琴图]则展示了任意位置的密度,通过[小提琴图]可以知道哪些位置的密度较高. 实例解析 在上图中,白点是中位数,黑色盒型的范围是下四分位点到上四分位点,细黑线表示须.外部形状即为核密度估计(在概率论中用来估计未知的密度函数,属于非参数检验方法之一). 数据化分析解读: 1.通常汽缸数量少的汽车每加仑汽油可以行驶更多里程数: 2.4缸汽车的油耗分布比较分散,6缸汽车的油耗分布

R语言实战-如何分析QQ群记录2-每日信息数量图

构思步骤: 1.从data中取出时间数据. 2.从时间数据中提取日期数据. 3.根据日期数据进行汇总每日的消息数量. 4.利用ggplot2进行绘图. #从data中获取时间信息 time<-data$dateTime #把时间中的日期属性提取出来 p<-paste(year(time),month(time),day(time),sep="-") #把p转换为数据框 Timed<-data.frame(p) #通过P分组,p段名称变成days,增加数量列Freq,根