QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#427436#8780. Training, Round 2ucup-team112#WA 263ms102356kbC++2012.4kb2024-06-01 13:18:352024-06-01 13:18:35

Judging History

你现在查看的是最新测评结果

  • [2024-06-01 13:18:35]
  • 评测
  • 测评结果:WA
  • 用时:263ms
  • 内存:102356kb
  • [2024-06-01 13:18:35]
  • 提交

answer


//#define _GLIBCXX_DEBUG

//#pragma GCC target("avx2")
//#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")

#include<bits/stdc++.h>
using namespace std;


#ifdef LOCAL
#include <debug_print.hpp>
#define OUT(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__)
#else
#define OUT(...) (static_cast<void>(0))
#endif

#define endl '\n'
#define lfs cout<<fixed<<setprecision(15)
#define ALL(a)  (a).begin(),(a).end()
#define ALLR(a)  (a).rbegin(),(a).rend()
#define UNIQUE(a) (a).erase(unique((a).begin(),(a).end()),(a).end())
#define spa << " " <<
#define fi first
#define se second
#define MP make_pair
#define MT make_tuple
#define PB push_back
#define EB emplace_back
#define rep(i,n,m) for(ll i = (n); i < (ll)(m); i++)
#define rrep(i,n,m) for(ll i = (ll)(m) - 1; i >= (ll)(n); i--)

