[USACO17FEB] Why Did the Cow Cross the Road

【题解-洛谷】P3662 [USACO17FEB] Why Did the Cow Cross the Road II S 为了让奶牛能够通过这些横道过马路,FJ 安装了电子过马路信号灯,当奶牛可以安全过马路时,信号灯会显示绿色的奶牛图标,否则显示红色。不幸的是,一场大雷暴损坏了他的一些信号灯。给定损坏信号灯的列表,请计算 FJ 需要修复的最少信号灯数量,以便存在至少。请计算需要修复的最少信号灯数量,以便在道路上某处存在一个长度为。穿过 Farmer John 农场的长路上有。行每行描述一个损坏信号灯的 ID 编号。个人行横道,方便地用编号。个连续的信号灯正常工作。的连续正常工作信号灯块。 阅读详情

这题真的是“写题五分钟,想题两小时”啊
我们考虑一个dpdpdp,我们用dpi,jdp_{i,j}dpi,j​表示第一排匹配到iii,第二排匹配到jjj,并且i,ji,ji,j相匹配
那么转移方程就是
dpi,j=max⁡{dpk,j}+1,k<i,bj∈[max⁡(1,ai−4),max⁡(n,ai+4)]dp_{i,j}=\max\{dp_{k,j}\}+1,k< i,b_j\in[\max(1,a_i-4),\max(n,a_i+4)]dpi,j​=max{dpk,j​}+1,k<i,bj​∈[max(1,ai​−4),max(n,ai​+4)]
然后我们发现这个东西我们可以枚举每一个jjj,然后利用一个树状数组求出对于枚举的每一个jjj,dpk,jdp_{k,j}dpk,j​的最大值,然后转移,我们就可以做到O(1)O(1)O(1)转移其实是O(9)
然后就没了
复杂度O(nlogn)O(nlogn)O(nlogn)
代码50行解决。。。

#include <bits/stdc++.h>
using namespace std;

# define Rep(i,a,b) for(int i=a;i<=b;i++)
# define _Rep(i,a,b) for(int i=a;i>=b;i--)
# define RepG(i,u) for(int i=head[u];~i;i=e[i].next)

typedef long long ll;

const int N=1e5+5;

template<typename T> void read(T &x){
   x=0;int f=1;
   char c=getchar();
   for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
   for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+c-'0';
    x*=f;
}

int n;
int a[N],b[N],pos[N];
int bit[N],f[N];

int lowbit(int o){
    return o&-o;
}

void add(int o,int x){
    for(;o<=n;o+=lowbit(o))bit[o]=max(bit[o],x);
}

int ask(int o){
    int res=0;
    for(;o;o-=lowbit(o))res=max(res,bit[o]);
    return res;
}

int main()
{
    read(n);
    Rep(i,1,n)read(a[i]);
    Rep(i,1,n)read(b[i]);
    Rep(i,1,n)pos[b[i]]=i;
    Rep(i,1,n){
        Rep(j,max(1,a[i]-4),min(n,a[i]+4))f[j]=ask(pos[j]-1)+1;
        Rep(j,max(1,a[i]-4),min(n,a[i]+4))add(pos[j],f[j]);
    }
    printf("%d\n",ask(n));
    return 0;
}
csp信奥赛C++高频考点专项训练之前缀和&差分 --【一维前缀和】:[USACO17FEB] Why Did the Cow Cross the Road II S 阅读详情

相关推荐

【区间贪心】P3661 [USACO17FEB] Why Did the Cow Cross the Road I S|普及+

Farmer John 的奶牛们正在学习如何有效地过马路。回想起古老的“鸡为什么要过马路?”笑话,他们认为鸡一定是过马路的专家,于是去寻找鸡来帮助它们。 事实上,鸡是非常忙碌的生物,它们只有有限的时间来帮助奶牛。农场上有 $C$ 只鸡($1 \leq C \leq 20,000$),方便地用编号 $1 \ldots C$ 标识,每只鸡 $i$ 只愿意在确切的时间 $T_i$ 帮助一头奶牛。奶牛们从不着急,它们的日程安排更加灵活。农场上有 $N$ 头奶牛($1 \leq N \leq 20,000$),方

