题意:
给定一个长度为n的数组a[n], 并且每一个元素的值的范围为1~c;
找到一个最长的子序列并且使得这个子序列的所有奇数位的数值相等,偶数位的数值也相等,并且奇数位和偶数位的数值不相等。
思路:
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int a[N];
int n,c;
int num[N][110];
vector<int>pos[200];
int main()
{
cin>>n>>c;
memset(num,0,sizeof(num));
for(int i=1;i<=100;i++)
pos[i].push_back(0);
for(int i=1;i<=n;i++)
{
cin>>a[i];
pos[a[i]].push_back(i);
for(int j=1;j<=100;j++) num[i][j]=num[i-1][j];
num[i][a[i]]++;
}
int ans=0;
int now;
for(int i=1;i<=c;i++)
{
for(int j=1;j<=c;j++)
{
if(i!=j)
{
now=0;
for(int k=2;k<(int)pos[i].size();k++)
if(num[pos[i][k]][j]>num[pos[i][k-1]][j]