首页 > 其他分享 >A. Tokitsukaze and Strange Inequality(dp版)

A. Tokitsukaze and Strange Inequality(dp版)

时间:2024-07-21 12:41:27浏览次数:5  
标签:int ll Tokitsukaze lst Strange -- include dp

链接

https://codeforces.com/problemset/problem/1677/A

题目

思路

这题感觉还是挺有难度的(为啥题解都说不难Orz),给我启发最大的是这句话:

具体怎么处理呢?把i按照n->1的顺序遍历,然后j从反方向遍历:i+1->n。求S[i][j]时用S[i+1][j],因为S对应的是以j为结尾的,然后在遍历中相当于不知道i的位置,已有的只有i+1,所以如果a[j]>a[i],那么有S[i][j] = S[i+1][j] + 1,因为多收了一个i位置的数,所以计数器加1。对L的计算同理。
同时我为了加深印象,增加了一个转向的版本。后续可以补充树状数组版的。
这相当于是dp预处理版求解。

代码

修改代码

for (int i = 1; i <= n; i++)
		{
			for (int j = i - 1; j >= 1; j--)
			{
				if (lst[j] > lst[i])
				{
					S[j][i] = S[j + 1][i];
					L[j][i] = L[j][i - 1] + 1;
				}
				else
				{
					S[j][i] = S[j + 1][i] + 1;
					L[j][i] = L[j][i - 1];
				}
			}
		}

完整代码

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
#define IOS ios::sync_with_stdio(false), cin.tie(0) ,cout.tie(0)
using namespace std;
typedef long long ll;
const int N = 5e3 + 10;
short int S[N][N], L[N][N];
int lst[N];
signed main()
{
	IOS;
	int t; cin >> t;
	while (t--)
	{
		int n; cin >> n;
		ll ans = 0;
		for (int i = 1; i <= n; i++)cin >> lst[i];
		for (int i = 1; i <= n; i++)
			for (int j = 1; j <= n; j++)
				S[i][j] = L[i][j] = 0;

		for (int i = 1; i <= n; i++)
		{
			for (int j = i - 1; j >= 1; j--)
			{
				if (lst[j] > lst[i])
				{
					S[j][i] = S[j + 1][i];
					L[j][i] = L[j][i - 1] + 1;
				}
				else
				{
					S[j][i] = S[j + 1][i] + 1;
					L[j][i] = L[j][i - 1];
				}
			}
		}



		/*for (int i = n; i >= 1; i--)
		{
			for (int j = i + 1; j <= n; j++)
			{
				if (lst[j] > lst[i])
				{
					S[i][j] = S[i + 1][j] + 1;
					L[i][j] = L[i][j - 1];
				}
				else
				{
					S[i][j] = S[i + 1][j];
					L[i][j] = L[i][j - 1] +1;
				}
			}
		}*/
		for (int b = 2; b < n - 1; b++)
		{
			for (int c = b + 1; c < n; c++)
			{
				ans += (ll)(S[1][c] - S[b][c]) * (ll)(L[b][n] - L[b][c]);
			}
		}

		cout << ans << '\n';
	}

	return 0;
}

标签:int,ll,Tokitsukaze,lst,Strange,--,include,dp
From: https://www.cnblogs.com/zzzsacmblog/p/18314354

相关文章

  • 2024最新子比主题源码zibll-V7.9(含教程) | WordPress主题
    内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍2024最新Zibll子比主题V7.9版本源码开心版|WordPress主题安装教程在压缩包内V7.7更新日志:新功能新增数字翻页输入页码跳转的功能(注:总页数超过8页才会显示)新增后台......
  • Android10.0 锁屏分析-KeyguardPatternView图案锁分析
    首先一起看看下面这张图:通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityModeinflate出来,并添加到界面上的。我们知道,Pattern锁所使用的layout是R.layout.keyguard_pattern_view;<com.android.keyguard.KeyguardPat......
  • 使用 FFpyplayer 帧和 QPixmap 以及 MPEG-TS 格式的 UDP 流时出现追赶延时缓冲和滞后
    我正在尝试根据此帖子中找到的代码来构建我的用例。但是,我在使用pythonFFpyPlayer时遇到了麻烦;对于传统的ffplay,我没有这些问题。运行我的应用程序时,我注意到一种追赶延时缓冲效果,视频播放速度显着加快,然后恢复到正常速度。在某些视频中,我发......
  • C++分组背包问题_动态规划dp_背包_算法竞赛
    OIWiki上的详细讲解模型总结分组背包的问题模板:有nnn件物品和一个大小为mm......
  • 虚拟机centos9搭建wordpress
    利用nginx和MariaDB搭建wordpress 1.更换yum源更新系统软件包:1.1备份yum源1.1.1创建备份目录:创建一个目录来保存备份的仓库配置文件:sudomkdir-p/etc/yum.repos.d/backup1.1.2移动现有仓库配置文件到备份目录:将/etc/yum.repos.d/目录中的所有文件移动到备份......
  • 换根dp三题
    真的是公公又式式啊换根dp的宗旨是利用已有的信息来推出其他信息换根dp的题目通常是树,o(n)时间空间,要求每一个点的答案。我们如果指定了以1为根,那么可以算出每个点往下的答案,但是每个点的父亲对本身的贡献还没有算,所以我们可以记录dp1,dp2两个数组,分别记录专用图注意,dp1[u]......
  • dpvs 调整tcp mss
    修改tcpoptions中mss值src/ipvs/ip_vs_proto_tcp.c因为tcp头部options中不同kind顺序是随机的,所以需要遍历找到kind值是mss2和length值是4,再修改后面的mssvalue。staticvoidtcp_out_adjust_mss(intaf,structtcphdr*tcph){unsignedchar*ptr;intlength;......
  • dp-完全背包
    解释完全背包模型与0-1背包类似,与0-1背包的区别仅在于一个物品可以选取无限次,而非仅能选取一次。我们可以借鉴0-1背包的思路,进行状态定义:设$f_{i,j}$为只能选前i个物品时,容量为j的背包可以达到的最大价值。需要注意的是,虽然定义与0-1背包类似,但是其状态转移方程与......
  • Javascript 在我的本地服务器上运行,但在 WordPress 上不起作用
    大家好,我有一个问题。我有一个在本地服务器中完美运行的模板/主题,但是当我将其移动到Wordpress时,根据我的研究,我得到了“jQuery不兼容”的信息。 我附上了代码的图像。你能帮我一下吗,一切看起来都很完美,在我看来一切都很完美,但在Wordpress中却不然。提前谢谢你!......
  • 数位 DP
    数位\(dp\)大多使用高位计算的时候使用低位计算后的结果,从而做到优化效率[ZJOI2010]数字计数题目描述给定两个正整数\(a\)和\(b\),求在\([a,b]\)中的所有整数中,每个数码各出现了多少次。保证\(1\lea\leb\le10^{12}\)。求解策略第一种方法-递推法定义\(dp_i......