namespace template_tute{
  using ll = long long;
  using ld = long double;
  const ll MOD1 = 1e9+7;
  const ll MOD9 = 998244353;
  const ll INF = 1e18;
  using P = pair<ll, ll>;
  template<typename T> using PQ = priority_queue<T>;
  template<typename T> using QP = priority_queue<T,vector<T>,greater<T>>;
  template<typename T1, typename T2>bool chmin(T1 &a,T2 b){if(a>b){a=b;return true;}else return false;}
  template<typename T1, typename T2>bool chmax(T1 &a,T2 b){if(a<b){a=b;return true;}else return false;}
  ll median(ll a,ll b, ll c){return a+b+c-max<ll>({a,b,c})-min<ll>({a,b,c});}
  void ans1(bool x){if(x) cout<<"Yes"<<endl;else cout<<"No"<<endl;}
  void ans2(bool x){if(x) cout<<"YES"<<endl;else cout<<"NO"<<endl;}
  void ans3(bool x){if(x) cout<<"Yay!"<<endl;else cout<<":("<<endl;}
  template<typename T1,typename T2>void ans(bool x,T1 y,T2 z){if(x)cout<<y<<endl;else cout<<z<<endl;}  
  template<typename T1,typename T2,typename T3>void anss(T1 x,T2 y,T3 z){ans(x!=y,x,z);};  
  template<typename T>void debug(const T &v,ll h,ll w,string sv=" "){for(ll i=0;i<h;i++){cout<<v[i][0];for(ll j=1;j<w;j++)cout<<sv<<v[i][j];cout<<endl;}};
  template<typename T>void debug(const T &v,ll n,string sv=" "){if(n!=0)cout<<v[0];for(ll i=1;i<n;i++)cout<<sv<<v[i];cout<<endl;};
  template<typename T>void debug(const vector<T>&v){debug(v,v.size());}
  template<typename T>void debug(const vector<vector<T>>&v){for(auto &vv:v)debug(vv,vv.size());}
  template<typename T>void debug(stack<T> st){while(!st.empty()){cout<<st.top()<<" ";st.pop();}cout<<endl;}
  template<typename T>void debug(queue<T> st){while(!st.empty()){cout<<st.front()<<" ";st.pop();}cout<<endl;}
  template<typename T>void debug(deque<T> st){while(!st.empty()){cout<<st.front()<<" ";st.pop_front();}cout<<endl;}
  template<typename T>void debug(PQ<T> st){while(!st.empty()){cout<<st.top()<<" ";st.pop();}cout<<endl;}
  template<typename T>void debug(QP<T> st){while(!st.empty()){cout<<st.top()<<" ";st.pop();}cout<<endl;}
  template<typename T>void debug(const set<T>&v){for(auto z:v)cout<<z<<" ";cout<<endl;}
  template<typename T>void debug(const multiset<T>&v){for(auto z:v)cout<<z<<" ";cout<<endl;}
  template<typename T,size_t size>void debug(const array<T, size> &a){for(auto z:a)cout<<z<<" ";cout<<endl;}
  template<typename T,typename V>void debug(const map<T,V>&v){for(auto z:v)cout<<"["<<z.first<<"]="<<z.second<<",";cout<<endl;}
  template<typename T>vector<vector<T>>vec(ll x, ll y, T w){vector<vector<T>>v(x,vector<T>(y,w));return v;}
  vector<ll>dx={1,-1,0,0,1,1,-1,-1};vector<ll>dy={0,0,1,-1,1,-1,1,-1};
  template<typename T>vector<T> make_v(size_t a,T b){return vector<T>(a,b);}
  template<typename... Ts>auto make_v(size_t a,Ts... ts){return vector<decltype(make_v(ts...))>(a,make_v(ts...));}
  template<typename T1, typename T2>ostream &operator<<(ostream &os, const pair<T1, T2>&p){return os << "(" << p.first << "," << p.second << ")";}
  template<typename T>ostream &operator<<(ostream &os, const vector<T> &v){os<<"[";for(auto &z:v)os << z << ",";os<<"]"; return os;}
  template<typename T>void rearrange(vector<int>&ord, vector<T>&v){
    auto tmp = v;
    for(int i=0;i<tmp.size();i++)v[i] = tmp[ord[i]];
  }
  template<typename Head, typename... Tail>void rearrange(vector<int>&ord,Head&& head, Tail&&... tail){
    rearrange(ord, head);
    rearrange(ord, tail...);
  }
  template<typename T> vector<int> ascend(const vector<T>&v){
    vector<int>ord(v.size());iota(ord.begin(),ord.end(),0);
    sort(ord.begin(),ord.end(),[&](int i,int j){return make_pair(v[i],i)<make_pair(v[j],j);});
    return ord;
  }
  template<typename T> vector<int> descend(const vector<T>&v){
    vector<int>ord(v.size());iota(ord.begin(),ord.end(),0);
    sort(ord.begin(),ord.end(),[&](int i,int j){return make_pair(v[i],-i)>make_pair(v[j],-j);});
    return ord;
  }
  template<typename T> vector<T> inv_perm(const vector<T>&ord){
    vector<T>inv(ord.size());
    for(int i=0;i<ord.size();i++)inv[ord[i]] = i;
    return inv;
  }
  ll FLOOR(ll n,ll div){assert(div>0);return n>=0?n/div:(n-div+1)/div;}
  ll CEIL(ll n,ll div){assert(div>0);return n>=0?(n+div-1)/div:n/div;}
  ll digitsum(ll n){ll ret=0;while(n){ret+=n%10;n/=10;}return ret;}
  ll modulo(ll n,ll d){return (n%d+d)%d;};
  template<typename T>T min(const vector<T>&v){return *min_element(v.begin(),v.end());}
  template<typename T>T max(const vector<T>&v){return *max_element(v.begin(),v.end());}
  template<typename T>T acc(const vector<T>&v){return accumulate(v.begin(),v.end(),T(0));};
  template<typename T>T reverse(const T &v){return T(v.rbegin(),v.rend());};
  //mt19937 mt(chrono::steady_clock::now().time_since_epoch().count());
  int popcount(ll x){return __builtin_popcountll(x);};
  int poplow(ll x){return __builtin_ctzll(x);};
  int pophigh(ll x){return 63 - __builtin_clzll(x);};
  template<typename T>T poll(queue<T> &q){auto ret=q.front();q.pop();return ret;};
  template<typename T>T poll(priority_queue<T> &q){auto ret=q.top();q.pop();return ret;};
  template<typename T>T poll(QP<T> &q){auto ret=q.top();q.pop();return ret;};
  template<typename T>T poll(stack<T> &s){auto ret=s.top();s.pop();return ret;};
  ll MULT(ll x,ll y){if(LLONG_MAX/x<=y)return LLONG_MAX;return x*y;}
  ll POW2(ll x, ll k){ll ret=1,mul=x;while(k){if(mul==LLONG_MAX)return LLONG_MAX;if(k&1)ret=MULT(ret,mul);mul=MULT(mul,mul);k>>=1;}return ret;}
  ll POW(ll x, ll k){ll ret=1;for(int i=0;i<k;i++){if(LLONG_MAX/x<=ret)return LLONG_MAX;ret*=x;}return ret;}
  std::ostream &operator<<(std::ostream &dest, __int128_t value) {
    std::ostream::sentry s(dest);
    if (s) {
      __uint128_t tmp = value < 0 ? -value : value;
      char buffer[128];
      char *d = std::end(buffer);
      do {
        --d;
        *d = "0123456789"[tmp % 10];
        tmp /= 10;
      } while (tmp != 0);
      if (value < 0) {
        --d;
        *d = '-';
      }
      int len = std::end(buffer) - d;
      if (dest.rdbuf()->sputn(d, len) != len) {
        dest.setstate(std::ios_base::badbit);
      }
    }
    return dest;
  }
  namespace converter{
    int dict[500];
    const string lower="abcdefghijklmnopqrstuvwxyz";
    const string upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    const string digit="0123456789";
    const string digit1="123456789";
    void regi_str(const string &t){
      for(int i=0;i<t.size();i++){
        dict[t[i]]=i;
      }
    }
    void regi_int(const string &t){
      for(int i=0;i<t.size();i++){
        dict[i]=t[i];
      }
    }
    vector<int>to_int(const string &s,const string &t){
      regi_str(t);
      vector<int>ret(s.size());
      for(int i=0;i<s.size();i++){
        ret[i]=dict[s[i]];
      }
      return ret;
    }
    vector<int>to_int(const string &s){
      auto t=s;
      sort(t.begin(),t.end());
      t.erase(unique(t.begin(),t.end()),t.end());
      return to_int(s,t);
    }
    
