제출 #1213702

#제출 시각아이디문제언어결과실행 시간메모리
1213702quan606303Regions (IOI09_regions)C++20
컴파일 에러
0 ms0 KiB
/* * @Author: quan606303 * @Date: 2025-06-06 13:36:55 * @Last Modified by: quan606303 * @Last Modified time: 2025-06-06 14:54:43 */ /*idea : merge giua online va offline : + THT1 online : voi cac thg co size < sqrt(N) thi ta se dung binarysearch de tinh voi do phuc tap la sqrt(N)*log(N) + TH2 offline voi cac thg co size >= sqrt(N) thi ta se co toi da sqrt(N) thang giong vay nen ta se tinh het tat ca cap r1,r2 voi r1 la cac thang co size >= sqrt(N) voi do phuc tap toi da la N* sqrt(N). tong do phuc tap la N*sqrt(N)+q*sqrt(N)*log(N) */ #include <bits/stdc++.h> #define int long long #define ll long long #define INTMAX INT_MAX #define INTMIN INT_MIN #define LONGMAX LLONG_MAX #define LONGMIN LLONG_MIN #define fi first #define se second #define memfull(a,b) memset(a,b,sizeof(a)); #define endl '\n' #define file(a) freopen(a".inp","r",stdin); freopen(a".out","w",stdout); using namespace std; const int MOD=1e9+7; const int maxn=2e5+7; const int maxR=25000+7; const int BLOCK=sqrt(maxn); vector<int> adj[maxn]; vector<int> child[maxR]; int n,R,q,par[maxn]; map<int,int> mp[maxn]; int tin[maxn],tout[maxn],id=0; void dfs(int u,int p) { tin[u]=++id; for (auto v:adj[u]) { if (v==p)continue; dfs(v,u); } tout[u]=id; } void dfs_cal(int u,int p,int col,int cnt) { mp[col][par[u]]+=cnt; if (par[u]==col)cnt++; for (auto v:adj[u]) { if (v==p)continue; dfs_cal(v,u,col,cnt); } if (par[u]==col)cnt--; } vector<int> child_tin[maxR]; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // file("test"); cin>>n>>R>>q; int tam; cin>>tam; par[1]=tam; child[tam].push_back(1); for (int i=2;i<=n;i++) { int s,h; cin>>s>>h; par[i]=h; child[h].push_back(i); adj[s].push_back(i); } dfs(1,0); // for (int i=1;i<=n;i++)cout<<i<<" "<<tin[i]<<endl; // cout<<endl; for (int i=1;i<=R;i++)if (child[i].size()>=BLOCK)dfs_cal(1,0,i,0); for (int i=1;i<=R;i++) { for (auto j:child[i])child_tin[i].push_back(tin[j]); sort(child_tin[i].begin(),child_tin[i].end()); } // for (int i=1;i<=R;i++) // { // cout<<i<<" : "<<endl; // for (auto j:child_tin[i])cout<<j<<" "; // cout<<endl; // } while (q--) { int r1,r2; cin>>r1>>r2; if (child[r1].size()>=BLOCK)cout<<mp[r1][r2]<<endl; else { int ans=0; for (auto i:child[r1]) { ans+=max(0,(upper_bound(child_tin[r2].begin(),child_tin[r2].end(),tout[i])-1-child_tin[r2].begin())-(lower_bound(child_tin[r2].begin(),child_tin[r2].end(),tin[i])-child_tin[r2].begin())+1); } cout<<ans<<endl; } cout<<flush; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

regions.cpp: In function 'int32_t main()':
regions.cpp:101:25: error: no matching function for call to 'max(int, __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type)'
  101 |                 ans+=max(0,(upper_bound(child_tin[r2].begin(),child_tin[r2].end(),tout[i])-1-child_tin[r2].begin())-(lower_bound(child_tin[r2].begin(),child_tin[r2].end(),tin[i])-child_tin[r2].begin())+1);
      |                      ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from regions.cpp:13:
/usr/include/c++/11/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
regions.cpp:101:25: note:   deduced conflicting types for parameter 'const _Tp' ('int' and '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type' {aka 'long int'})
  101 |                 ans+=max(0,(upper_bound(child_tin[r2].begin(),child_tin[r2].end(),tout[i])-1-child_tin[r2].begin())-(lower_bound(child_tin[r2].begin(),child_tin[r2].end(),tin[i])-child_tin[r2].begin())+1);
      |                      ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from regions.cpp:13:
/usr/include/c++/11/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
regions.cpp:101:25: note:   deduced conflicting types for parameter 'const _Tp' ('int' and '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >::difference_type' {aka 'long int'})
  101 |                 ans+=max(0,(upper_bound(child_tin[r2].begin(),child_tin[r2].end(),tout[i])-1-child_tin[r2].begin())-(lower_bound(child_tin[r2].begin(),child_tin[r2].end(),tin[i])-child_tin[r2].begin())+1);
      |                      ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from regions.cpp:13:
/usr/include/c++/11/bits/stl_algo.h:3461:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3461 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3461:5: note:   template argument deduction/substitution failed:
regions.cpp:101:25: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
  101 |                 ans+=max(0,(upper_bound(child_tin[r2].begin(),child_tin[r2].end(),tout[i])-1-child_tin[r2].begin())-(lower_bound(child_tin[r2].begin(),child_tin[r2].end(),tin[i])-child_tin[r2].begin())+1);
      |                      ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from regions.cpp:13:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   template argument deduction/substitution failed:
regions.cpp:101:25: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
  101 |                 ans+=max(0,(upper_bound(child_tin[r2].begin(),child_tin[r2].end(),tout[i])-1-child_tin[r2].begin())-(lower_bound(child_tin[r2].begin(),child_tin[r2].end(),tin[i])-child_tin[r2].begin())+1);
      |                      ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~