闻缺陷则喜何志丹 1980

Why Did the Cow Cross the Road II - UPCOJ 3438 - 动态规划DP

题目:题目描述 Farmer John raises N breeds of cows (1≤N≤1000), conveniently numbered 1…N. Some pairs of breeds are friendlier than others, a property that turns out to be easily characterized in terms of bre

LucienShui 1269

【图论 BFS染色 并集查找 】P3663 [USACO17FEB] Why Did the Cow Cross the Road III S|普及+

Why Did the Cow Cross the Road III S ## 题目描述 奶牛为什么要过马路?其中一个原因是 Farmer John 的农场有很多道路,使得他的奶牛在四处走动时不可避免地要穿过许多道路。 FJ 的农场被安排成一个 $N \times N$ 的方形网格田地($2 \leq N \leq 100$),某些相邻的田地(例如南北向或东西向)被道路分隔,整个网格的外部有一圈高高的围栏,防止奶牛离开农场。奶牛可以从任何田地自由移动到相邻的田地(北、东、南或西),尽管它们除非绝对必要

闻缺陷则喜何志丹 2755

USACO 2017 February Contest总结

比赛链接 T1 Why Did the Cow Cross the Road 题目链接 题目大意:给定一个N×NN×NN\times N的网格。穿过两个格子的交界处需要有一个花费,每走三个格子也会有一个花费,问从左上角走到右下角的最小花费。 思路:一眼看上去每三个格有一个花费,看上去不是很好处理,仔细一想。 想 想。 发现我们可以将每三步化成一步,看一个点走三步可以到哪,就连边,边权...

szh_0808的博客 512

Deep Reinforcement Learning - 1. DDPG原理和算法

Deep Reinforcement Learning - 1. DDPG原理和算法 背景描述 DDPG的定义和应用场景 DDPG算法相关基本概念定义 DDPG实现框架和算法 DDPG对于DPG的关键改进 下一篇 以下用RL作为Reinforcement Learning 的简称。背景描述概括来说,RL要解决的问

kenneth_yu的博客 14万+

【应用】打造你的安全本地AI购物助手:OpenClaw + 淘宝MCP部署全攻略

本文介绍了在Ubuntu虚拟机中配置OpenClaw连接Windows宿主机的淘宝MCP服务的两种方案。核心原理是通过修改MCP服务监听地址或SSH隧道转发,实现跨网络访问。方案1推荐修改MCP服务绑定0.0.0.0并配置防火墙放行端口,适合长期使用;方案2通过SSH隧道转发,适合临时测试。文章详细说明了环境准备、配置文件修改及两种互通方案的具体实施步骤,重点解决了虚拟机与宿主机网络互通的关键问题。

海兰 1321

【USACO 2017 February Platinum】Why Did the Cow Cross the Road II 题解(DP+线段树 或 最长上升子序列)

Description Farmer John raises N breeds of cows (1≤N≤1051\leq N \leq 10^51≤N≤105), conveniently numbered 1…N. Some pairs of breeds are friendlier than others, a property that turns out to be easily characterized in terms of breed ID: breeds a and b are fri

CJZ的博客 766

NSX-T 4.1部署搭建

NSX-T4.1 部署搭建

weixin_58250887的博客 564

P3662 [USACO17FEB]Why Did the Cow Cross the Road II S

解题思路: 要有k个连续编号的灯,则枚举每个长度为k的区间,假设把这个区间的全都修好,求其最小修好的灯的数量。 区间固定,所以考虑枚举每个区间的情况,在输入的时候初始化,如果灯坏则light[i]为1,否则为0. 1.把每一个区间灯坏的情况做一个统计(前缀做统计),然后从k开始扫描这个数组,计算需要修好多少盏灯,取最小。 #include<bits/stdc++.h> #define MAX 100010 using namespace std; using gg = long long; ..

qq_45768588的博客 485

基于YOLOv8和时序模型的异常动作检测系统

