Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
33354 aadasda 【USACO】Lifeguards(救生员)(USACO 2018) C++ 解答错误 0 MS 304 KB 2477 2023-12-24 21:51:34

Tests(1/10):


#include<bits/stdc++.h> #define fi first #define se second #define min amin #define max amax #define pb push_back #define pq priority_queue #define vt vector #define lb(x) (x&(-x)) #define int long long std::mt19937 rnd(233); using namespace std; using ll=long long; using node=array<ll,5>; //inline int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+(c^'0');c=getchar();}return x*f;} //inline void write(int x){if (x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');} template<typename T=int>T read(){T x;cin>>x;return x;} template<typename U,typename V>U min(U x,V y){return x<y?x:y;} template<typename U,typename V>U max(U x,V y){return x>y?x:y;} template<typename U,typename...V>U min(U x,V...y){return min(x,min(y...));} template<typename U,typename...V>U max(U x,V...y){return max(x,max(y...));} template<typename U,typename V>bool cmin(U &x,V y){return x>y?x=y,true:false;} template<typename U,typename V>bool cmax(U &x,V y){return x<y?x=y,true:false;} constexpr int mod=10; inline int qpow(int a,int b=mod-2){int res=1;while(b){if(b&1)res=1ll*res*a%mod;a=1ll*a*a%mod;b>>=1;}return res;} constexpr int N=2e5+5,M=26,K=210; constexpr double eps=1e-6; constexpr int inf=1e9; array<int, 2> a[N]; int n,ans=0,f[N<<4],lc[N<<4],rc[N<<4],lz[N<<4],id,rt; void ins(int &p,int l,int r,int l1,int r1){ if(!p)p=++id; if(lz[p]==1){ lz[p]=2; f[p]=0; return ; } if(l1<=l&&r<=r1&&!f[p]){ lz[p]=1; f[p]=r-l+1; return ; } int mid=l+r>>1; if(l1<=mid)ins(lc[p],l,mid,l1,r1); if(mid<r1)ins(rc[p],mid+1,r,l1,r1); f[p]=f[lc[p]]+f[rc[p]]; } int query(int p,int l,int r,int l1,int r1){ if(l1<=l&&r<=r1)return f[p]; int mid=l+r>>1,res=0; if(l1<=mid)res+=query(lc[p],l,mid,l1,r1); if(mid<r1)res+=query(rc[p],mid+1,r,l1,r1); return res; } void solve(){ cin>>n; int l=0,r=-1; for(int i=1;i<=n;++i){ cin>>a[i][0]>>a[i][1],a[i][1]-=1; ins(rt,0,inf,a[i][0],a[i][1]); } sort(a+1,a+1+n); for(int i=1;i<=n;++i){ if(a[i][0]>r)ans+=r-l+1,l=a[i][0],r=a[i][1]; r=max(r,a[i][1]); } ans+=r-l+1; int res=inf; for(int i=1;i<=n;++i)res=min(res,query(1,0,inf,a[i][0],a[i][1])); cout<<ans-res<<'\n'; } signed main(){ // freopen("trip.in","r",stdin); // freopen("trip.out","w",stdout); cin.sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); solve(); // for(int T=read();T--;)solve(); return 0; }


测评信息: