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

P5202 [USACO19JAN] Redistricting P

洛谷

首先我们设更赛牛为加一,荷斯坦牛为负一。

这样通过前缀和就可以得到这一组是否需要增加一。

\(dp_i\) 表示以 \(i\) 为末尾,最少的分区。

那么方程式就为:

\[$ dp_i=dp_j+(pre_i-pre_j\le 0) $\]

然而表达式我们并不好判断。

但是由于表达式只能提供数值为一的贡献,那么我们可以使用优先队列,以 \(dp_j\) 的值排序,在 \(dp_j\) 相同时按照 \(pre_j\) 排序,取出最小值即可。

由于选择的区域有限,第一种处理方式是在结构体内记录下位置,若取出的值不合法则删除后再取一次。

对于第二种方法,可以直接使用带删的优先队列。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,dp[300005],pre[300005];
char a[300005];
struct P{int x,y;bool friend operator<(P a,P b){if(a.x!=b.x)return a.x>b.x;return a.y>b.y;}
};
struct Q{priority_queue<P> q1,q2;void push(P x){q1.push(x);}void pop(P x){q2.push(x);}P top(){while(!q1.empty()&&!q2.empty()&&q1.top().x==q2.top().x&&q1.top().y==q2.top().y){q1.pop();q2.pop();}return q1.top();}
}q;
signed main(){cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){if(a[i]=='G')pre[i]=-1;else pre[i]=1;}for(int i=1;i<=n;i++)pre[i]+=pre[i-1];memset(dp,0x3f,sizeof(dp));dp[0]=0;q.push({0,0});for(int i=1;i<=n;i++){if(i-k-1>=0)q.pop({dp[i-k-1],pre[i-k-1]});P u=q.top();dp[i]=u.x+(pre[i]-u.y<=0);q.push({dp[i],pre[i]});}cout<<dp[n];return 0;
}
http://www.gsyq.cn/news/75753.html

相关文章:

  • 详细介绍:数据结构5:二叉树
  • P10602 [CEOI 2009] Harbingers
  • 2025 Newest Autel BMW G-Chassis IMMO Add Key (1-Year License) for IM508/IM608/IM1/IM2
  • Go 1.25 发布:性能、器具与生态的全面进化
  • 实用指南:OSG多视口与多通道渲染核心技术解析
  • P8313 [COCI 2021/2022 #4] Izbori
  • 2025 最新智能制造服务商 / 厂家 TOP5 评测!科技赋能 + 全周期服务权威推荐榜单发布,引领智慧工厂建设新生态
  • CF762E Radio stations
  • 【拓补排序 TB_sort】P4017 最大食物链计数
  • 2025年深圳AI搜索排名优化公司推荐
  • Easysearch 2.0.0 性能测试
  • 基于STM32标准库的FreeRTOS移植与任务创建 - 详解
  • 2025 最新工业机器人应用服务商 / 厂家 TOP5 评测!科技赋能 + 全生命周期服务权威榜单发布,重构智能制造生态
  • Launch X431 PRO3 V+ Elite: Bi-Directional, ECU Coding Topology Mapping for Euro/Amer Vehicles
  • linux单用户模式
  • 吉他自学笔记
  • 为全球宝宝选对营养:央视关注+进博亮相,德国安心之选inne
  • 2025 年 12 月法兰保护罩厂家权威推荐榜:阀门保温罩/法兰防溅罩/法兰保护套,专业防护与耐用品质深度解析
  • openEuler:构建AI原生操作系统的架构演进与实践路径
  • FFmpeg开发笔记(九十二)基于Kotlin的开源Android推流器StreamPack
  • Microsoft Visual Studio 2010 TFS强制解除签出
  • HTTP/2在EDI领域中的优势:构建高效、安全、现代化的数据交换基石 - 详解
  • why Picograph can not learn English by translator
  • cursor
  • openEuler 软件生态多元适配评测:分布式存储与大数据组件实战验证
  • 短视频矩阵架构搭建指南:源码部署与全流程解析
  • 完整教程:Docker学习笔记---day001
  • 2025年度靠谱的实验室反应釜厂家TOP5权威推荐
  • 基于Python+Vue开发的婚恋交友管理系统源码+运行步骤+计算机专业
  • Python线程指南