当前位置: 首页 > news >正文

题解:P14976 [USACO25DEC] Photoshoot B

按照题意模拟即可。

核心就是维护这个网格,每次修改之后只更新所有包含该点的 \(k\times k\) 子矩阵的元素和,并维护其最大值。

由于题目保证每次修改都是增加正整数,因此子矩阵和单调不减,最大值也只会变大,直接更新即可。

虽然说时间复杂度不是很优秀但是对于本题已经足够,时间复杂度是 \(O(q\times k^2)\)

本质上就是每次修改后局部更新,这样就保证不会炸掉。

aclink。

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define i128 __int128
#define ld long double
#define fir first
#define sec second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define ls(x) (x<<1)
#define rs(x) (x<<1|1)
#define lowbit(x) (x&-x)
using namespace std;
const int MOD=998244353;
const int MOD1=1e9+7;
//char ibuf[1<<25],*p1=buf,*p2=buf;
mt19937 mrand(random_device{}());
int rnd(int x){ return mrand() % x;}
ll qpow(ll a,ll b){ll res=1;while(b){if(b&1)res=res*a%MOD;a=a*a%MOD,b>>=1;}return res;}
ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}  
//C++ 17 -O2
//By MaZhaoze
int main(){int n,k;cin>>n>>k;int g[n+1][n+1]={0};int s[n-k+2][n-k+2]={0};int q;int now=0;cin>>q;while(q--){int r,c,v;cin>>r>>c>>v;int temp=v-g[r][c];g[r][c]=v;int is = max(1,r-k+1);int ie = min(r,n-k+1);int js = max(1,c-k+1);int je = min(c,n-k+1);for(int i=is;i<=ie;i++){for(int j=js;j<=je;j++){s[i][j]+=temp;now=max(now,s[i][j]);}}cout<<now<<'\n';}return 0;
}

考虑如何更优。

更优做法可将每次修改转化为对子矩阵和矩阵 \(S\) 的矩形区间加上一个全局最大值查询。按行拆分矩形更新,用线段树维护区间加与最大值,从 \(O(qk^2)\) 优化到 \(O(qk\log n)\)。如果本题的 \(k\) 在拉高一点,这个做法就相当有优势了。

但是说实话,这题 \(k \le 25\),暴力已冲过去了,线段树上来常数更大还更容易写炸,直接用暴力就够了。

aclink。

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define i128 __int128
#define ld long double
#define fir first
#define sec second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define ls(x) (x<<1)
#define rs(x) (x<<1|1)
#define lowbit(x) (x&-x)
using namespace std;
const int MOD=998244353;
const int MOD1=1e9+7;
//char ibuf[1<<25],*p1=buf,*p2=buf;
mt19937 mrand(random_device{}());
int rnd(int x){ return mrand() % x;}
ll qpow(ll a,ll b){ll res=1;while(b){if(b&1)res=res*a%MOD;a=a*a%MOD,b>>=1;}return res;}
ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}  
//C++ 17 -O2
//By MaZhaoze
struct SegTree {int n;vector<long long> mx, lazy;SegTree() {}SegTree(int _n) { init(_n); }void init(int _n) {n = _n;mx.assign(4 * n + 5, 0);lazy.assign(4 * n + 5, 0);}void push(int p) {if (lazy[p] != 0) {long long v = lazy[p];mx[p << 1] += v;mx[p << 1 | 1] += v;lazy[p << 1] += v;lazy[p << 1 | 1] += v;lazy[p] = 0;}}void range_add(int p, int l, int r, int ql, int qr, long long val) {if (ql <= l && r <= qr) {mx[p] += val;lazy[p] += val;return;}push(p);int mid = (l + r) >> 1;if (ql <= mid) range_add(p << 1, l, mid, ql, qr, val);if (qr > mid)  range_add(p << 1 | 1, mid + 1, r, ql, qr, val);mx[p] = max(mx[p << 1], mx[p << 1 | 1]);}void add(int l, int r, long long val) {if (l > r) return;range_add(1, 1, n, l, r, val);}long long getMax() const {return mx[1];}
};int main(){int N, K;cin >> N >> K;int Q;cin >> Q;int m = N - K + 1;             vector<vector<int>> g(N + 1, vector<int>(N + 1, 0));  vector<SegTree> seg(m + 1);for (int i = 1; i <= m; i++) seg[i].init(m);multiset<long long> rowMax;for (int i = 1; i <= m; i++) rowMax.insert(0);while (Q--) {int r, c, v;cin >> r >> c >> v;int delta = v - g[r][c];g[r][c] = v;int is = max(1, r - K + 1);int ie = min(r, m);int js = max(1, c - K + 1);int je = min(c, m);for (int i = is; i <= ie; i++) {long long oldMax = seg[i].getMax();auto it = rowMax.find(oldMax);rowMax.erase(it);seg[i].add(js, je, delta);long long newMax = seg[i].getMax();rowMax.insert(newMax);}cout << *rowMax.rbegin() << "\n";}return 0;
}
http://www.jsqmd.com/news/263072/

