Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33177 LYLAKIOI 【S】T3 C++ 通过 100 84 MS 14224 KB 1761 2024-10-04 16:19:38

Tests(15/15):


#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define p_b push_back #define m_p make_pair typedef long long ll; using namespace std; const int maxn=1e5+10,mod=998244353; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; }int n;ll k; void slv(){ string s;cin>>s; k=read();int x=0,y=0;vector<pi>vec;vec.p_b(m_p(0,0)); for(char ch:s){ if(ch=='L')x--; else if(ch=='R')x++; else if(ch=='U')y++; else y--;vec.p_b(m_p(x,y)); }if((!x)&&(!y)){ set<pi>st; for(auto it:vec)st.insert(it); printf("%d\n",(int)st.size());return; }if(!x){ swap(x,y); for(auto &it:vec)swap(it.p1,it.p2); } if(x<0){ x=-x;for(auto &it:vec)it.p1=-it.p1; }if(y<0){ y=-y;for(auto &it:vec)it.p2=-it.p2; }map<pair<pi,int>,set<ll> >mp; ll res=0; for(auto &it:vec)it.p1+=int(1e5),it.p2+=int(1e5); for(auto it:vec){ auto w=m_p(it.p1%x,(y?(it.p2%y):it.p2)); int val=it.p1/x-(y?it.p2/y:it.p1/x),pos=it.p1/x; auto It=mp[m_p(w,val)].lower_bound(pos); ll l=pos,r=pos+k-1; if(It!=mp[m_p(w,val)].end())r=min(r,(*It)-1); if(It!=mp[m_p(w,val)].begin())--It,l=max(l,(*It)+k); res+=max(r-l+1,0ll); mp[m_p(w,val)].insert(pos); }cout<<res; }int main(){ //freopen("loop.in","r",stdin); //freopen("loop.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }


测评信息: