博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2维矩阵前缀和技巧题目
阅读量:6888 次
发布时间:2019-06-27

本文共 1891 字,大约阅读时间需要 6 分钟。

#下面这一段用一个txt来保存input的信息来模拟input.最后提交代码时候删除这一段即可.a9999=open('1.txt','r')def input():    return a9999.readline()#结束.'''一闪一闪亮晶晶,满天都是小星星,牛牛晚上闲来无聊,便躺在床上数星星。牛牛把星星图看成一个平面,左上角为原点(坐标为(1, 1))。现在有n颗星星,他给每颗星星都标上坐标(xi,yi),表示这颗星星在第x行,第y列。现在,牛牛想问你m个问题,给你两个点的坐标(a1, b1)(a2,b2),表示一个矩形的左上角的点坐标和右下角的点坐标,请问在这个矩形内有多少颗星星(边界上的点也算是矩形内)。'''#2维矩阵前缀和.用O(N)的速度来得到.a=[[0,0,1,1],[1,1,1,1],[0,1,1,0],[1,0,0,1]]b=[[0 for i in range(len(a[0]))] for i in range(len(a))]tmp=[0]for i in a:    tmp.append(tmp[-1]+i[0])tmp.pop(0)for i in range(len(b)):    for j in range(len(b[0])):        #b[i][j]表示矩阵a[i][j]到左上角组成的矩阵一共有多少个1.        if i==0:            b[i][j]=sum(a[i][:j+1])        elif j==0:            b[i][j]=tmp[i]        else:         b[i][j]=b[i-1][j]+b[i][j-1]+a[i][j]-b[i-1][j-1]print(b)
View Code

 具体写下来就是:

#下面这一段用一个txt来保存input的信息来模拟input.最后提交代码时候删除这一段即可.a9999=open('1.txt','r')def input():    return a9999.readline()#结束.'''一闪一闪亮晶晶,满天都是小星星,牛牛晚上闲来无聊,便躺在床上数星星。牛牛把星星图看成一个平面,左上角为原点(坐标为(1, 1))。现在有n颗星星,他给每颗星星都标上坐标(xi,yi),表示这颗星星在第x行,第y列。现在,牛牛想问你m个问题,给你两个点的坐标(a1, b1)(a2,b2),表示一个矩形的左上角的点坐标和右下角的点坐标,请问在这个矩形内有多少颗星星(边界上的点也算是矩形内)。'''#2维矩阵前缀和.用O(N)的速度来得到.num=int(input())#读入星星数据a=[[0 for i in range(5)] for i in range(5)]for i in range(num):    a1=[int(a) for a in input().split()]    a[a1[0]][a1[1]]=1#做前缀动态规划b=[[0 for i in range(len(a[0]))] for i in range(len(a))]tmp=[0]for i in a:    tmp.append(tmp[-1]+i[1])tmp.pop(0)for i in range(1,len(b)):    for j in range(1,len(b[0])):        #b[i][j]表示矩阵a[i][j]到左上角组成的矩阵一共有多少个1.        if i==1:            b[i][j]=sum(a[i][:j+1])        elif j==1:            b[i][j]=tmp[i]        else:         b[i][j]=b[i-1][j]+b[i][j-1]+a[i][j]-b[i-1][j-1]print(a)print(b)wenti=int(input())for i in range(wenti):    a1=[int(a) for a in input().split()]    print(b[a1[2]][a1[3]]-b[a1[0]-1][a1[3]]-b[a1[2]][a1[1]-1]+b[a1[0]-1][a1[1]-1])
View Code

 

转载于:https://www.cnblogs.com/zhangbo2008/p/9231352.html

你可能感兴趣的文章
ios注册通知NSNotificationCenter(一)
查看>>
poj 3252 Round Numbers (组合数)
查看>>
求两个长度相等的排序数组的上中位数
查看>>
video 全屏时 隐藏controls
查看>>
利用腾讯云为你的域名申请并配置免费SSL一年
查看>>
【转】asp.net 利用Global.asax 捕获整个解决方案中的异常错误
查看>>
一道算法题-换钱
查看>>
Python私有属性set 和get方法
查看>>
最短路算法详解
查看>>
YII2中操作数据库的方式
查看>>
python input() 与raw_input()
查看>>
mysql数据库 --表查询
查看>>
Python中xlrd常用用法整理
查看>>
文档管理系统介绍
查看>>
Python调用函数带括号和不带括号的区别
查看>>
如何上传本地音乐获取MP3外链(欢迎分享和转载)
查看>>
配置和创建一个hibernate简单应用
查看>>
c++文件流
查看>>
RAD Studio XE2/XE3 官方 ISO 下载地址 (2012-09-05更新)
查看>>
神奇的代码系列(持续更新)
查看>>