首页 > 其他分享 >51nod 2484 小b和排序(DP)

51nod 2484 小b和排序(DP)

时间:2023-02-07 12:03:01浏览次数:47  
标签:min 51nod 2484 int DP 输入 scanf dp


小b有两个长度都为n的序列A,B。

现在她需要选择一些i,然后交换A[i]和B[i],使得A和B都变成严格递增的序列。

你能帮小b求出最少交换次数吗?

输入保证有解。

 收起

输入


第一行输入一个正整数n,表示两个数组的长度; 第二行输入n个数,表示A[i],以空格隔开; 第三行输入n个数,表示B[i],以空格隔开; 其中1≤n≤1000, 0≤A[i],B[i]≤2000


输出


输出一个数,表示交换次数


输入样例


4 1 3 5 4 1 2 3 7


输出样例


1


分析:

DP如此奇妙

dp[i][0]表示在i不反转

dp[i][1]表示在i反转

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

const int N = 1000005;
int a[N],b[N],dp[N][3];
int main()
{
int n,m;
scanf("%d",&n);
int sum1=0,sum2=0;
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
for(int i=1; i<=n; i++)
{
scanf("%d",&b[i]);
}

a[0]=b[0]=-1;
memset(dp,127,sizeof(dp));
dp[0][0]=dp[0][1]=0;


for(int i=1;i<=n;i++)
{
if(a[i]>a[i-1]&&b[i]>b[i-1])
{
dp[i][0]=min(dp[i][0],dp[i-1][0]);
dp[i][1]=min(dp[i][1],dp[i-1][1]+1);
}
if(a[i]>b[i-1]&&b[i]>a[i-1])
{
dp[i][0]=min(dp[i][0],dp[i-1][1]);
dp[i][1]=min(dp[i][1],dp[i-1][0]+1);
}

}
cout<<min(dp[n][0],dp[n][1])<<endl;

return 0;
}

 

标签:min,51nod,2484,int,DP,输入,scanf,dp
From: https://blog.51cto.com/u_14932227/6041854

相关文章

  • 51nod 1428活动安排问题
    有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室?  收起输入第一行一个正整数n(n<=10000)代表活动......
  • 51nod 1138 连续整数的和 好题
    给出一个正整数N,将N写为若干个连续数字和的形式(长度>=2)。例如N=15,可以写为1+2+3+4+5,也可以写为4+5+6,或7+8。如果不能写为若干个连续整数的和,则输出NoS......
  • 51nod 1095 Anigram单词
    1095Anigram单词一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。另:相同的2个单词不算Anigram。现在给定......
  • 51nod 1133 不重叠的线段
    X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。例如:[15][23][36],可以选[23][36],这2条线段互不重叠。 收......
  • 51Nod 1050 循环数组最大子段和
    N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的......
  • 论文翻译:2022_Time-Shift Modeling-Based Hear-Through System for In-Ear Headphones
    论文地址:基于时移建模的入耳式耳机透听系统引用格式:摘要透传(hear-through,HT)技术是通过增强耳机佩戴者对环境声音的感知来主动补偿被动隔离的。耳机中的材料会减......
  • SharedPreferences使用
    其他代码同,QQ登录<spanstyle="font-size:14px;">packagecom.itheima28.qqlogin.utils;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStr......
  • 强化学习 2 —— 用动态规划解决 MDP 问题 (Policy Iteration and Value Iteration)
    强化学习2——用动态规划求解MDP在上一篇文章​​强化学习1——一文读懂马尔科夫决策过程MDP​​介绍了马尔科夫过程,本篇接着来介绍如何使用动态规划方法来求解。......
  • 强化学习 1 —— 一文读懂马尔科夫决策过程(MDP)
    强化学习—马尔科夫决策过程(MDP)1、强化学习介绍强化学习任务通常使用马尔可夫决策过程(MarkovDecisionProcess,简称MDP)来描述,具体而言:机器处在一个环境中,每个状态为机器......
  • 【android】Android基础知识之SharedPreferences知识点总结
    1.SharedPreferences简介  Sharedpreferences是Android平台上一个轻量级的存储类,可以用于保存应用程序的各种配置信息,如应用设置里面的各种开关、是否打开音效、是否使......