博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #450 (Div. 2)
阅读量:7226 次
发布时间:2019-06-29

本文共 1929 字,大约阅读时间需要 6 分钟。

分析

如果至少有一组解,则要 \(y\)\(x\) 整除,也就是说 \(a_i\) 一定是 \(x\) 的倍数,可设 \(dp[i]\) 为 和为 \(i\)\(gcd = 1\) 时的方案数,首先呢,如果不考虑 \(gcd\) 的限制,可以发现,\(dp[i]=1<<(i-1)\) ,那么我们只要减去那些 \(gcd > 1\) 的方案数,枚举因子就好了,记忆化搜索即可。

code

#include 
using namespace std;const int MOD = 1e9 + 7;long long p2(int x) { long long a = 1, k = 2; while (x) { if (x & 1) a = a * k % MOD; k = k * k % MOD; x >>= 1; } return a;}map
dp;long long dfs(int x) { if (dp.count(x)) return dp[x]; long long res = p2(x - 1); for (int i = 1; i * i <= x; i++) { if (x % i == 0) { if (i != 1) { res = (res - dfs(x / i) + MOD) % MOD; } if(i * i != x) res = (res - dfs(i) + MOD) % MOD; } } return dp[x] = res;}int main() { dp[1] = 1; int x, y, n; long long ans = 0; cin >> x >> y; if (y % x == 0) { ans = dfs(y / x); } cout << ans << endl; return 0;}

分析

\(dp[i]\) 表示从 \(i\) 开始(\(s[i...n-1]\))所能构成的不相交 \(t\) 串的最多个数,并维护最小花费 \(mn[i]\)

code

#include
using namespace std;const int N = 1e5 + 10;string s;int dp[N], mn[N], ab[N];int main() { int n, m, k = 0; cin >> n >> s >> m; for (int i = n - 1; i >= 0; i--) { if(s[i] == '?') k++; if(s[i] == '?' || s[i] == 'a') { if(s[i + 1] == 'b' || s[i + 1] == '?') ab[i] = ab[i + 2] + 2; else ab[i] = 1; } if(n - i >= m) { dp[i] = dp[i + 1]; mn[i] = mn[i + 1]; if(ab[i] >= m) { if(dp[i + m] + 1 > dp[i]) { dp[i] = dp[i + m] + 1; mn[i] = mn[i + m] + k; } else if(dp[i + m] + 1 == dp[i]) { mn[i] = min(mn[i], mn[i + m] + k); } } if(s[i + m - 1] == '?') k--; } } cout << mn[0] << endl; return 0;}

转载于:https://www.cnblogs.com/ftae/p/8325956.html

你可能感兴趣的文章
git log显示
查看>>
java中相同名字不同返回类型的方法
查看>>
Rails NameError uninitialized constant class solution
查看>>
Android 获取SDCard中某个目录下图片
查看>>
设置cookies第二天0点过期
查看>>
【转载】NIO客户端序列图
查看>>
poj_2709 贪心算法
查看>>
【程序员眼中的统计学(11)】卡方分布的应用
查看>>
文件夹工具类 - FolderUtils
查看>>
http://blog.csdn.net/huang_xw/article/details/7090173
查看>>
lua学习例子
查看>>
研究:印度气候变暖速度加剧 2040年或面临重灾
查看>>
python爬虫——爬取豆瓣TOP250电影
查看>>
C++与Rust操作裸指针的比较
查看>>
了解webpack-4.0版本(一)
查看>>
如何培养良好的编程风格
查看>>
Netty Channel源码分析
查看>>
基于 HTML5 WebGL 的 3D 机房
查看>>
Java编程——数据库两大神器:索引和锁
查看>>
springMvc学习笔记(2)
查看>>