feat: 添加P1559.cpp和P9978.cpp的初始代码实现

P1559.cpp包含一个空的主函数框架
P9978.cpp实现了一个涉及数组处理和计算的算法
This commit is contained in:
Zengtudor 2025-11-18 16:18:01 +08:00
parent 5a9d1efd5d
commit a43a4849c6
2 changed files with 58 additions and 0 deletions

3
src/11/17/P1559.cpp Normal file
View File

@ -0,0 +1,3 @@
int main(){
}

55
src/11/17/P9978.cpp Normal file
View File

@ -0,0 +1,55 @@
#include <algorithm>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <istream>
#include <set>
#include <unordered_map>
#include <vector>
using ll = int64_t;
ll n,k,ans;
std::vector<ll> ap,bp,cnt;
std::unordered_map<ll, ll> ans1,ans2;
std::set<ll> vis;
#define printf
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin>>n>>k;
ap.resize(n+1),bp.resize(n+1),cnt.resize(n+1);
for(ll i=1;i<=k;i++){
ll tmp;
std::cin>>tmp;
ap[tmp]=i;
cnt[tmp]++;
vis.emplace(tmp);
}
for(ll i=1;i<=k;i++){
ll tmp;
std::cin>>tmp;
cnt[tmp]++;
bp[tmp]=i;
if(cnt[tmp]==2){
printf("cnt[%lld]=%lld\n",tmp,cnt[tmp]);
ll diff=ap[tmp]-bp[tmp];
if(diff<0)diff+=k;
printf("diffa=%lld\n",diff);
ans1[diff]++;
ans=std::max({ans1[diff],ans});
diff=ap[tmp]-(k-bp[tmp]+1);
if (diff<0) {
diff+=k;
}
printf("diffb=%lld\n",diff);
ans2[diff]++;
ans=std::max({ans2[diff],ans});
}
vis.emplace(tmp);
}
printf("ans=%lld, vis.size()=%lld\n",ans,vis.size());
std::cout<<n-vis.size()+ans<<"\n";
}