From e95cd401c420ed8729a648612203d552ca1489b6 Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Sat, 8 Nov 2025 23:09:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E5=86=99=20P11362.cpp=20?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E7=AE=97=E6=B3=95=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将原文件从 src/8/11 移动到 src/11/8 并完全重写实现 使用更简洁的算法逻辑处理输入数据并计算结果 移除冗余的幂运算函数,直接使用模运算简化计算过程 --- src/11/8/P11362.cpp | 59 +++++++++++++++++++++++++++++++ src/8/11/P11362.cpp | 84 --------------------------------------------- 2 files changed, 59 insertions(+), 84 deletions(-) create mode 100644 src/11/8/P11362.cpp delete mode 100644 src/8/11/P11362.cpp diff --git a/src/11/8/P11362.cpp b/src/11/8/P11362.cpp new file mode 100644 index 0000000..f4131ab --- /dev/null +++ b/src/11/8/P11362.cpp @@ -0,0 +1,59 @@ +#include +#include +#include +#include +#include +#include +using ll = int64_t; +#define sl static inline + +const ll maxm=1e5+7,p=1e9+7; +ll n,m,v; +struct X{ + ll c,d; + inline bool operator<(const X& o)const{ + return c s; + +sl void solve(){ + std::cin>>n>>m>>v; + for(ll i=1;i<=m;i++){ + std::cin>>x[i].c>>x[i].d; + s.insert(x[i].c); + } + std::sort(x+1,x+1+m); + for(ll i=1;i>t; + while(t--){ + solve(); + } +} \ No newline at end of file diff --git a/src/8/11/P11362.cpp b/src/8/11/P11362.cpp deleted file mode 100644 index 43aa216..0000000 --- a/src/8/11/P11362.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include - -using ll = long long; -using namespace std; -const int MOD = 1e9 + 7; - -ll p(ll b, ll e) { - ll res = 1; - b %= MOD; - while (e > 0) { - if (e % 2 == 1) res = (res * b) % MOD; - b = (b * b) % MOD; - e /= 2; - } - return res; -} - -void solve() { - ll n; - int m; - ll v; - cin >> n >> m >> v; - map mc; - for (int i = 0; i < m; ++i) { - int c, d; - cin >> c >> d; - if (mc.count(c) && mc[c] != d) { - for (int j = i + 1; j < m; ++j) cin >> c >> d; - cout << 0 << endl; - return; - } - mc[c] = d; - } - if (m == 0) { - if (n == 1) { - cout << 1 << endl; - } else { - cout << p(v, (n - 1) * 2) << endl; - } - return; - } - ll tot = 1; - ll vmod = v % MOD; - int lp = 0; - for (auto const& [idx, val] : mc) { - ll len = idx - lp; - if (len > 0) { - ll s; - if (lp == 0) { - s = p(vmod, (len - 1) * 2); - } else { - ll v2len = p(vmod, len * 2); - ll vlen = p(vmod, len); - ll vlenm1 = p(vmod, len - 1); - s = (v2len - vlen + vlenm1 + MOD) % MOD; - } - tot = (tot * s) % MOD; - } - lp = idx; - } - - - if (lp < n) { - ll len = n - lp; - - - ll s = p(vmod, len * 2); - tot = (tot * s) % MOD; - } - - cout << tot << endl; -} - -int main() { - ios_base::sync_with_stdio(false); - cin.tie(NULL); - cout.tie(nullptr); - int t; - cin >> t; - while (t--) { - solve(); - } -}