博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P4401 [IOI2007]Miners 矿工配餐
阅读量:5129 次
发布时间:2019-06-13

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

题意

题解

但是我太菜了,所以我是$\mathcal O({16}^2n)$ 的。

调试记录

  • 没用滚动数组
  •  for (int l=0; l<16; l++) 打成了 for (int l=0; j<16; j++) ...

代码

1 #include 
2 #pragma GCC optimize(3) 3 #define up(x, y) x = max(x, y) 4 using namespace std; 5 6 char a[100005]; 7 int dp[2][16][16]; 8 9 inline int typ(char x) {10 return x == 'M' ? 0 : (x == 'F' ? 1 : (x == 'B' ? 2 : 3));11 }12 inline int sta(int pr, int pe) {13 return pr * 4 + pe;14 }15 inline int E(int sta) {16 return sta % 4;17 }18 inline int R(int sta) {19 return sta / 4;20 }21 int kinds[3];22 inline int cnt(int sta, int x) {23 int r = R(sta), e = E(sta);24 kinds[0] = x; int p=0;25 if (r != 3) kinds[++p] = r;26 if (e != 3) kinds[++p] = e;27 sort(kinds, kinds+p+1);28 int m=1, z=kinds[0];29 for (int i=1; i<=p; i++)30 if (kinds[i] != z) ++m, z = kinds[i];31 return m;32 }33 34 int main() {35 int n; scanf("%d", &n);36 scanf("%s", a+1);37 memset(dp[0], 200, sizeof(dp[0]));38 int cur = 0, nxt = 1;39 dp[cur][sta(3, 3)][sta(3, 3)] = 0;40 for (int i=1; i<=n; i++) {41 memset(dp[nxt], 200, sizeof(dp[nxt]));42 for (int j=0; j<16; j++)43 for (int l=0; l<16; l++) {44 if (R(j) != 3 && E(j) == 3) continue;45 if (R(l) != 3 && E(l) == 3) continue;46 int x = typ(a[i]);47 up(dp[nxt][sta(E(j), x)][l], dp[cur][j][l] + cnt(j, x));48 up(dp[nxt][j][sta(E(l), x)], dp[cur][j][l] + cnt(l, x));49 }50 cur = !cur; nxt = !nxt;51 }52 int ans = 0;53 for (int i=0; i<16; i++) for(int j=0; j<16; j++) {54 up(ans, dp[cur][i][j]);55 }56 printf("%d\n", ans);57 return 0;58 }

 

转载于:https://www.cnblogs.com/mchmch/p/luogu-p4401.html

你可能感兴趣的文章
Codeforces 1038E Maximum Matching
查看>>
探讨webapp的SEO难题(上)
查看>>
知识点总结
查看>>
Git-对象
查看>>
2017-2018 20155327李百乾 实验三实时系统
查看>>
cocos3 多文件拆分cocos
查看>>
cocos 自定义粒子系统plist
查看>>
[原]使用kubeadm部署kubernetes(一)
查看>>
B1056 组合数的和 (15分)
查看>>
WBS(work Breakdown Structure)
查看>>
JAVA常用知识总结(五)——Linux
查看>>
JS编码方式
查看>>
[国嵌攻略][159][SPI子系统]
查看>>
ATS metric query
查看>>
iview-layout布局
查看>>
AJAX原理解析与兼容方法封装
查看>>
Bzoj5294/洛谷P4428 [Bjoi2018]二进制(线段树)
查看>>
PSR标准规范
查看>>
开发APP需知
查看>>
对象初始化的过程
查看>>