异常动作检测是计算机视觉领域的重要应用,广泛应用于智能监控、安防系统、老人看护等场景。本项目结合YOLOv8目标检测和LSTM时序模型,实现对打架、摔倒、奔跑等异常动作的实时检测,并提供了完整的Web界面。多技术融合: 结合YOLOv8目标检测和LSTM时序建模实时检测: 支持实时视频流处理和文件分析用户友好: 提供完整的Web界面可扩展性: 模块化设计便于功能扩展高性能: 包含多种优化策略。

YOLO 763

ASPICE(Automotive SPICE)流程落地,研发管理工具自研,如何从量化数据体现研发效率提升的

摘要: ASPICE流程显著提升研发效率,主要体现在质量、成本和时间三个维度。关键量化指标包括:缺陷率降低30%-60%,维护工作量减少28%,研发周期缩短10%-20%,需求变更率降低58%,代码评审效率提升300%。初期开发成本虽增加9%,但长期回报率高。核心方法包括缺陷预防前移、需求精准管理和流程标准化与自动化。建立量化度量体系需覆盖缺陷密度、需求稳定性、进度偏差等指标,并依托工具链支持数据收集。实施ASPICE是短期投入换取长期质量提升和成本优化的高效投资。

汽车软件开发 183

[Usaco2017 Feb]Why Did the Cow Cross the Road

Description有一幅n*n的方格图,n <=100,每个点上有一个值。从(1,1)出发,走到(n,n),只能走上下左右。每走一步花费t,每走三步需要花费走完三步后到达格子的值。求最小花费的值。Sample Input4 230 92 36 1038 85 60 1641 13 5 6820 97 13 80Sample Output31这题有两种思想,可以强行上一个三维广搜,不过我们也可以强

Wolfycz的博客 423

Mamba-YOLOv8深度解析:基于状态空间模型的下一代目标检测架构(含完整代码与实战部署)文末含资料链接!

通过本文的完整指南,您将掌握从理论创新到工程落地的全流程技术细节。立即动手实践,开启目标检测的新纪元!

FJN110的博客 518

[USACO17FEB]Why Did the Cow Cross the Road II P

