小w的糖果

题意:3种操作,第一种是使pos右边的数全部+1,第二种是pos右边的数依次+k(k从1开始递增),第三种是pos右边的数依次+k^2(k从1开始递增)。

解法:第一种我们很容易想到差分,我们顺着差分这个思路往下想,可以发现第二张可以差分之后再差分,第三种就3阶差分。

以第三种为例讲解:原数组:+0 +1 +4 +9 +16  一阶差分:+0 +1 +3 +5 +7  二阶差分:+0 +1 +2 +2 +2  三阶差分:+0 +1 +1 +0 +0  所以我们使c[pos]++,c[pos+1]++,然后做3次前缀和即可还原原数组。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
const int MOD=1e9+;
int n,m,a[N],b[N],c[N]; void getsum(int a[]) {
for (int i=;i<=n;i++) a[i]=(a[i]+a[i-])%MOD;
} int main()
{
int T; cin>>T;
while (T--) {
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++) a[i]=b[i]=c[i]=;
for (int i=;i<=m;i++) {
int opt,pos; scanf("%d%d",&opt,&pos);
if (opt==) a[pos]++;
if (opt==) b[pos]++;
if (opt==) c[pos]++,c[pos+]++;
}
getsum(a);
getsum(b); getsum(b);
getsum(c); getsum(c); getsum(c);
for (int i=;i<=n;i++) printf("%d ",(a[i]+b[i]+c[i])%MOD);
printf("\n");
}
return ;
}

小w的矩阵前k大元素

题意:给出一个一维行数组和一维列数组相加得到的矩阵,一开始从(0,0)往下走或者往右走,走到(x,y)遇到的询问是:从(0,0)到(x,y)的矩阵中的数前k小的是哪些?

解法:一边走一边用multiset保存行列数,遇到询问则用优先队列暴力模拟前k大(就是从最小行+最小列然后慢慢往大方面扩展),因为题目说了查询总和不大于10^5所以时间是可以接受的。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
int n,m,tt,a[N],b[N];
typedef multiset<int>::iterator iter;
multiset<int> r,c;
struct dat{
iter rt,ct;
bool operator < (const dat &rhs) const {
return (*rt)+(*ct)>*(rhs.rt)+*(rhs.ct);
}
};
priority_queue<dat> q; int main()
{
cin>>n>>m>>tt;
for (int i=;i<=n;i++) scanf("%d",&a[i]);
for (int j=;j<=m;j++) scanf("%d",&b[j]);
int nr=,nc=;
r.insert(b[]); c.insert(a[]);
for (int T=;T<=tt;T++) {
char opt[]; int t;
scanf("%s%d",opt,&t);
if (opt[]=='Q') {
while (!q.empty()) q.pop();
dat tmp,sav; tmp.rt=r.begin(); tmp.ct=c.begin();
q.push(tmp);
for (int i=;i<=t;i++) {
sav=q.top(); q.pop();
printf("%d",*(sav.rt)+*(sav.ct));
if (i<t) printf(" "); else printf("\n"); tmp=sav;
if (++tmp.rt!=r.end()) q.push(tmp);
tmp=sav;
if (tmp.rt==r.begin())
if (++tmp.ct!=c.end()) q.push(tmp);
}
} else {
if (opt[]=='R') {
for (int i=nr+;i<=min(m,nr+t);i++) r.insert(b[i]);
nr=min(m,nr+t);
} else {
for (int j=nc+;j<=min(n,nc+t);j++) c.insert(a[j]);
nc=min(n,nc+t);
}
}
}
return ;
}

牛客练习赛48 C,D,E的更多相关文章

  1. 牛客练习赛48 C 小w的糖果 (数学,多项式,差分)

    牛客练习赛48 C 小w的糖果 (数学,多项式) 链接:https://ac.nowcoder.com/acm/contest/923/C来源:牛客网 题目描述 小w和他的两位队友teito.toki ...

  2. 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)

    牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...

  3. 牛客练习赛48 D 小w的基站网络

    链接:https://ac.nowcoder.com/acm/contest/923/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  4. 牛客练习赛48 E 小w的矩阵前k大元素

    E 思路: 优先队列,将迭代器变量作为结构体的变量. 迭代器走的时候只能像一个方向走,另外一个方向只有最开始才走.如下图所示: 如果两个方向同时走,同一个值会被遍历多次,像上图那样就能保证每个位置都走 ...

  5. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  6. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B

    牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...

  7. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

  8. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  9. 牛客练习赛28-B(线段树,区间更新)

    牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ ​ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ​ 1 l r 询问区间[l,r]内的元素和 ​ 2 l r 询问区间[l,r]内的 ...

随机推荐

  1. RAD介绍及实战,LVM介绍及实战,磁盘常见故障

    目录 一.RAID 1.RAID好处: 2.RAID的运行方式: 3.RAID的级别: 二.RAID实战 软RAID 1.RAID0 2.RAID1 3.RAID5 4.RAID10 三.LVM介绍 ...

  2. linuxprobe培训第3节课笔记2019年7月7日

    linux常用命令: echo:在终端输出字符串或变量提取后的值 date:显示及设置系统的时间或日期 reboot:重启 poweroff:关机 wget:下载 ps:查看系统中的进程状态(常用参数 ...

  3. go语言从例子开始之Example23.通道缓冲

    默认通道是 无缓冲 的,这意味着只有在对应的接收(<- chan)通道准备好接收时,才允许进行发送(chan <-).可缓存通道允许在没有对应接收方的情况下,缓存限定数量的值. 不支持缓冲 ...

  4. 算法 按照ASII码从小到大输出字符(数量最多)

    题目描述 如果统计的个数相同,则按照ASCII码由小到大排序输出 .如果有其他字符,则对这些字符不用进行统计. 实现以下接口:输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)按 ...

  5. 学习java设计模式有用吗?懂这六个原则,编程更轻松

    学习java设计模式有用吗?懂这六个原则,编程更轻松 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...

  6. java基础学习笔记四(异常)

    Java中的异常 Exception 如图可以看出所有的异常跟错误都继承与Throwable类,也就是说所有的异常都是一个对象. 从大体来分异常为两块: 1.error---错误 : 是指程序无法处理 ...

  7. hdu 4826 Labyrinth(简单dp)

    Description 度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向 ...

  8. windows 下安装python 的requests模块

    下载地址:https://codeload.github.com/requests/requests/legacy.zip/master 下载好后解压,进入目录执行下面命令 在cmd下:python ...

  9. kubernetes集群中移除Node

    例如要在集群中移出node2节点1)在master节点上执行: kubectl drain node2 --delete-local-data --force --ignore-daemonsets ...

  10. HTML5: HTML5 表单元素

    ylbtech-HTML5: HTML5 表单元素 1.返回顶部 1. HTML5 表单元素 HTML5 新的表单元素 HTML5 有以下新的表单元素: <datalist> <ke ...