提出 #74702321
ソースコード 拡げる
#include <bits/stdc++.h>
using ull = unsigned long long int;
using ll = long long int;
using lll = __int128;
using namespace std;
const int mod = 998244353;
int d[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
inline string sread() {
string s;
char ch = getchar();
// 跳过空白字符
while (ch == ' ' || ch == '\n' || ch == '\r') ch = getchar();
// 读取非空白字符
while (ch != ' ' && ch != '\n' && ch != '\r' && ch != EOF) {
s += ch;
ch = getchar();
}
return s;
}
ll read(){
ll k = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9')
{
if(c == '-')f = -1;
c = getchar();
}
while(c >= '0' && c <= '9')k = k * 10 + c - '0',c = getchar();
return k * f; // 别忘记标记的负数要乘进去
}
// 调用时用 n = in();
void print(ll x){
if(x < 0)putchar('-'),x = -x;
if(x < 10)putchar(x + '0');
else print(x / 10),putchar(x % 10 + '0');
}
// 直接调用 out(n) 就行了
ll ksm(ll base, ll e){
ll res = 1;
while(e){
if(e & 1){
res = res * base % mod;
}
base = base * base % mod;
e >>= 1;
}
return res;
}//ksm板子
vector<vector<ll>> matrix_mul (vector<vector<ll>>& a, vector<vector<ll>>& b) {
int l1 = a.size(), l2 = b[0].size();
vector<vector<ll>>res(l1, vector<ll>(l2, 0));
for(int i = 0; i < l1; i++){
for(int k = 0; k < a[0].size(); k++){
if(a[i][k]){
for(int j = 0; j < l2; j++){
res[i][j] = (res[i][j] + a[i][k] * b[k][j]);
}
}
}
}
return res;
}// 矩阵a * 矩阵b(矩阵乘法)
void Solve(){
// 求数组中逆序对个数等于k的子数组个数
// 注意到直接求=k不好求, 所以转化为求 (<= k) - (<= k - 1)的个数
ll n = read(), k = read();
vector<ll>p(n + 1);
for(int i = 1; i <= n; i++){
p[i] = read();
}
vector<ll>tree(n + 1, 0);
auto add = [&](int x, ll v) -> void{
for(int i = x; i <= n; i += (i & -i)){
tree[i] += v;
}
};
auto query = [&](int x) -> ll{
ll res = 0;
for(int i = x; i; i -= (i & -i)){
res += tree[i];
}
return res;
};
auto cal = [&](ll limit) -> ll{
for(int i = 0; i <= n; i++){
tree[i] = 0;
} //清空树状数组
ll p1 = 1, p2 = 1;
ll cur = 0;
ll res = 0;
while(p2 <= n){
// 先加入p2
cur += query(n) - query(p[p2]); // 找之前比自己大的个数
add(p[p2], 1);
while(cur > limit && p1 <= p2){
cur -= query(p[p1] - 1);
add(p[p1], -1);
p1++;
}
res += (p2 - p1 + 1);
p2++;
}
return res;
};
cout << (cal(k) - (k ? cal(k - 1) : 0)) << '\n';
}
signed main(){
int T = 1;
while(T--){
Solve();
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Interval Inversion Count |
| ユーザ | wmxw |
| 言語 | C++23 (GCC 15.2.0) |
| 得点 | 500 |
| コード長 | 3118 Byte |
| 結果 | AC |
| 実行時間 | 89 ms |
| メモリ | 11200 KiB |
コンパイルエラー
./Main.cpp: In function 'std::vector<std::vector<long long int> > matrix_mul(std::vector<std::vector<long long int> >&, std::vector<std::vector<long long int> >&)':
./Main.cpp:53:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
53 | for(int k = 0; k < a[0].size(); k++){
| ~~^~~~~~~~~~~~~
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3512 KiB |
| 00_sample_01.txt | AC | 1 ms | 3444 KiB |
| 00_sample_02.txt | AC | 1 ms | 3488 KiB |
| 01_random_03.txt | AC | 36 ms | 8080 KiB |
| 01_random_04.txt | AC | 34 ms | 8468 KiB |
| 01_random_05.txt | AC | 22 ms | 6200 KiB |
| 01_random_06.txt | AC | 18 ms | 5964 KiB |
| 01_random_07.txt | AC | 27 ms | 7400 KiB |
| 01_random_08.txt | AC | 18 ms | 6328 KiB |
| 01_random_09.txt | AC | 24 ms | 6464 KiB |
| 01_random_10.txt | AC | 82 ms | 10908 KiB |
| 01_random_11.txt | AC | 73 ms | 11004 KiB |
| 01_random_12.txt | AC | 84 ms | 11032 KiB |
| 01_random_13.txt | AC | 67 ms | 11192 KiB |
| 01_random_14.txt | AC | 62 ms | 11192 KiB |
| 01_random_15.txt | AC | 80 ms | 10968 KiB |
| 01_random_16.txt | AC | 85 ms | 11152 KiB |
| 01_random_17.txt | AC | 74 ms | 11192 KiB |
| 01_random_18.txt | AC | 59 ms | 10984 KiB |
| 01_random_19.txt | AC | 89 ms | 11104 KiB |
| 01_random_20.txt | AC | 55 ms | 10984 KiB |
| 01_random_21.txt | AC | 59 ms | 11036 KiB |
| 01_random_22.txt | AC | 59 ms | 11048 KiB |
| 01_random_23.txt | AC | 85 ms | 11192 KiB |
| 01_random_24.txt | AC | 22 ms | 11156 KiB |
| 01_random_25.txt | AC | 37 ms | 10964 KiB |
| 01_random_26.txt | AC | 39 ms | 11112 KiB |
| 01_random_27.txt | AC | 30 ms | 11200 KiB |
| 01_random_28.txt | AC | 35 ms | 11108 KiB |
| 01_random_29.txt | AC | 39 ms | 10960 KiB |
| 01_random_30.txt | AC | 22 ms | 10984 KiB |
| 01_random_31.txt | AC | 46 ms | 10968 KiB |
| 01_random_32.txt | AC | 47 ms | 11072 KiB |
| 01_random_33.txt | AC | 46 ms | 11036 KiB |
| 01_random_34.txt | AC | 47 ms | 10984 KiB |
| 01_random_35.txt | AC | 47 ms | 11032 KiB |
| 01_random_36.txt | AC | 1 ms | 3568 KiB |
| 01_random_37.txt | AC | 32 ms | 11108 KiB |
| 01_random_38.txt | AC | 34 ms | 11112 KiB |
| 01_random_39.txt | AC | 30 ms | 11200 KiB |
| 01_random_40.txt | AC | 36 ms | 10996 KiB |
| 01_random_41.txt | AC | 32 ms | 10968 KiB |
| 01_random_42.txt | AC | 30 ms | 11104 KiB |
| 01_random_43.txt | AC | 29 ms | 11080 KiB |
| 01_random_44.txt | AC | 33 ms | 11108 KiB |
| 01_random_45.txt | AC | 37 ms | 11080 KiB |
| 01_random_46.txt | AC | 37 ms | 10968 KiB |
| 01_random_47.txt | AC | 36 ms | 11004 KiB |
| 01_random_48.txt | AC | 35 ms | 11004 KiB |
| 01_random_49.txt | AC | 36 ms | 10972 KiB |
| 01_random_50.txt | AC | 31 ms | 9920 KiB |
| 01_random_51.txt | AC | 25 ms | 9752 KiB |
| 01_random_52.txt | AC | 29 ms | 9436 KiB |
| 01_random_53.txt | AC | 26 ms | 9824 KiB |
| 01_random_54.txt | AC | 33 ms | 10336 KiB |