[USACO17FEB]Why Did the Cow Cross the Road II P树状数组·特殊的Dp更新方式题解:类似最长公共子序列的方程: f[i][j]=max( f[i-1][j], f[i][j-1] ) f[i][j]=max( f[i][j], f[i-1][j-1]+1 ) 当i、j可以匹配我们发现+1的位置很少,想办法只处理这些有贡献的。 也就是要快速推知f[i-

FTM's Blog 587

一文吃透 SAP HANA SDA:把分散数据当作本地数据来用的那把钥匙

摘要:SAP HANA SDA(Smart Data Access)技术详解:150字精要 SAP HANA SDA是一种数据虚拟化技术,允许在不复制数据的情况下访问远端数据源。核心功能包括: 通过Remote Source定义连接配置 创建Virtual Table作为本地代理 支持谓词下推优化查询性能 与SDI技术协同工作扩展数据集成能力 典型应用场景包括: 跨系统联邦查询 冷热数据分层管理 混合云数据整合 远程表复制(RTR)实现近实时数据同步 实施要点: 需关注适配器能力差异 合理运用查询下推优化

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 320

Pinocchio 快速详细入门教程 —— 开源机器人运动学动力学库

本文介绍了机器人学中的数字机器人学、正逆运动学、动力学仿真与控制、最优控制等核心主题,以及Pinocchio库的应用。内容包括: 数字机器人学:通过UR5机器人模型演示了构型空间采样、碰撞检测、路径规划等基础操作,使用优化方法在约束条件下寻找有效构型。 运动学:详细讲解了二维和三维机器人的正运动学(构型到末端位置)和逆运动学(目标位置到构型),包括串联机械臂和并联机器人的处理。 动力学与控制:介绍了动力学仿真(如自由落体、摩擦效应)、PD控制、计算扭矩控制,以及接触仿真(碰撞检测与处理)。 最优控制:以独轮

机器人控制与仿真应用 2883

[USACO17FEB]Why Did the Cow Cross the Road III G

题目链接:[USACO17FEB]Why Did the Cow Cross the Road III G 直接容斥计算即可,总方案减去不合法的。 什么是不合法呢?无交点,或者包含关系。 用两个Fenwick维护一下左右端点即可。 AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++....

青烟绕指柔的博客 514

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

P3663 [USACO17FEB]Why Did the Cow Cross the Road III S

题目传送门 前言:本题用深搜或者广搜都可以,而且算是比较水的一道题,luogu绿标,蒟蒻在这里分享一种深搜的做法。 分析:本题主要是求连通块。对于路的处理,可以用一个四维的bool数组road[u1][v1][u2][v2]来保存是否有路,其中u1,u2表示有路联通的两个小区域的横坐标,v1,v2表示这两个小区域的纵坐标,注意:因为是无向图,所以road[u1][v1][u2][v2] = road[u2][v2][u1][v1]。保存好路的位置之后就可以用深搜去暴力搜索连通块了,当判断两个相邻区域,x1,

cqbz_luoyiran的博客 338

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[USACO17FEB]Why Did the Cow Cross the Road II

[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4990 [算法] 首先记录b中每个数的出现位置 , 记为P 对于每个ai , 枚举(ai - 4) - (ai + 4) , 将Pj从大到小加入序列 然后求最长上升子序列即可 , 详见代码 ...

481

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[USACO17FEB]Why Did the Cow Cross the Road II S

题目描述 The long road through Farmer John's farm hascrosswalks across it, conveniently numbered(). To allow cows to cross at these crosswalks, FJ installs electric crossing signals, which light...

aoanping0730的博客 499

洛谷P3662 [USACO17FEB] Why Did the Cow Cross the Road II S-队列

摘要:题目要求计算最少需要修复的信号灯数量,使得存在至少K个连续的信号灯正常工作。使用滑动窗口技术,首先标记坏灯位置,然后通过维护一个长度为K的窗口,统计每个窗口内的坏灯数量并追踪最小值。时间复杂度O(N),空间复杂度O(N)。例如输入10个灯中5个损坏,要求6个连续正常灯时,至少需要修复1个灯。

lan_in的博客 733

洛谷 P3663 [USACO17FEB]Why Did the Cow Cross the Road III S

P3663 [USACO17FEB]Why Did the Cow Cross the Road III S 题目描述 Why did the cow cross the road? Well, one reason is that Farmer John's farm simply has a lot of roads, making it impo...

HJ921004的博客 333

[USACO17FEB]Why Did the Cow Cross the Road I S

题目描述 Farmer John's cows are trying to learn to cross the road effectively. Remembering the old "why did the chicken cross the road?" joke, they figure the chickens must be experts on crossing th...

aoanping0730的博客 1143

[USACO17FEB]Why Did the Cow Cross the Road III S题解

题目链接 洛谷P3663 bzoj4997 思路 这道题要我们求遥远的牛,其实就是把道路当成障碍,去统计每个连通块有多少头牛,不在一个连通块的牛都是遥远的,可以用乘法原理直接计算。 在找连通块时用bfs搜索,暴力统计连通块。存图时可以用三维数组存它能否走到相邻的格子,但我用的是二维数组进行二进制压缩,可以省空间,也好看一些。 具体还有一些细节和优化,代码里有注释。 code: #incl...

301

[USACO17FEB]Why Did the Cow Cross the Road I P

[USACO17FEB]Why Did the Cow Cross the Road I P逆序对题解:性质1:转一个就行。 性质2:设c[i]是a[i]在b数组中的位置,ans=c的逆序对数量。 性质3:把队首的转到队尾去,答案+=大于它的-小于它的。Code://null

FTM's Blog 595

二位偏序,P3660 [USACO17FEB] Why Did the Cow Cross the Road III G

我们预排序后顺序遍历所有坐标,这样有个然后查询左右端点间的右端点数目,这些右端点的左端点一定在当前左端点左边,所以当前坐标的贡献就是区间内右端点的数目。时间复杂度: O(nlogn)空间复杂度:O(n)由于所有坐标一定不重复,查的时候也不用考虑啥细节。然后树状数组维护区间内的右端点数目。查询完之后将右端点插入即可。我们将坐标按照第一维排序。

EQUINOX1的博客 409
上一篇: [曾经的Ynoi2012] NOIP2015洋溢着希望
下一篇: 扩展欧拉定理
NephrenRuqInsania
博客等级 码龄8年 20粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值