feat: 添加P9980题解实现

实现P9980题目的解法,包括输入处理和矩阵运算逻辑。使用动态规划思想计算相邻节点关系,最终输出结果。
This commit is contained in:
Zengtudor 2025-09-30 19:32:24 +08:00
parent 9eba3f859a
commit c0d1a2f156

39
src/9/29/P9980.cpp Normal file
View File

@ -0,0 +1,39 @@
#include <cstdint>
#include <cstdio>
#include <iostream>
#include <istream>
using ll = int64_t;
const ll maxn = 750+5;
ll n;
bool b[maxn][maxn],z[maxn][maxn];
char tmp;
ll ans;
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin>>n;
for(ll i=1;i<n;i++){
for(ll j=i+1;j<=n;j++){
std::cin>>tmp;
b[i][j]=tmp-'0';
}
}
for(ll i=1;i<n;i++){
ans+=b[i][i+1];
z[i][i+1]=b[i][i+1];
}
for(ll i=1;i<=n-2;i++){
for(ll j=i+2;j<=n;j++){
bool zn=false;
for(ll k=i+1;k<j;k++){
zn^=z[i][k];
z[i][j]=zn^z[k][j];
ans+=z[i][j];
}
}
}
std::cout<<ans<<"\n";
}