codeforces - 766C【dp】

本文提供了一种使用动态规划解决Codeforces 766C问题的方法,通过判断子串的有效性来计算最长有效子串长度及方案数量。
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <bitset>
 6 #include <vector>
 7 #include <queue>
 8 #include <stack>
 9 #include <cmath>
10 #include <list>
11 #include <set>
12 #include <map>
13 #define rep(i,a,b) for(int i = a;i <= b;++ i)
14 #define per(i,a,b) for(int i = a;i >= b;-- i)
15 #define mem(a,b) memset((a),(b),sizeof((a)))
16 #define FIN freopen("in.txt","r",stdin)
17 #define FOUT freopen("out.txt","w",stdout)
18 #define IO ios_base::sync_with_stdio(0),cin.tie(0)
19 #define mid ((l+r)>>1)
20 #define ls (id<<1)
21 #define rs ((id<<1)|1)
22 #define N 1005
23 #define INF 0x3f3f3f3f
24 #define INFF ((1LL<<62)-1)
25 using namespace std;
26 typedef long long LL;
27 typedef pair<int, int> PIR;
28 const int mod = 1e9+7;
29 
30 int n, x, lim[30], dp[N], dp1[N];
31 string s;
32 
33 bool judge(int l, int r){
34     int len = r-l;
35     rep(i, l, r){
36         if(lim[s[i-1]-'a'] <= len)    return false;
37     }
38     return true;
39 }
40 int main()
41 {IO;
42     //FIN;
43     while(cin >> n){
44         cin >> s;
45         rep(i, 0, 25)    { cin >> x; lim[i] = x; }
46 
47         mem(dp, 0);
48         mem(dp1, INF);
49         dp1[0] = 0;
50         dp[0] = 1;
51         int maxn = 0, minn = n;
52         rep(i, 1, n){
53             rep(j, 1, i){
54                 if(judge(j, i)){
55                     dp[i] = (dp[i]%mod+dp[j-1]%mod)%mod;
56                     dp1[i] = min(dp1[i], dp1[j-1]+1);
57                     if(dp[j-1])
58                         maxn = max(maxn, i-j+1);
59                 }
60             }
61         }
62         cout << dp[n] << "\n" << maxn << "\n" << dp1[n] << endl;
63     }
64     return 0;
65 }
View Code

 

posted on 2017-03-21 16:52 NWU_ACM 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/NWUACM/p/6595237.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值