现在正在上课,但我还是要同步更新博文。。。\滑稽

先讲一个离散化,就是把几个离的特别远的数在不影响结果的情况下,变成相近的数。倒是没什么影响,但应用在数组下标的话可以节约空间。(貌似和hash有点像)

直接拍代码

给定n个数,如果一个数出现x次,则对答案的贡献为x^。
求这n个数对答案的贡献是多少。
n<=。
f[i]  i这个数字出现了几次
cin>>n;
for (int i=; i<=n; i++) cin>>A[i]; ... 离散化
for (int i=; i<=n; i++) {t[i].x=A[i]; t[i].y=i;}
sort(t+,t+n+,cmp);
for (int i=; i<=n; i++) while (!A[t[i].y]==t[i].x);
A[t[i].y] 一定等于 t[i].x
for (int i=; i<=n; i++)
{
if (i== || t[i].x!=t[i-].x) now++;
A[t[i].y]=now;
}
... for (int i=; i<=n; i++) f[A[i]]++;
for (int i=; i<=n; i++)
ans+=f[i]*f[i];
cout<<ans;

前缀和是个好东西,可以方便的操作。(每次加前一个,找区间时整体相减)

来一个矩阵前缀和

给定一个n*n的矩阵ai,j以及m个询问。
每次询问一个子矩阵的和。
要求一个O(n*n+m)的做法。
for (i=; i<=n; i++)
for (j=; j<=n; j++)
f[i][j]=f[i-][j]+f[i][j-]-f[i-][j-]+a[i][j];
f[i][j] 左上角在(,),右下角在(i,j)的和是多少
for (i=; i<=m; i++)
{
cin>>x>>y>>X>>Y;
cout<<f[X][Y]-f[x-][Y]-f[X][y-]+f[x-][y-]<<endl;
}

还有一个差值的数组,f[]中存的是每个数和前一个数的差值,特殊的,f[1] = 本身。

附赠代码:

cin>>n;
for (i=; i<=n; i++) cin>>a[i];
cin>>m;
for (i=; i<=m; i++)
{
cin>>A>>B>>C;
f[A]+=C; f[B+]-=C;
}
for (i=; i<=n; i++) f[i]=f[i-]+f[i];
for (i=; i<=n; i++) cout<<a[i]+f[i]<<' ';

Captain最巨!!!

前缀和&&离散化的更多相关文章

  1. AcWing:239. 奇偶游戏(前缀和 + 离散化 + 带权并查集 + 异或性质 or 扩展域并查集 + 离散化)

    小A和小B在玩一个游戏. 首先,小A写了一个由0和1组成的序列S,长度为N. 然后,小B向小A提出了M个问题. 在每个问题中,小B指定两个数 l 和 r,小A回答 S[l~r] 中有奇数个1还是偶数个 ...

  2. Acwing-121-赶牛入圈(二分, 二维前缀和,离散化)

    链接: https://www.acwing.com/problem/content/123/ 题意: 农夫约翰希望为他的奶牛们建立一个畜栏. 这些挑剔的畜生要求畜栏必须是正方形的,而且至少要包含C单 ...

  3. poj_3179 Corral the Cows (二分+二维前缀和+离散化)

    [题目链接] http://poj.org/problem?id=3179 [参考] http://www.cnblogs.com/evenbao/p/9243183.html [算法] 二分答案+判 ...

  4. codefroces 873 B. Balanced Substring && X73(前缀和思想)

    B. Balanced Substring You are given a string s consisting only of characters 0 and 1. A substring [l ...

  5. [CF961E] Tufurama

    Description: 有一天Polycarp决定重看他最喜爱的电视剧<Tufurama>.当他搜索"在线全高清免费观看Tufurama第3季第7集"却只得到第7季第 ...

  6. Uva12663

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110383#problem/C 题目大意:有一些不同高度的桥,会涨几次水,水流初 ...

  7. [Usaco2011 Feb]Generic Cow Protests

    Description Farmer John's N (1 <= N <= 100,000) cows are lined up in a row and numbered 1..N. ...

  8. 【Codeforces 1042D】Petya and Array

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 把a[i]处理成前缀和 离散化. 枚举i从1..n假设a[i]是区间和的a[r] 显然我们需要找到a[r]-a[l]<t的l的个数 即a ...

  9. 洛谷 2344 奶牛抗议 Generic Cow Protests, 2011 Feb

    [题解] 我们可以轻松想到朴素的状态转移方程,但直接这样做是n^2的.所以我们考虑采用树状数组优化.写法跟求逆序对很相似,即对前缀和离散化之后开一个权值树状数组,每次f[i]+=query(sum[i ...

随机推荐

  1. 查看APK包名签名等信息

    有些游戏第三方比如分享需要配置游戏包名和签名,不同渠道包名签名又不同,所以时常需要查看不同apk包等签名信息,之前是使用等微博开放平台的手机客户端查看apk签名,前提是知道包名,网上找了下查看签名和包 ...

  2. VBA中Option的四种用法

    1.Option Explicit.当使用Option Explicit时,必须在模块中的所有过程声明每一个变量,否则会出现语法错误并不能被编译.这样做的好处是,它能消除程序中因为错拼变量名而导致程序 ...

  3. FusionCharts 更新 chart data 数据

    var AlarmChart = null; function alarmChartReBuild(totalNum, alarmNum) { var alarmPart = (alarmNum * ...

  4. Linux添加FTP用户并设置权限

    在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户,命令行状态下,在root用户下: 运 ...

  5. vim三种模式

    一般模式 以vi打开一个文件就直接进入一般模式了.一般模式下可以移动光标查看内容,通过ESC回到一般模式. 一般模式下常用的操作: 撤销与重做 命令 说明 u 复原上一个操作 . 小数点 重复上一个操 ...

  6. eclipse常用设置之自动格式化

    Eclipse 保存文件时自动格式化代码   很多同学不知道Eclipse有个很有用的功能,就是自动格式源代码的功能,一般大家都是直接Ctrl+Shift+F手动格式化,多浪费时间. 其实Eclips ...

  7. 观察者模式之Golang实现

    观察者模式的具体概念原理,参见https://baike.baidu.com/item/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F/5881786?fr ...

  8. Git使用笔记 (github为例)

    ---`Git`# Git管理 #- 创建仓库 git init 在本地目录下建立新git仓库,该仓库可以为空也可以是重新初始化的仓库.该命令将创建一个名为 .git 的子目录,这个子目录含有初始化的 ...

  9. 00.用 yield 实现 Python 协程

    来源:Python与数据分析 链接: https://mp.weixin.qq.com/s/GrU6C-x4K0WBNPYNJBCrMw 什么是协程 引用官方的说法: 协程是一种用户态的轻量级线程,协 ...

  10. Spring Boot的常见配置项解析

    1.spring-boot-starter-parent:springboot官方推荐的maven管理工具,最简单的做法就是继承它. spring-boot-starter-parent包含了以下信息 ...