【练习题】数据离散化+二维前缀和

您所在的位置:网站首页 加拿大华裔科学家夫妇是谁 【练习题】数据离散化+二维前缀和

【练习题】数据离散化+二维前缀和

#【练习题】数据离散化+二维前缀和| 来源: 网络整理| 查看: 265

【练习题】数据离散化+二维前缀和 题目大意输入输出样例解释重要提示 思路代码时间复杂度

题目大意

mtc是一个很优秀的同学,他学习认真,经常刷题。这天,他正好学习到了数据离散化与二位前缀和的相关概念,并给大家进行科普. 数据的离散化:有些教据本身很大,自身无法作为数组的下标保存对应的属性,如果这时只是需要这堆数据的相对属性,那么可以对其进行离散化处理。当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。百度百科 例如:设有4个数: 1234567、123456789、12345678、123456 排序:123456 int mid = l + r >> 1; if(idx[mid] >= x) r = mid; else l = mid + 1; } return r + 1; // 映射下标从1开始,便于计算前缀和 } // 将纵坐标离散化,映射到某个下标 int findy(int x){ int l = 0, r = idy.size() - 1; while(l cin >> n >> m; // n个点 for(int i = 0; i x, y}); idx.push_back(x); idy.push_back(y); } // 分别对横坐标、纵坐标排序、去重 sort(idx.begin(), idx.end()); idx.erase(unique(idx.begin(),idx.end()), idx.end()); sort(idy.begin(), idy.end()); idy.erase(unique(idy.begin(),idy.end()), idy.end()); // 处理原始点,映射下标 for(int i = 0; i s[i][j] = a[i][j] + s[i][j - 1] + s[i - 1][j] - s[i - 1][j - 1]; } // 处理询问 for(int i = 0; i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3