相关文章:

  • 深度测评!继续教育必用9个AI论文网站TOP9全解析
  • 2026年市场上靠谱的打包扣生产厂家排行榜,打包扣源头厂家甄选实力品牌 - 品牌推荐师
  • [Teanary] 因为 google 流量统计打不开了,新增了流量统计功能,这是开发文档,可以轻松扩展为数据洞查
  • 实用指南:.NET 10 AOT编绎成DLL调用方式-Activex dll/标准DLL
  • 2026年变形缝推荐制造商Top10,昱安凭借技术优势入围 - 工业品牌热点
  • AI智能文档扫描仪在医疗领域的尝试:病历扫描初步应用
  • 5 分钟搞懂开源大模型选型核心维度,16G显卡也能选对
  • AI智能文档扫描仪在医疗领域的尝试:病历扫描初步应用
  • Qwen2.5-7B低成本上线:中小企业落地实操手册
  • 2026年青海口碑好的太空舱生产厂排名,太空舱生产厂哪个值得选? - 工业品牌热点
  • Qwen2.5-7B低成本上线:中小企业落地实操手册
  • 聚焦环保健康与全屋定制:2026年适配高端家装的十大板材品牌全景效果对比 - 品牌推荐
  • 2026年山西热门geo推广企业推荐,口碑不错的geo推广机构Top10 - 工业品牌热点
  • 未来AI开发方向:DeepSeek-R1-Distill-Qwen-1.5B边缘设备部署展望
  • 2026必备!继续教育TOP10 AI论文软件测评与推荐
  • 金额计算字段类型用Long,还是BigDecimal更好?
  • 告别选择困难:2026年最新盘点真正掌握核心环保科技的三家高适配板材合作伙伴 - 品牌推荐
  • 《2026中国家居建材消费白皮书》核心解读:板材领域十大品牌领导者象限与选型策略 - 品牌推荐
  • 《2026中国家居建材消费白皮书》核心解读:板材领域十大品牌领导者象限与选型策略 - 品牌推荐
  • 2026板材品牌实力解码:环保派与品质派十大企业的经典案例与市场反馈深度调研 - 品牌推荐
  • 2026年度板材品牌实力对比:聚焦环保与实木的十大品牌深度数据调研分析 - 品牌推荐
  • 2026年1月板材品牌实力排行榜:十大品牌权威对比 - 品牌推荐
  • 推荐大模型系列-NoteLLM: A Retrievable Large Language Model for Note Recommendation(一) - 指南
  • 未来城市轨道交通的核心竞争力
  • AI智能证件照制作工坊权限管理:多用户隔离部署教程
  • python 爬虫可视化上海市松江区二手房价格分析预测系统的设计与分析
  • 2026年板材品牌十大品牌成熟度分析:基于智能制造与全链服务能力的综合调研发布 - 品牌推荐
  • 避坑指南:Qwen3-VL-8B-Instruct部署常见问题全解析
  • 2026年1月板材品牌实力排行榜:基于环保标准与市场口碑的十大品牌权威对比 - 品牌推荐
  • 论城市轨道交通未来核心竞争力的构建:从网络扩张到系统智能的范式跃迁