牛客练习赛48 C,D,E
C 小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 ;
}
题意:给出一个一维行数组和一维列数组相加得到的矩阵,一开始从(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的更多相关文章
- 牛客练习赛48 C 小w的糖果 (数学,多项式,差分)
牛客练习赛48 C 小w的糖果 (数学,多项式) 链接:https://ac.nowcoder.com/acm/contest/923/C来源:牛客网 题目描述 小w和他的两位队友teito.toki ...
- 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)
牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...
- 牛客练习赛48 D 小w的基站网络
链接:https://ac.nowcoder.com/acm/contest/923/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 牛客练习赛48 E 小w的矩阵前k大元素
E 思路: 优先队列,将迭代器变量作为结构体的变量. 迭代器走的时候只能像一个方向走,另外一个方向只有最开始才走.如下图所示: 如果两个方向同时走,同一个值会被遍历多次,像上图那样就能保证每个位置都走 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
随机推荐
- LeetCode Linked List Easy 21. Merge Two Sorted Lists
Description Merge two sorted linked lists and return it as a new list. The new list should be made b ...
- Oracle单表备份三种方案
备份方案一: 1. 备份 create table [备份名] as select * from [表名]; 2. 恢复 truncate table org_group; insert into o ...
- 前端学习(三十一)canvas(笔记)
canvas 画布 画图.做动画.做游戏=========================================== canvas就是新标签 必须获取绘图 ...
- Netflix:我们为什么要将GraphQL引入前端架构?
作者|Artem Shtatnov译者|无明 在这篇文章中,我们将分享 Netflix 在这些应用程序的前端架构中引入 GraphQL 所积累的经验. 在内部,我们把用于管理广告创建和组装的主要应用程 ...
- 人生苦短_我用Python_list(列表)_002
# coding=utf-8 # 列表 list 列表函数 # 列表的特性: 可以有任何类型的值 可以更改 # 可以更改.增加.删除.修改 # 增加 append 直接在尾巴增加 list_1 = [ ...
- 前端解析Markdown
目录 前端解析Markdown 1.使用strapdown 1.1.下载 1.2.使用 2.使用marked(配合highlightjs) 2.1.下载 2.2.使用 3.使用mdjs(配合highl ...
- isinstance 的用法 判断这个数据是否属于这个类型
- php开发面试题---Apache 运行PHP原理(整理)
php开发面试题---Apache 运行PHP原理(整理) 一.总结 一句话总结: 不要忘记 php引擎将页面静态化 和 php引擎和apache之间通讯 反思的回顾非常有用,因为决定了我的方向和技巧 ...
- mysql添加制定ip访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'120.244.114.45' IDENTIFIED BY 'Zhh722@7758521' WITH GRANT OPT ...
- ubuntu15.4、16.4、17.4设置nginx自启动
ubuntu15.4.16.4.17.4设置nginx自启动记录个小问题,备忘录.花了大半天的时间研究这个,网上大多ubuntu.centos的配置nginx开机自启的都是之前的 Upstart/Sy ...