POJ 3298 Antimonotonicity (思维)

题目链接:http://poj.org/problem?id=3298

找一个最长不要求连续的子序列,如a1 > a3 < a6 > a7 ...

举个例子模拟一下差不多明白了,a[i - 1]与a[i]有依赖关系。

 1 //#pragma comment(linker, "/STACK:102400000, 102400000")
 2 #include <algorithm>
 3 #include <iostream>
 4 #include <cstdlib>
 5 #include <cstring>
 6 #include <cstdio>
 7 #include <vector>
 8 #include <cmath>
 9 #include <ctime>
10 #include <list>
11 #include <set>
12 #include <map>
13 using namespace std;
14 typedef long long LL;
15 typedef pair <int, int> P;
16 const int N = 1e5 + 5;
17 int a[N];
18
19 int main()
20 {
21     int t, n;
22     scanf("%d", &t);
23     while(t--) {
24         scanf("%d", &n);
25         for(int i = 1; i <= n; ++i) {
26             scanf("%d", a + i);
27         }
28         int Max = 1, num = a[1];
29         for(int i = 2; i <= n; ++i) {
30             if(Max % 2 && a[i] < num) {
31                 Max++;
32             } else if(Max % 2 == 0 && a[i] > num) {
33                 Max++;
34             }
35             num = a[i];
36         }
37         printf("%d\n", Max);
38     }
39     return 0;
40 }
时间: 2024-10-04 16:29:21

POJ 3298 Antimonotonicity (思维)的相关文章

poj 3298 Antimonotonicity 贪心

题意: 求一个序列的最大子序列,该子序列满足:a1>a2<a3>a4...... 分析: 贪心,从极大值起交替取这个序列中极小值.极大值. 代码: //poj 3298 //sep9 #include <iostream> using namespace std; const int maxN=30024; int a[maxN]; int main() { int cases; scanf("%d",&cases); while(cases--)

(DP) poj 3298

Antimonotonicity Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2913   Accepted: 1266 Description I have a sequence Fred of length n comprised of integers between 1 and n inclusive. The elements of Fred are pairwise distinct. I want to

POJ 1852 Ants 思维题 简单题

Ants Description An army of ants walk on a horizontal pole of length l cm, each with a constant speed of 1 cm/s. When a walking ant reaches an end of the pole, it immediatelly falls off it. When two ants meet they turn back and start walking in oppos

LA 3708 &amp;&amp; POJ 3154 Graveyard (思维)

题意:在周长为10000的圆上等距分布着n个雕塑,现在又加入m个,现在让m+n个等距分布,那就得移动一些原有的雕塑,问你移动的最少总距离是多少. 析:首先我们可以知道,至少有一个雕塑是可以不用移动的,那么我们以那修个没有移动的雕塑为原点建立坐标.现在问题就转化为把剩下的移动到离它最近的位置(这个位置是放入m个雕塑之后的位置),那么这个距离就应该是最短的. 代码如下: #include <cstdio> #include <iostream> #include <cstring

poj -1852 ants (思维题)

n只蚂蚁以每秒1cm的速度在长为Lcm的杆子上爬行,当蚂蚁爬到杆子的端点时就会掉落,由于杆子太细,两只蚂蚁相遇时,他们不能交错通过,只能各自反向爬回去,对于每只蚂蚁,我们知道它距离杆子左端的距离为x,但不知道它当前的朝向,请计算所有蚂蚁落下杆子所需的最短时间很最长时间. #include <iostream> #include <cstdio> #include <cmath> #include <vector> #include <cstring&g

POJ 1113 Wall(思维 计算几何 数学)

题意 题目链接 给出平面上n个点的坐标.你需要建一个围墙,把所有的点围在里面,且围墙距所有点的距离不小于l.求围墙的最小长度. \(n \leqslant 10^5\) Sol 首先考虑如果没有l的限制,那么显然就是凸包的长度. 现在了距离的限制,那么显然原来建在凸包上的围墙要向外移动\(l\)的距离,同时会增加一些没有围住的位置 因为多边形的外交和为360,再根据补角的性质,画一画图就知道这一块是一个半径为\(l\)的圆. 因为总答案为凸包周长 + \(2 \pi l\) #include<c

POJ 3347 (思维题 + 简单计算)

题目: 传送门 题意:有 n 个正方形,倾斜 45 度按顺序放在 x 坐标轴上,然后那些正方形要尽可能的靠近,问排放好之后,你从上往下看,不会被遮住的正方形有哪些. 思路:我们可以算出每个正方形斜放的左右端点的 x 坐标.我们可以枚举前面已经放好的正方形,然后让当前这个正方形和它靠在一起算出当前这个点的左端点的 x 坐标,然后对这些 x 取最大值就是当前这个正方形的左端点的 x 坐标,然后右端点坐标就很容易得到了.我们对输入的边长扩大 sqrt(2) 倍这样就都是整数的运算了,就没有精度误差.

POJ 2777 Count Color (线段树成段更新+二进制思维)

题目链接:http://poj.org/problem?id=2777 题意是有L个单位长的画板,T种颜色,O个操作.画板初始化为颜色1.操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位之间的颜色有几种. 很明显的线段树成段更新,但是查询却不好弄.经过提醒,发现颜色的种类最多不超过30种,所以我们用二进制的思维解决这个问题,颜色1可以用二进制的1表示,同理,颜色2用二进制的10表示,3用100,....假设有一个区间有颜色2和颜色3,那么区间的值为二进制的110(十进制为6).那我们就把

POJ 3686 The Windy&#39;s(思维+费用流好题)

The Windy's Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5362   Accepted: 2249 Description The Windy's is a world famous toy factory that owns M top-class workshop to make toys. This year the manager receives N orders for toys. The ma