QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#878545 | #9726. AUS | ucup-team5008# | RE | 0ms | 0kb | C++20 | 1.9kb | 2025-02-01 15:58:49 | 2025-02-01 15:58:54 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define rep2(i,j,k) for(ll i=ll(j);i<ll(k);i++)
#define rep(i,k) rep2(i,0,k)
#define rrep2(i,j,k) for(ll i=ll(j)-1;i>=ll(k);i--)
#define rrep(i,j) rrep2(i,j,0)
#define all(a) a.begin(),a.end()
#define SZ(a) ll(a.size())
#define eb emplace_back
using ll=long long;
using vl=vector<ll>;
using vvl=vector<vl>;
using P=pair<ll,ll>;
using vp=vector<P>;
using vvp=vector<vp>;
const ll inf=LLONG_MAX/4;
template<class T>
bool chmin(T& a,T b){return a>b?a=b,1:0;}
template<class T>
bool chmax(T& a,T b){return a<b?a=b,1:0;}
vvl G;
vl ord, low, id;
stack<int> st;
int sz;
void dfs(int u, int &k) {
ord[u] = low[u] = k++;
st.push(u);
for(ll v : G[u]) {
if(ord[v] == -1) {
dfs(v, k);
chmin(low[u], low[v]);
} else {
chmin(low[u], ord[v]);
}
}
if(low[u] == ord[u]) {
while(true) {
int now = st.top();
st.pop();
ord[now] = inf;
id[now] = sz;
if(now == u) break;
}
++sz;
}
}
ll f(ll n) {
return n*(n-1)/2;
}
void solve() {
int n, k, q;
cin >> n >> k >> q;
G.clear();
G.resize(n);
vvl a(k, vl(n));
rep(i, k) rep(j, n) {
cin >> a[i][j];
--a[i][j];
if(j) G[a[i][j-1]].eb(a[i][j]);
}
ord.assign(n, -1);
low.resize(n);
id.resize(n);
sz = 0;
int kk = 0;
rep(i, n) if(ord[i] == -1) dfs(i, kk);
rep(i, k) rep(j, n) {
a[i][j] = id[a[i][j]];
if(j) assert(a[i][j] >= a[i][j-1]);
}
vl sum(sz+1);
rep(i, n) ++sum[id[i]+1];
rep2(i, 1, sz+1) {
sum[i] = f(sum[i]) + sum[i-1];
}
ll pre = 0;
while(q--) {
ll _i, _l, _r;
cin >> _i >> _l >> _r;
ll i = (_i+pre)%k;
ll l = (_l+pre)%n;
ll r = (_r+pre)%n;
ll ans = 0;
int s = a[i][l];
int t = a[i][r];
assert(s <= t);
if(s == t) {
ans = f(r-l+1);
} else {
ans = sum[t]-sum[s+1];
ans += f(lower_bound(all(a[i]), s+1)-a[i].begin()-l);
ans += f(r-(lower_bound(all(a[i]), t)-a[i].begin())+1);
}
cout << ans << '\n';
pre = ans;
}
}
int main(){
cin.tie(0)->sync_with_stdio(0);
int t;
cin >> t;
rep(_, t) solve();
}
詳細信息
Test #1:
score: 0
Runtime Error
input:
4 abab cdcd abce abab cdcd abcd abab cdcd abc x yz def