mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-12-16 12:13:03 +00:00
feat: 添加P1559.cpp和P9978.cpp的初始代码实现
P1559.cpp包含一个空的主函数框架 P9978.cpp实现了一个涉及数组处理和计算的算法
This commit is contained in:
parent
5a9d1efd5d
commit
a43a4849c6
3
src/11/17/P1559.cpp
Normal file
3
src/11/17/P1559.cpp
Normal file
@ -0,0 +1,3 @@
|
||||
int main(){
|
||||
|
||||
}
|
||||
55
src/11/17/P9978.cpp
Normal file
55
src/11/17/P9978.cpp
Normal 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";
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user