XV Open Cup named after E.V. Pankratiev Stage 6, Grand Prix of Japan Problem J. Hyperrectangle
题目大意:
给出一个维矩形,第i维的范围是. 求满足 的点构成的单纯形体积。
题解:
给出了求的通用做法。答案就是一个神奇的式子
背包一下分别求出取了奇数个和偶数个的和的方案数即可。
代码:
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define N 310 5 typedef long long LL; 6 const int mod = 1e9 + 7; 7 const double EPS = 1e-12; 8 9 10 int a[N]; 11 int f[2][N * N], g[2][N * N]; 12 13 int pow_mod(int x, int p) 14 { 15 int res = 1; 16 for (; p; p >>= 1) 17 { 18 if (p & 1) res = 1LL * res * x % mod; 19 x = 1LL * x * x % mod; 20 } 21 return res; 22 } 23 24 int main() 25 { 26 //freopen("in.txt", "r", stdin); 27 28 int n, s; 29 cin >> n; 30 for (int i = 1; i <= n; ++i) 31 cin >> a[i]; 32 cin >> s; 33 34 int o = 0; 35 f[0][0] = 1; 36 for (int i = 1; i <= n; ++i) 37 { 38 o ^= 1; 39 memcpy(g[o], g[o ^ 1], sizeof(g[o])); 40 memcpy(f[o], f[o ^ 1], sizeof(f[o])); 41 for (int j = s; j >= a[i]; --j) 42 { 43 f[o][j] += g[o ^ 1][j - a[i]]; 44 if (f[o][j] >= mod) f[o][j] -= mod; 45 46 g[o][j] += f[o ^ 1][j - a[i]]; 47 if (g[o][j] >= mod) g[o][j] -= mod; 48 } 49 } 50 51 int ans = 0; 52 for (int i = 0; i <= s; ++i) 53 { 54 ans += 1LL * pow_mod(s - i, n) * f[o][i] % mod; 55 ans -= 1LL * pow_mod(s - i, n) * g[o][i] % mod; 56 if (ans >= mod) ans -= mod; 57 if (ans < 0) ans += mod; 58 } 59 printf("%d\n", ans); 60 return 0; 61 }
Every day is meaningful, keeping learning!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2014-08-18 MM 不哭 (tyvj 1097)
2014-08-18 常州培训 day7 解题报告