    vector<vector<int>>to_int(const vector<string>&s,const string &t){
      regi_str(t);
      vector<vector<int>>ret(s.size(),vector<int>(s[0].size()));
      for(int i=0;i<s.size();i++){
        for(int j=0;j<s[0].size();j++){
          ret[i][j]=dict[s[i][j]];
        }
      }
      return ret;
    }
    vector<vector<int>>to_int(const vector<string>&s){
      string t;
      for(int i=0;i<s.size();i++){
        t+=s[i];
      }
      sort(t.begin(),t.end());t.erase(unique(t.begin(),t.end()),t.end());
      return to_int(s,t);
    }
    string to_str(const vector<int>&s,const string &t){
      regi_int(t);
      string ret;
      for(auto z:s)ret+=dict[z];
      return ret;
    }
    vector<string> to_str(const vector<vector<int>>&s,const string &t){
      regi_int(t);
      vector<string>ret(s.size());
      for(int i=0;i<s.size();i++){
        for(auto z:s[i])ret[i]+=dict[z];
      }
      return ret;
    }
  }
  template< typename T = int >
  struct edge {
    int to;
    T cost;
    int id;
    edge():to(-1),id(-1){};
    edge(int to, T cost = 1, int id = -1):to(to), cost(cost), id(id){}
    operator int() const { return to; }
  };

