侦察兵_dp
来源:互联网 发布:淘宝 店招 代码 编辑:程序博客网 时间:2024/04/30 16:20
题目大意
给一个n*n的矩形,里面有若干个数,给出t个询问,求点(x,y)的左上角和右下角的数加起来有多少
不知为何开1001的数组会爆
思路
看样例很容易想到用dp,哪张草稿纸随便搞搞即可得:
设f[i,j]为包括当前点的左上角的和
f[i][j]=a[i][j]+f[i-1][j]+f[i][j-1]-f[i-1][j-1]
同理得右下角的dp方程
所以对于每一个询问(x,y)答案为f[x-1][y-1]+f2[x+1][y+1]
#include <stdio.h>#define maxn 1005int f[maxn][maxn],a[maxn][maxn],f2[maxn][maxn];int main(){ freopen("scout.in","r",stdin); freopen("scout.out","w",stdout); int n,t; scanf("%d%d",&n,&t); for (int i=1;i<=n;i++) { for (int j=1;j<=n;j++) { scanf("%d",&a[i][j]); f[i][j]=f[i][j-1]+f[i-1][j]-f[i-1][j-1]+a[i][j]; } } for (int i=n;i>=1;i--) { for (int j=n;j>=1;j--) { f2[i][j]=f2[i][j+1]+f2[i+1][j]-f2[i+1][j+1]+a[i][j]; } } for (int i=1;i<=t;i++) { int x,y; scanf("%d%d",&x,&y); printf("%d\n",f[x-1][y-1]+f2[x+1][y+1]); }}
阅读全文
1 0
- 侦察兵_dp
- 侦察兵
- 《特种兵之侦察兵》
- 侦察兵(区间和)
- 侦察兵(特长生准备)
- 题三 侦察兵
- 船_DP
- 采药_DP
- 选课_DP
- 特长生模拟——侦察兵
- 5.16特长生模拟题 侦察兵
- hunnu 11090 ls _dp
- POJ1661Help Jimmy _dp
- poj 2181_dp
- 石子合并_DP
- 回文词_DP
- POJ1860_钉子小球_DP
- 最少拦截系统_DP
- 蓝桥杯第六届决赛:表格计算
- BZOJ 2241 [SDOI2011] 打地鼠
- 超声波风速风向仪的工作原理
- 对象的序列化和Socket简单使用
- 求次最小生成树,南阳118题 修路方案
- 侦察兵_dp
- 贪心-今年暑假不AC-nefuoj
- bzoj 2456 mode
- Android 关于selector中item顺序的问题
- LeetCode No.5 Longest Palindromic Substring
- matlab中find、sub2ind函数用法
- java AtomicInteger、AtomicLong原理分析及测试实例
- Mariadb数据库
- 数据库与文件进行数据存储有哪些区别?