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

奶牛抗议-二维偏序优化

奶牛抗议-二维偏序优化

P2344 Generic Cow Protests G

题意

求连续分组和大于等于 \(0\) 的方案数。

思路

容易想到 \(O(n^2)\) 的 dp 解法,其状态定义为到 \(i\) 的位置,当前位置的方案数。转移为:

\[dp_i = \sum_{j=0}^{j < i} (dp_j \mid sum_j \le sum_i) \]

此时暴力查找符合条件的 \(j\) 的复杂度为 \(O(n^2)\),显然会超时。

发现有两个限制,我们可以采用二维偏序优化,将 \(O(n^2)\) 的复杂度降为 \(O(n \log n)\)

二维偏序优化其实就是在两个限制下快速找到前驱,拿坐标说就是找到一个点它所有的 \(x\) 小于它,\(y\) 也小于它的所有点。

pZpvGDO.png

优化的方式是先对一个限制(\(x\))排序,再在树状数组中不断加入另一个限制(\(y\)),并查询,由于顺序的关系,可以保证此时查到的节点满足要求。

代码

点击展开
#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn = 1e5+10;
constexpr int mod = 1e9+9;typedef struct node
{int id,sum;bool operator<(const node &x)const{return sum==x.sum ? id<x.id : sum<x.sum;// 第一遍排序按sum,相等时要按id排}
}node;node pi[maxn];
int n;
int wi[maxn];
int dp[maxn];
int sum[maxn];void add(int x,int k)// 树状数组维护dp和
{while(x<=n){sum[x]+=k;if(sum[x]>=mod){sum[x]-=mod;}x+=(x & -x);}
}int query(int x)
{int ret=0;while(x>0){ret+=sum[x];if(ret>=mod){ret-=mod;}x-=(x & -x);}return ret;
}signed main()
{#ifndef ONLINE_JUDGEfreopen("1.in","r",stdin);freopen("1.out","w",stdout);#endif // ONLINE_JUDGEscanf("%lld",&n);++n;// 树状数组从1开始,不能有0节点,而我们要手动添加一个一号节点为0for(int i=2;i<=n;++i){scanf("%lld",wi+i);pi[i].sum=wi[i]+pi[i-1].sum;pi[i].id=i;}pi[1].id=1;pi[1].sum=0;sort(pi+1,pi+1+n);dp[1]=1;for(int i=1;i<=n;++i){int id=pi[i].id;if(id==1){add(id,dp[id]);// 0号节点要优先初始化,而不是用别人修改它continue;}dp[id]=query(id);// 求满足j<id && sum_j<=sum_id的dp前缀恶add(id,dp[id]);// 加入树状数组}printf("%lld\n",dp[n]);return 0;
}
http://www.gsyq.cn/news/45532.html

相关文章:

  • 4G摄像机国标GB28181接入EasyGBS突然不上线?双网卡智能切换惹的锅!
  • 详细介绍:热门编程语言的排名及开源贡献比例表格-截至2025年10月
  • SQLite 连接串说明
  • 完整教程:深度学习实战:从图像分类到自然语言处理的完整指南
  • 【完整源码+内容集+部署教程】 黄瓜叶片检测系统源码和数据集:改进yolo11-RVB
  • 国产化Word处理控件Spire.Doc教程:使用Java将RTF文件转换为PDF的全面教程
  • 2025年门卫室岗亭源头厂家综合实力榜单:形象岗亭/小区值班岗亭/钢结构吸烟亭源头厂家精选
  • 树莓派性能分析脚本
  • 2025 ICPC 南京站 游记
  • windows客户端配置免密上传代码到gitlab
  • 神级项目,Github 上线封神,BettaFish你不可忽视的多Agent舆情分析神器~~~
  • MyEMS:赋能能源精细化管理的智慧引擎
  • 2025年新型建筑木方源头厂家综合实力榜单:建筑施工模板/覆膜建筑模板/清水覆膜板生产厂家精选
  • 开源能源管理系统:解锁当下能源困局的关键力量
  • 详细介绍:五点法求解相机的相对位姿
  • Gitee:打造本土化技术生态,驱动中国数字化变革新引擎
  • 2025年卫生应急服生产厂家综合实力榜单:卫生应急藏青无领T恤/黑色立领外套/纯棉黑T恤源头厂家精选
  • 2025年11月学习机品牌推荐:家长口碑榜对比十强同步教材与护眼方案
  • Linux crond - Lafite
  • 鸿蒙应用开发实战:应用数据备份恢复
  • 实用指南:[数据结构] 队列实战!火车车厢重排从 0 到 1:缓冲轨巧用 + 可运行代码
  • Kerberos常见工具错误解析与修复指南
  • vim 配置
  • HT-LFCG-3400+,0改版,测试数据贴图
  • C# 基础——async/await 的实现原理与最佳实践
  • 7885
  • 77777
  • 跳房子 P3957: 单调队列
  • P3622 动物园-状压
  • candy P14328: dp优化