  template<typename T>
  using Graph = vector<vector<edge<T>>>;
  template<typename T>
  Graph<T>revgraph(const Graph<T> &g){
    Graph<T>ret(g.size());
    for(int i=0;i<g.size();i++){
      for(auto e:g[i]){
        int to = e.to;
        e.to = i;
        ret[to].push_back(e);
      }
    }
    return ret;
  }
  template<typename T>
  Graph<T> readGraph(int n,int m,int indexed=1,bool directed=false,bool weighted=false){
    Graph<T> ret(n);
    for(int es = 0; es < m; es++){
      int u,v;
      T w=1;
      cin>>u>>v;u-=indexed,v-=indexed;
      if(weighted)cin>>w;
      ret[u].emplace_back(v,w,es);
      if(!directed)ret[v].emplace_back(u,w,es);
    }
    return ret;
  }
  template<typename T>
  Graph<T> readParent(int n,int indexed=1,bool directed=true){
    Graph<T>ret(n);
    for(int i=1;i<n;i++){
      int p;cin>>p;
      p-=indexed;
      ret[p].emplace_back(i);
      if(!directed)ret[i].emplace_back(p);
    }
    return ret;
  }
}
using namespace template_tute;
struct FastSet{
  using ull = unsigned long long;
  static constexpr unsigned int B = 64;
  int n,lg;
  vector<vector<ull>> seg;
  FastSet(int _n) : n(_n){
    do{
      seg.push_back(vector<ull>((_n + B - 1) / B));
      _n = (_n + B - 1) / B;
    } while (_n > 1);
    lg = seg.size();
  }
  bool operator[](int i) const {
    return (seg[0][i / B] >> (i % B) & 1) != 0;
  }
  void set(int i)
  {
    for(int h = 0; h < lg; h++){
      seg[h][i / B] |= 1ULL << (i % B);
      i /= B;
    }
  }
  void reset(int i)
  {
    for(int h = 0; h < lg; h++){
      seg[h][i / B] &= ~(1ULL << (i % B));
      if (seg[h][i / B])
        break;
      i /= B;
    }
  }
  // x以上最小の要素
  int next(int i){
    for(int h = 0;h < lg; h++){
      if (i / B == seg[h].size())
        break;
      ull d = seg[h][i / B] >> (i % B);
      if (!d){
        i = i / B + 1;
        continue;
      }
      // find
      i += __builtin_ctzll(d);
      for (int g = h - 1;g >= 0;g--){
        i *= B;
        i += __builtin_ctzll(seg[g][i / B]);
      }
      return i;
    }
    return n;
  }
  // x未満最大の要素
  int prev(int i){
    i--;
    for (int h = 0;h < lg; h++){
      if (i == -1)
        break;
      ull d = seg[h][i / B] << (63 - i % 64);
      if (!d){
        i = i / B -1;
        continue;
      }
      // find
      i += (63 - __builtin_clzll(d)) - (B - 1);
      for(int g = h - 1;g >= 0;g--){
        i *= B;
        i += (63 - __builtin_clzll(seg[g][i / B]));
      }
      return i;
    }
    return -1;
  }
};
void solve(){
	ll res=0,buf=0;
  bool judge = true;

  int n,x,y;cin>>n>>x>>y;
  vector<int>lx(n),rx(n),ly(n),ry(n);
  rep(i,0,n){
    cin>>lx[i]>>rx[i]>>ly[i]>>ry[i];
    lx[i]-=x;
    rx[i]-=x;
    ly[i]-=y;
    ry[i]-=y;
  }
  auto dp=vec(n+1,n+1,n+1);
  dp[0][0]=0;
  vector<vector<int>>gl(n),gr(n);
  rep(i,0,n){
    if(ly[i]<n){
      gl[max(0,ly[i])].PB(i);
      gr[clamp(ry[i],0,n-1)].PB(i);
    }
  }
  FastSet fs(n+2);
  fs.set(n);
  rep(i,0,n)rep(j,0,n){
    for(auto z:gl[j]){
      if(lx[z]<=i&&i<=rx[z]){
        fs.set(z);
      }
    }
    int nxt=fs.next(dp[i][j])+1;
    chmin(dp[i+1][j],nxt);
    chmin(dp[i][j+1],nxt);
    for(auto z:gr[j]){
      if(lx[z]<=i&&i<=rx[z]){
        fs.reset(z);
      }
    }
  }
  ll ret=0;
  rep(i,0,n+1)rep(j,0,n+1){
    if(dp[i][j]<=n){
      chmax(ret,i+j);
    }
  }
  cout<<ret<<endl;
}

