Asia Yokohama Regional Contest 2018 B题 - Arithmetic Progressions(dp)

https://codeforces.com/gym/102082

题意

给定一些数,可以重新排序,求其中最长的等差数列的长度

思路

d[i][j]表示以a[i]和a[j]为开头的等差数列的最大长度,具体见代码

 1 #define bug(x,y) cout<<"i="<<x<<": "<<y<<endl
 2 #define IO std::ios::sync_with_stdio(0);
 3 #include <bits/stdc++.h>
 4 #define itor ::iterator
 5 using namespace  std;
 6 typedef long long ll;
 7 typedef pair<ll,ll>P;
 8 #define pb push_back
 9 #define se second
10 #define fi first
11 #define rs o*2+1
12 #define ls o*2
13 const int N=5e3+5;
14 int n;
15 int a[N],d[N][N];
16 int main(){
17     scanf("%d",&n);
18     for(int i=1;i<=n;i++){
19         scanf("%d",&a[i]);
20     }
21     sort(a+1,a+1+n);
22     for(int i=1;i<=n;i++){
23         for(int j=1;j<=n;j++)d[i][j]=2;
24     }
25     int ans=2;
26     for(int i=n-1;i>=2;i--){
27         int j=i-1,k=i+1;
28         while(j>=1&&k<=n){
29             if(a[j]+a[k]==2*a[i]){
30                 d[j][i]=d[i][k]+1;
31                 ans=max(ans,d[j][i]);
32                 j--;k++;
33             }
34             else if(a[j]+a[k]<2*a[i]){
35                 k++;
36             }
37             else if(a[j]+a[k]>2*a[i]){
38                 j--;
39             }
40         }
41     }
42     printf("%d\n",ans);
43 }

原文地址:https://www.cnblogs.com/ccsu-kid/p/10599443.html

时间: 2024-08-01 11:17:10

Asia Yokohama Regional Contest 2018 B题 - Arithmetic Progressions(dp)的相关文章

Asia Yokohama Regional Contest 2018 G题 What Goes Up Must Come Down(树状数组求逆序对)

https://codeforces.com/gym/102082 题意: 给一个数组大小不超过1e5,每个数的值也是1e5以内,可以交换相邻两个数,求保证它呈现一个非递减再非递增的趋势的最小交换次数. 题解: 对每个数来说,只有两种情况,要么参与非递减部分要么参与非递增部分,对于前者它要移的次数就是在它之前与他构成的逆序对数,对于后者它要移的次数就是在它之后与他构成的逆序对数,那我们取较小的加入到答案就做完了. #define bug(x,y) cout<<"i="<

2018-2019, ICPC, Asia Yokohama Regional Contest 2018 (Gym - 102082)

2018-2019, ICPC, Asia Yokohama Regional Contest 2018 A - Digits Are Not Just Characters 签到. B - Arithmetic Progressions 题意:从给定的集合中选出最多的数构成等差数列. 题解:数字排序后,设\(dp[i][j]\)表示等差数列最后一个数字为\(a[i]\),倒数第二个数字为\(a[j]\)的最大个数.然后对于每一位枚举 \(i\),\(lower\_bound()\)找有无合法的

【Asia Yokohama Regional Contest 2018】Arithmetic Progressions

题目大意:给定 N(1<N<=5000) 个不同元素组成的集合,求从中选出若干数字组成的等差数列最长是多少. 题解:直接暴力有 \(O(n^3)\) 的算法,即:枚举等差数列的前两个值,再暴力枚举后面的值进行匹配即可,不过这样做直接去世.. 考虑 \(dp[i][j]\) 表示以第 i 个数为数列倒数第二位,第 j 个数为等差数列中的最后一位的最长序列的长度,则:\(dp[i][j]=max\{dp[l][i]+1,a[i]-a[l]=a[j]-a[i]\&\&0<l&l

The 43rd ACM International Collegiate Programming Contest Asia Shenyang Regional Contest

The 43rd ACM International Collegiate Programming Contest Asia Shenyang Regional Contest 原文地址:https://www.cnblogs.com/Accpted/p/11298233.html

2018-2019 ACM-ICPC, Asia Shenyang Regional Contest(补题)

A题 - Sockpuppets 未补 B题 - Sequences Generator 未补 C题 - Insertion Sort 签到题之一,排列计数. 题意:给你排列的长度$n$,要求你求出排列的个数,满足对其前k项排序后其最长上升子序列至少为$n-1$. 解决:当最长上升子序列为$n$时答案明显时$k!$,为$n-1$时,相当于将$n$长的有序序列中某一个位置的数插到另一个位置去,但因为会对前$k$个排序,所以在挪动时要保证前$k$个有序即可.接下来你可以暴力求出这个值,也可以手推,这

2018 ICPC Asia Jakarta Regional Contest

题目传送门 题号 A B C D E F G H I J K L 状态 Ο . . Ο . . . . Ο . . Ο Ο:当场 Ø:已补 .  :  待补 A. Edit Distance Thinking:kk pai爷 Code:kk 不能直接反转,比如"010101",直接反转后就变成"101010",右移一位,然后加个0就可以了. 所以要先统计01的数量,如果0大于1,就全变成1,1大于0,就全变成0(从数量上的改变就大于s/2了),相等的话,就看首位是0

The 2018 ACM-ICPC Asia Beijing Regional Contest

训练时间:2019-03-31 本场阿渠连出A和D,成功带我们晋级. I题我坚定的写Java,完全没往打表找规律上想.背锅. A - Jin Yong’s Wukong Ranking List (HihoCoder - 1870) 给你n对拓扑关系,找出第一个不符合之前的拓扑关系的拓扑对. 建图,每加入一对拓扑对 x -> y,看看从 y 是否能跑到 x 即可. #include <bits/stdc++.h> #define FOPI freopen("in.txt&quo

(好题)2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest F Pizza Delivery

题意:给n个点m条边的有向图.每次使一条边反向,问你1到2的最短路变短,变长,还是不变. 解法:遇到这种题容易想到正向求一遍最短路d1,反向再求一遍最短路d2.纪录原图上的最短路为ans,然后分开考虑各种情况. 变短的情况:d1[y[i]]+d2[x[i]]+z[i]<ans 否则就剩下不变和变长两种情况:那么如果边(x,y)是起点到终点的最短路必须边的话,就会变长,否则会不变. 接下来的问题是  怎么求最短路的必经边? 求出原图1到2最短路图(这里要和求单源点的最短路图区别开来,单源点的最短路

The 2018 ACM-ICPC Asia Qingdao Regional Contest K XOR Clique

K XOR Clique BaoBao has a sequence a?1??,a?2??,...,a?n??. He would like to find a subset S of {1,2,...,n} such that ?i,j∈S, a?i??⊕a?j??<min(a?i??,a?j??) and ∣S∣ is maximum, where ⊕ means bitwise exclusive or. Input There are multiple test cases. The