uva 11536 - Smallest Sub-Array】的更多相关文章

题意:给定 n 个由0~m-1的整数组成的序列,输入 k ,问你找出连续的最短序列,使得这个序列含有1-k的所有整数. 析:这个题,很简单么,只要从头开始扫一遍就OK,时间复杂度为O(n). 代码如下: #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> #inclu…
题目大意:按照题目中的要求构造出一个序列,找出最短的子序列,包含1~k. 解题思路:先根据题目的方法构造出序列,然后用Towpointer的方法,用v[i]来记录当前[l, r]中有几个i:当r移动时,出现v[i] == 1时, c++(用来记录有几个1~k的数字):当c == k 时,就要移动l,当出现v[i] == 0时,c--. #include <cstdio> #include <cstring> #include <iostream> #include &l…
题目: 思路: 读完题之后第一时间想到的是尺取法来做这个题,结果让自己写写崩了,还是练得少!! 到网上搜了一下学习了大佬的标记方法,用一个变量来判断是不是都已经出现,要比每次都判断一下快超多. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define MAX 1e3 #define FRE() freopen("in.txt","r",stdin) #define FRO() freopen(…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 尺取法. 考虑一个1..i的窗口. 里面在到达了i位置的时候恰好有1..k这些数字了. 为了更接近答案. 显然可以试着让左端点变成2.(如果还能有1..k这些数字的话. 所以有1..k这些数字之后.就让左端点尽可能往右. 然后尝试更新答案. 然后让右端点右移. 重复上述过程. [代码] #include <bits/stdc++.h> #define ll long long #define rep1(i,a,b) for (…
Smallest Bounding Rectangle Given the Cartesian coordinates of n(>0)2-dimensional points, write a program that computes the area of their smallest bounding rectangle (smallest rectangle containing all the given points). Input The input le may contain…
这道题貌似可以用滑动窗口或者单调栈做, 但是我都没有用到. 这道题要求连续子序列中和乘上最小值最大, 那么我们就可以求出每一个元素, 以它为最小值的的最大区间的值, 然后取max就ok了.那么怎么求呢? 我可以初始化出一个第一个小于当前元素的的元素的位置, 也就是说初始化出以当前元素为最小值的 左右端点, 求出之后枚举一遍就ok了. 那么关键是怎么求呢? 这里有一点扫描法的味道. 假设当前序列为1243 以求右端点为例, 右端点的位置也就是在右侧第一个小于当前元素的元素的位置. 那么如果序列是递…
题意:给出两点,求经过这两点的正n边形的最小面积 题解:这两点一定是最长的弦,我们设正多边形中点c,找到c到每个点的距离(都相同) 我们知道那个等腰三角形的底与每个角度就使用余弦定理 #include<set> #include<map> #include<queue> #include<stack> #include<cmath> #include<vector> #include<string> #include<…
题意:给定两个点A和B,求包含这两个点的面积最小的正 n(已知)边形. #include<iostream> #include<iomanip> #include<cmath> #define pi 2.0*asin(1.0) #define sqr(a) ((a)*(a)) using namespace std; int main() { int n; double x1,x2,y1,y2,d,thy,s; while(cin>>x1>>y1…
https://vjudge.net/problem/UVA-12307 求覆盖所有点的最小矩形面积.周长 相当于求凸包的最小面积外接矩形.最小周长外接矩形 结论: 这个矩形一定有一条边和凸包上一条边重合 证明去看https://wenku.baidu.com/view/f11d0836ee06eff9aef807d9.html 枚举一条边,用旋转卡壳求其他三边 假设现在正枚举到A点,对应紫色边, 显然,紫色边的对边一定 过A点的对踵点且与紫色边平行 那么矩形的高|BH|=AE.AB的叉积/ |…
题意:给你一些点,找出两个可以包含所有点的矩形,一个保证矩形面积最小,一个保证矩形周长最小,输出两个最小值 题解:首先根据所有点求一个凸包,再在这个凸包上枚举每条边,作为矩形的一条边(这样可以保证最小) 接着根据旋转卡壳的思想求出另外三条边,这样枚举判断就好 求另三条边时首先方向是确定了的,找点就是旋转卡壳,思想就是:枚举的任意两条边a与b,a的另三条边与b的另三条边都不会再a与b之间,并且b对应边一定最a对应边的      后面(注意是循环的边)那么就是说,我们可以使用类似双指针方式维护,但是…