int main(){
  cin.tie(nullptr);
  ios_base::sync_with_stdio(false);
  ll res=0,buf=0;
  bool judge = true;
  int T = 1;
  //cin>>T;
  while(T--){
    solve();
  }
  return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3580kb

input:

3 0 0
0 1 0 1
1 1 0 1
1 1 1 1

output:

3

result:

ok single line: '3'

Test #2:

score: 0
Accepted
time: 263ms
memory: 101992kb

input:

5000 801577551 932138594
801577551 801577551 932138594 932138594
801577552 801577552 932138594 932138594
801577552 801577552 932138595 932138595
801577552 801577552 932138596 932138596
801577553 801577553 932138596 932138596
801577553 801577553 932138597 932138597
801577553 801577553 932138598 93213...

output:

5000

result:

ok single line: '5000'

Test #3:

score: 0
Accepted
time: 262ms
memory: 101944kb

input:

5000 932138594 801577551
932138594 932138594 801577551 801577551
932138594 932138594 801577552 801577552
932138595 932138595 801577552 801577552
932138596 932138596 801577552 801577552
932138596 932138596 801577553 801577553
932138597 932138597 801577553 801577553
932138598 932138598 801577553 80157...

output:

5000

result:

ok single line: '5000'

Test #4:

score: 0
Accepted
time: 235ms
memory: 102356kb

input:

5000 76836128 716580777
76836128 76836128 716580777 716580777
76836129 76836129 716580777 716580777
76836130 76836130 716580777 716580777
76836131 76836131 716580777 716580777
76836131 76836131 716580778 716580778
76836131 76836131 716580779 716580779
76836131 76836131 716580780 716580780
76836128 7...

output:

4994

result:

ok single line: '4994'

Test #5:

score: 0
Accepted
time: 192ms
memory: 101548kb

input:

5000 716580777 76836128
716580777 716580777 76836128 76836128
716580777 716580777 76836129 76836129
716580777 716580777 76836130 76836130
716580777 716580777 76836131 76836131
716580778 716580778 76836131 76836131
716580779 716580779 76836131 76836131
716580780 716580780 76836131 76836131
716580778 ...

output:

4994

result:

ok single line: '4994'

Test #6:

score: 0
Accepted
time: 215ms
memory: 101536kb

input:

5000 774827789 700294316
774827790 774827791 700294315 700294317
774827789 774827790 700294317 700294318
774827789 774827790 700294316 700294316
774827787 774827787 700294315 700294316
774827789 774827791 700294315 700294318
774827787 774827789 700294317 700294318
774827787 774827788 700294314 70029...

output:

5

result:

ok single line: '5'

Test #7:

score: 0
Accepted
time: 214ms
memory: 101700kb

input:

5000 700294316 774827789
700294315 700294317 774827790 774827791
700294317 700294318 774827789 774827790
700294316 700294316 774827789 774827790
700294315 700294316 774827787 774827787
700294315 700294318 774827789 774827791
700294317 700294318 774827787 774827789
700294314 700294318 774827787 77482...

output:

5

result:

ok single line: '5'

Test #8:

score: 0
Accepted
time: 203ms
memory: 101560kb

input:

5000 256309650 340081224
256309647 256309649 340081224 340081227
256309645 256309650 340081226 340081229
256309652 256309652 340081219 340081220
256309645 256309655 340081222 340081226
256309646 256309648 340081221 340081225
256309651 256309654 340081219 340081221
256309651 256309653 340081219 34008...

output:

11

result:

ok single line: '11'

Test #9:

score: 0
Accepted
time: 199ms
memory: 101704kb

input:

5000 340081224 256309650
340081224 340081227 256309647 256309649
340081226 340081229 256309645 256309650
340081219 340081220 256309652 256309652
340081222 340081226 256309645 256309655
340081221 340081225 256309646 256309648
340081219 340081221 256309651 256309654
340081219 340081226 256309651 25630...

output:

11

result:

ok single line: '11'

Test #10:

score: 0
Accepted
time: 192ms
memory: 101868kb

input:

5000 490966735 218892297
490966732 490966733 218892303 218892305
490966741 490966741 218892298 218892301
490966733 490966735 218892291 218892297
490966729 490966734 218892296 218892301
490966742 490966745 218892287 218892303
490966726 490966738 218892301 218892305
490966726 490966730 218892292 21889...

output:

21

result:

ok single line: '21'

Test #11:

score: 0
Accepted
time: 188ms
memory: 101884kb

input:

5000 218892297 490966735
218892303 218892305 490966732 490966733
218892298 218892301 490966741 490966741
218892291 218892297 490966733 490966735
218892296 218892301 490966729 490966734
218892287 218892303 490966742 490966745
218892301 218892305 490966726 490966738
218892292 218892300 490966726 49096...

output:

21

result:

ok single line: '21'

Test #12:

score: 0
Accepted
time: 211ms
memory: 101876kb

input:

5000 619930859 159808007
619930853 619930854 159808007 159808017
619930840 619930856 159808013 159808025
619930848 619930864 159807995 159808009
619930844 619930847 159808008 159808022
619930848 619930856 159807995 159808001
619930850 619930852 159808020 159808022
619930853 619930871 159807992 15980...

output:

41

result:

ok single line: '41'

Test #13:

score: 0
Accepted
time: 207ms
memory: 101908kb

input:

5000 159808007 619930859
159808007 159808017 619930853 619930854
159808013 159808025 619930840 619930856
159807995 159808009 619930848 619930864
159808008 159808022 619930844 619930847
159807995 159808001 619930848 619930856
159808020 159808022 619930850 619930852
159807992 159808024 619930853 61993...

output:

41

result:

ok single line: '41'

Test #14:

score: 0
Accepted
time: 197ms
memory: 101908kb

input:

5000 974187020 583788009
974186973 974187017 583788001 583788028
974187035 974187052 583788011 583788027
974187016 974187037 583787973 583787981
974187036 974187046 583788012 583788028
974187046 974187066 583788042 583788056
974186994 974187016 583788013 583788044
974186986 974186989 583787969 58378...

output:

100

result:

ok single line: '100'

Test #15:

score: 0
Accepted
time: 205ms
memory: 101904kb

input:

5000 583788009 974187020
583788001 583788028 974186973 974187017
583788011 583788027 974187035 974187052
583787973 583787981 974187016 974187037
583788012 583788028 974187036 974187046
583788042 583788056 974187046 974187066
583788013 583788044 974186994 974187016
583787969 583787994 974186986 97418...

output:

100

result:

ok single line: '100'

Test #16:

score: 0
Accepted
time: 193ms
memory: 101944kb

input:

5000 684153868 455686026
684153781 684153927 455685991 455686049
684153899 684153921 455686036 455686037
684153784 684153959 455685984 455686049
684153967 684153968 455685927 455686014
684153795 684153963 455685926 455686026
684153787 684153846 455686084 455686105
684153817 684153870 455685928 45568...

output:

195

result:

ok single line: '195'

Test #17:

score: 0
Accepted
time: 210ms
memory: 102072kb

input:

5000 455686026 684153868
455685991 455686049 684153781 684153927
455686036 455686037 684153899 684153921
455685984 455686049 684153784 684153959
455685927 455686014 684153967 684153968
455685926 455686026 684153795 684153963
455686084 455686105 684153787 684153846
455685928 455686002 684153817 68415...

output:

195

result:

ok single line: '195'

Test #18:

score: -100
Wrong Answer
time: 203ms
memory: 101796kb

input:

5000 999613320 323981653
999613235 999613461 323981523 323981741
999613292 999613510 323981543 323981775
999613390 999613409 323981669 323981831
999613416 999613497 323981638 323981846
999613234 999613269 323981627 323981669
999613414 999613489 323981453 323981526
999613174 999613358 323981489 32398...

output:

367

result:

wrong answer 1st lines differ - expected: '366', found: '367'