当前位置: 首页 > news >正文

【题解】P10832 [COTS 2023] 传 Mapa

题目给出了明确的提示“把 \(x_i,y_i\) 看成一个整体组来考虑”,于是容易想到 Lagrange 插值插出 \(f\) 函数,根据经典结论可知插出的函数恰有 \(n\) 项,然后再编一个大于 \(\max y_i\) 的模数(例如 \(10^9+7\))在模意义下插值。此时 \(f\) 函数每一项的系数都不超过 \(2^{30}\),直接转成二进制扔到 \(s\) 串里传输即可。

而对于逆变换,直接套 Lagrange 插值板子即可。

namespace Loyalty
{inline void init() { }int x[N], y[N], a[N];char s[N];inline void dasongsong(){int n;cin >> n;for (int i = 1; i <= n; ++i)cin >> x[i] >> y[i];for (int i = 1; i <= n; ++i)for (int j = 1; j <= n; ++j){int numerator = y[j], denominator = 1;for (int k = 1; k <= n; ++k)if (k != j){numerator = numerator * (i - x[k] + mod) % mod;denominator = denominator * (x[j] - x[k] + mod) % mod;}a[i] = (a[i] + numerator * inversion(denominator) % mod) % mod;}cout << n * 30 << '\n';for (int i = 1; i <= n; ++i)for (int j = 0; j < 30; ++j)cout << (a[i] >> j & 1);cout << '\n';}inline void ruahao(){int n, q, k;cin >> n >> q >> k;scanf("%s", s + 1);for (int i = 1; i <= n; ++i){int l = i * 30 - 29, r = i * 30;a[i] = 0;for (int j = r; j >= l; --j)a[i] = a[i] << 1 | (s[j] & 1);}while (q--){int k;cin >> k;int sum = 0;for (int i = 1; i <= n; ++i){int numerator = a[i], denominator = 1;for (int j = 1; j <= n; ++j)if (j != i){numerator = numerator * (k - j + mod) % mod;denominator = denominator * (i - j + mod) % mod;}sum = (sum + numerator * inversion(denominator) % mod) % mod;}cout << sum << '\n';}}inline void main([[maybe_unused]] int _ca, [[maybe_unused]] int atc){int ty;cin >> ty;if (ty == 1)dasongsong();elseruahao();}
}
http://www.jsqmd.com/news/326967/

相关文章:

  • Agent设计模式学习(基于langchain4j实现)(9) - 人机协同
  • C++与Java性能对比
  • 为什么Python依然是初学者最好的选择?
  • 更优雅的测试:Pytest框架入门
  • 【kali显示界面太小?一步教你解决】
  • Python深度学习入门:TensorFlow 2.0/Keras实战
  • 【题解】CF946E Largest Beautiful Number
  • 自定义内存布局控制
  • 嵌入式LinuxC++开发
  • 【题解】P14224 [ICPC 2024 Kunming I] 子数组
  • 自定义操作符重载指南
  • Python游戏中的碰撞检测实现
  • 图标提取神器!一键提取软件安装包中的图标
  • 图片画质增强神器!模糊照片秒变高清
  • 代码质量卫士:使用Pylint和Flake8
  • C++中的策略模式变体
  • Python Web爬虫入门:使用Requests和BeautifulSoup
  • 工具、测试与部署
  • 自动化你的日常工作:一个Python脚本的诞生
  • 构建一个桌面版的天气预报应用
  • 【题解】P7315 [COCI 2018/2019 #3] Sajam
  • 使用Kivy开发跨平台的移动应用
  • 分布式系统C++实现
  • Pcdmis海克斯康三坐标脱机软件2013至2021 CAD++全功能 远程包安装
  • 异常安全编程指南
  • 编译器命令选项优化
  • C++中的组合模式实战
  • C++与量子计算模拟
  • 当极限学习机遇上猛禽:用天鹰算法调参实战
  • 【题解】CF1773G Game of Questions