博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018 TCO Algorithm Round 1B
阅读量:5081 次
发布时间:2019-06-13

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

随便搞

1 #include 
2 using namespace std; 3 4 class LineOff { 5 public: 6 int movesToDo(string points) { 7 stack
st; 8 int ret = 0, l = points.length(); 9 for(int i = 0; i < l; ++i){10 if(!st.empty() && st.top() == points[i]) ret++, st.pop();11 else st.push(points[i]);12 }13 return ret;14 }15 };
Aguin

 

随便搞

1 #include 
2 using namespace std; 3 typedef pair
pii; 4 int f[111][111][111]; 5 pii pre[111][111][111]; 6 7 class StablePairsDiv1 { 8 public: 9 void get(int step, int i, int j, vector
& ret){10 if(step != 1) get(step - 1, pre[step][i][j].first, pre[step][i][j].second, ret);11 ret.push_back(i);12 ret.push_back(j);13 }14 vector
findMaxStablePairs(int n, int c, int k) {15 memset(f, -1, sizeof(f));16 for(int i = 1; i <= n; ++i)17 for(int j = i + 1; j <= n; ++j)18 f[1][i][j] = i + j;19 for(int i = 1; i < k; ++i){20 for(int j = 1; j <= n; ++j){21 for(int k = j + 1; k <= n; ++k){22 if(f[i][j][k] == -1) continue;23 for(int p = k + 1; p <= n; ++p){24 int q = j + k + c - p;25 if(q <= p) break;26 int t = f[i][j][k] + p + q;27 if(t > f[i+1][p][q]) f[i+1][p][q] = t, pre[i+1][p][q] = pii(j, k);28 }29 }30 }31 }32 int ans = -1, ii, jj;33 for(int i = 1; i <= n; ++i){34 for(int j = i + 1; j <= n; ++j){35 if(f[k][i][j] > ans) ans = f[k][i][j], ii = i, jj = j;36 }37 }38 vector
ret;39 if(ans == -1) return ret;40 get(k, ii, jj, ret);41 return ret;42 }43 };
Aguin

 

随便搞

1 #include 
2 using namespace std; 3 typedef long long LL; 4 const LL mod = 1e9 + 7; 5 6 LL f[66][66][4][2]; 7 class ThreeSameLetters { 8 public: 9 int countStrings(int L, int S){10 for(int i = 1; i <= S; ++i) f[1][i][1][0] = 1;11 for(int i = 1; i < L; ++i){12 for(int j = 1; j <= S; ++j){13 for(int k = 1; k <= 3; ++k){14 for(int p = 0; p <= 1; ++p){15 for(int q = 1; q <= S; ++q){16 int nk = q == j ? k + 1 : 1;17 if(nk > 3) continue;18 if(p && nk == 3) continue;19 int np = p || nk == 3;20 f[i+1][q][nk][np] = (f[i+1][q][nk][np] + f[i][j][k][p]) % mod;21 }22 }23 }24 }25 }26 LL ans = 0;27 for(int i = 1; i <= S; ++i) ans = (ans + f[L][i][1][1] + f[L][i][2][1] + f[L][i][3][1]) % mod;28 return (int) ans;29 }30 };
Aguin

 

转载于:https://www.cnblogs.com/Aguin/p/8994193.html

你可能感兴趣的文章
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
python的列表与shell的数组
查看>>
关于TFS2010使用常见问题
查看>>
软件工程团队作业3
查看>>
python标准库——queue模块 的queue类(单向队列)
查看>>
火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题...
查看>>
深入理解JVM读书笔记--字节码执行引擎
查看>>
vue-搜索功能-实时监听搜索框的输入,N毫秒请求一次数据
查看>>
批处理 windows 服务的安装与卸载
查看>>
React文档翻译 (快速入门)
查看>>
nodejs fs路径
查看>>
动态规划算法之最大子段和
查看>>
linux c:关联变量的双for循环
查看>>