首页 > 其他分享 >AT_abc106_d [ABC106D] AtCoder Express 2 题解

AT_abc106_d [ABC106D] AtCoder Express 2 题解

时间:2023-05-02 20:57:38浏览次数:60  
标签:列车 int 题解 城市 Express ri 之间 abc106 数量

题目传送门

解题思路

区间 \(dp\)。

划分阶段:以左右城市之间的列车数量为阶段。

状态表达:设 \(f_{i,j}\) 为城市 \(i\) 与城市 \(j\) 之间的列车数量。

状态转移:

由图可知,城市 \(l\) 与城市 \(r\) 之间的列车数量,就是城市 \(l\) 与城市 \(r-1\) 之间的列车数量与城市 \(l+1\) 与城市 \(r\) 之间的列车数量(蓝色括号)加上刚好从城市 \(l\) 到城市 \(r\) 的列车数量,但是还有一个重合部分,也就是城市 \(l+1\) 与城市 \(r-1\) 之间的列车数量(橙色方框)。

所以,城市 \(l\) 与城市 \(r\) 之间的列车数量就等于城市 \(l\) 与城市 \(r-1\) 之间的列车数量与城市 \(l+1\) 与城市 \(r\) 之间的列车数量减去城市 \(l+1\) 与城市 \(r-1\) 之间的列车数量加上刚好从城市 \(l\) 到城市 \(r\) 的列车数量。

即:

\[f_{i,j}=f_{i,j}+f_{i,j-1}+f_{i+1,j}-f_{i+1,j-1} \]

初始状态:求出刚好从城市 \(i\) 到城市 \(j\) 的列车数量;即:f[l[i]][r[i]]++;

求解目标:\(f_{p,q}\);

代码

AC 记录

#include<bits/stdc++.h>
#define ri register int
using namespace std;
int n,m,q; 
int l[200005],r[200005],f[505][505];
int main(){
	cin>>n>>m>>q;
	for(ri i=1;i<=m;i++){
		cin>>l[i]>>r[i];
		f[l[i]][r[i]]++;
	}
	for(ri i=1;i<=n;i++)
		for(ri j=1;j<=n;j++)
			f[i][j]+=f[i+1][j]+f[i][j-1]-f[i+1][j-1];
	while(q--){
		int u,v;
		cin>>u>>v;
		cout<<f[u][v]<<'\n';
	} 
	return 0;
}

标签:列车,int,题解,城市,Express,ri,之间,abc106,数量
From: https://www.cnblogs.com/zzyblog0619/p/17368247.html

相关文章

  • CF1817C Similar Polynomials 题解
    可能更好的阅读体验题目传送门Div.1C拉格朗日差值,赛时开香槟。题目大意给定\(d\)次两个多项式\(A(x),B(x)\)。求\(s\),使得\(B(x)\equivA(x+s)\pmod{10^9+7}\),保证\(s\)存在。给出多项式的形式为给出\(x=0,1,\cdots,d\)模\(10^9+7\)的值。\(d\le2.5\times......
  • CF三月D题题解
    cf1798d题意:重排序列,使得其中连续子序列和的绝对值最大的最大值小于序列最大值减最小值,序列和为0考虑这样一种构造方案:正负数分类,0直接不管然后记录当前和sum,当sum非负时,加上一个负数,当sum是负数时,加上一个正数即可正确性证明:显然前缀和都是合法的。考虑计算前缀和数组,满足......
  • 「BZOJ2144」跳跳棋-题解
    「BZOJ2144」跳跳棋个人评价挺好的一道题,难点在于想到树这个结构和建树1题面跳跳棋是在一条数轴上进行的。棋子只能摆在整点上。每个点不能摆超过一个棋子。我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置。我们要通过最少的跳动把他们的位置移......
  • Educational Codeforces Round 147 (Rated for Div. 2) 题解
    ALink。模拟,代码。BLink。模拟,代码。CLink。我们设\(c\)为最后相同的字符。性质:我们一定不会删除字符\(c\)。因此以\(c\)为最后字符的操作次数就是不包含字符\(c\)的极大段的最小操作次数的最大值。对于一个长度为\(l(l\ge1)\)的段,它的最小操作次数为\(\l......
  • P4198 楼房重建 题解
    P4198楼房重建题解线段树二分思路考虑在线段树内维护二信息:区间斜率最大值\(mx\)区间最大斜率上升序列长度\(len\)答案即为根节点的\(len\)。考虑转移信息二:蓝色部分代表左区间的上升序列,红色是右区间的,绿色折线就是当前区间的上升序列。......
  • AtCoder Regular Contest 119 F AtCoder Express 3
    洛谷传送门AtCoder传送门很厉害的题!考虑所有车站已确定,如何求\(0\)到\(n+1\)的最短路。设\(g_{i,0}\)为只考虑\(0\simi\)的点,到\(i\)和它左边第一个\(\text{A}\)的最短路,\(g_{i,1}\)同理。有转移:若\(s_{i-1}=\text{A},s_i=\text{A},g_{i,0}\getsg_{......
  • P2051 [AHOI2009] 中国象棋 题解
    DP。状态设计是点睛之笔。首先显然有每行或每列只能有至多\(2\)个棋子。设状态\(f_{i,j,k}\)为第\(i\)行,有\(j\)列只放了一个棋子,\(k\)列放了两个棋子。之后直接转移即可。注意边界判断。code:点击查看代码#include<bits/stdc++.h>#definelllonglong#defined......
  • Java cmd下编译乱码问题解决办法
    1、报错样式 2、解决办法1)指定字符集,如下 2)修改编码格式通过“记事本”打开—》另存为3)修改环境变量此电脑——》属性——》高级系统设置——》环境变量——》(系统环境变量)新建——》“JAVA_TOOL_OPTIONS” “-Dfile.encoding=UTF-8”如下图:——》重启cmd,再......
  • ChatGPT搭建Express与Vue3网页版带后台
    技术架构golang+node16+vite+vue3+expresscnetos7以上+宝塔面板文字搭建教程把service目录上传到宝塔www/wwwroot目录下面,放通3000端口,新建一个数据库,导入数据库,修改.env里的配置进入到service目录,执行nohup./linux.bin&测试后端api有没有正常启动,执行curlhttp:/......
  • CF1034D Intervals of Intervals 题解
    传送门CF1034DIntervalsofIntervals题目大意有\(n\)个线段,第\(i\)个是\([a_i,b_i]\)。定义区间\([l,r]\)的价值是第\(l\)个线段到第\(r\)个线段的并的长度。找出\(k\)个不同的区间,使得总价值最大。输出最大总价值。\(1\len\le3\times10^5,1\lek\le......