Contest 153
2019-09-14 23:16:25
总体感受:节奏尚可,难度尚可。然而还是卡在了最后一题,完全没有想到使用dp。
注意点:
1)Contest的最后一题往往是DP,Graph,这个敏感度需要提高;
2)DP的题目还是远远不够熟练。
- 801. Minimum Swaps To Make Sequences Increasing
问题描述:

问题求解:
keep[i] : 保留i位置的数字,使得[0, i]两个数组递增的最小交换次数。
swap[i] : 交换i位置的数字,使得[0, i]两个数组递增的最小交换次数。
public int minSwap(int[] A, int[] B) {
int n = A.length;
int[] keep = new int[n];
int[] swap = new int[n];
Arrays.fill(keep, n);
Arrays.fill(swap, n);
keep[0] = 0;
swap[0] = 1;
for (int i = 1; i < n; i++) {
if (A[i] > A[i - 1] && B[i] > B[i - 1]) keep[i] = Math.min(keep[i], keep[i - 1]);
if (A[i] > B[i - 1] && B[i] > A[i - 1]) keep[i] = Math.min(keep[i], swap[i - 1]);
if (B[i] > A[i - 1] && A[i] > B[i - 1]) swap[i] = Math.min(swap[i], keep[i - 1] + 1);
if (B[i] > B[i - 1] && A[i] > A[i - 1]) swap[i] = Math.min(swap[i], swap[i - 1] + 1);
}
return Math.min(keep[n - 1], swap[n - 1]);
}
- 1187. Make Array Strictly Increasing
问题描述:

问题求解:
public int makeArrayIncreasing(int[] arr1, int[] arr2) {
int n = arr1.length;
int[] keep = new int[n];
Set<Integer> set = new TreeSet<>();
for (int num : arr2) set.add(num);
int m = set.size();
int[] sorted = new int[m];
int idx = 0;
for (int num : set) sorted[idx++] = num;
int[] swap = new int[m];
Arrays.fill(keep, n + 1);
keep[0] = 0;
for (int i = 0; i < m; i++) swap[i] = 1;
for (int i = 1; i < n; i++) {
if (arr1[i] > arr1[i - 1]) keep[i] = keep[i - 1];
int cur_min = n;
for (int j = 0; j < m; j++) {
int cur_swap = n + 1;
if (arr1[i] > sorted[j]) keep[i] = Math.min(keep[i], swap[j]);
int temp = cur_min;
cur_min = Math.min(cur_min, swap[j]);
if (sorted[j] > arr1[i - 1]) cur_swap = Math.min(cur_swap, keep[i - 1] + 1);
cur_swap = Math.min(cur_swap, temp + 1);
swap[j] = cur_swap;
}
}
int res = Math.min(n + 1, keep[n - 1]);
for (int i = 0; i < m; i++) res = Math.min(res, swap[i]);
return res > n ? -1 : res;
}
Contest 153的更多相关文章
- AtCoder Beginner Contest 153 题解
目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...
- noip-2006普及组-数列- 【模拟-找规律-快速幂】
链接:https://ac.nowcoder.com/acm/contest/153/1047 来源:牛客网 题目描述 给定一个正整数k( ≤ k ≤ ),把所有k的方幂及所有有限个互不相等的k的方幂 ...
- 坑爹CF April Fools Day Contest题解
H - A + B Strikes Back A + B is often used as an example of the easiest problem possible to show som ...
- 「CometOJ」Contest #11
Link Aeon 显然字典序最大就是把最小的字母放在最后 Business [动态规划] 简单dp dp[i][j]dp[i][j]dp[i][j]表示到第iii天,当前有jjj块钱,最后返还的钱最 ...
- Programming Contest Problem Types
Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2016 Multi-University Training Contest 2 D. Differencia
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016 Multi-University Training Contest 1 G. Rigid Frameworks
Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- hdu-5988 Coding Contest(费用流)
题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
随机推荐
- iOS多线程开发之NSOperation
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- RocketMQ介绍与实践
一.RocketMQ介绍 1.相关术语名词 1. NameSrv:是一个几乎无状态节点,可集群部署,节点之间无任何信息同步. 2. Broker:分为Master与Slave,一个 ...
- OpenCA搭建
前言: OpenCA是OpenCA开源组织使用Perl对OpenSSL进行二次开发而成的一套完善的PKI免费软件,主要由四部分组成:CA.RA.PUB和NODE.简而言之,PUB是对外提供服务的接口, ...
- 什么是AWVS
什么是AWVS Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞,现已更新到10.(下 ...
- java23种设计模式 (转)
文章在:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 随着自己的开发经验增加以及自己做了很多的 大专栏 jav ...
- celery beat之pidfile already exists问题
背景 在进行celery定时任务测试时,发现到点任务并未执行,检查了log发现在启动celery beat的时候有这样一个报错,所以celery beat并未启动成功. 1234 (hzinfo) E ...
- 编写一个可复用的SpringBoot应用运维脚本
前提 作为Java开发者,很多场景下会使用SpringBoot开发Web应用,目前微服务主流SpringCloud全家桶也是基于SpringBoot搭建的.SpringBoot应用部署到服务器上,需要 ...
- 6487. 【GDOI2020模拟02.29】列强争霸war
题目描述 区间绝对众数 即出现次数>len/2下取整的数 对于区间[L,R]扫一遍,维护一个数x和出现次数s 当前数=x则s+1,否则s-1,若s已为0则把x设为当前数 若区间内存在绝对众数,那 ...
- PyQt5之俄罗斯方块
上个礼拜有个需求,对csv里的数据按条件进行拆分计算.一想到要做计算,少不了pandas.还有个要求最好是生成命令行工具或者带有界面. 于是尝试下,使用PyQt5做了个简单的UI界面给程序包个壳子,然 ...
- docker部署tensorflow serving以及模型替换
Using TensorFlow Serving with Docker 1.Ubuntu16.04下安装docker ce 1-1:卸载旧版本的docker sudo apt-get remove ...