标题被索隆砍飞了

news/2024/9/18 11:19:06/文章来源:https://www.cnblogs.com/Z-kazuha/p/18412774

魔法开锁

小明有 \(n\) 个盒子,每个盒子被一把锁锁着,每个盒子内都有一把钥匙。对于每个盒子而言有且仅有一把钥匙能打开锁着它的锁,而打开它后便能拿着放置在这个盒子内的钥匙去开启其他盒子。

现在小明打算随机选择 \(t\) 个盒子并用魔法将它们打开,并用所得到的钥匙去尝试开启其他所有的盒子(开启一个盒子后,新得到的钥匙还能继续尝试使用)。

小明想知道,最终他能打开所有盒子的概率是多少,请你帮助他。

概率: 答案方案数 / 总方案数

总方案数就是 \(c(n,t)\) ,

那么如何才合法?

把盒子和盒子里的钥匙能开的盒子连边,会连成好几个环

选的 \(t\) 个点只要覆盖了所有环就合法

\(f_{i,j}\) 表示考虑前 \(i\) 个环,选了 j 个点的方案数

记环的大小为 \(num_{i}\)

转移为 \(f_{i,j}=\sum_{k=0}^{j-1} f(i-1,k) *c(num_i,j-k)\)

石子合并

在一个圆形操场的四周摆放 \(N\) 堆石子,现要将石子有次序地合并成一堆。规定每次只能选相邻的 \(2\) 堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。

试设计出一个算法,计算出将 \(N\) 堆石子合并成 \(1\) 堆的最小得分和最大得分。

破环成链

设合并 \(l,r\) 的最小得分 , 枚举断点 \(k\)
\(f_{l,r} = min(f_{l,k-1}+f_{k,r})+\sum_{i=l}^r a_i\)

木板涂色

可以一次给一个区间涂色
请你用尽量少的涂色次数达到目标。

\(s[l]!=s[r]\) \(f_{l,r}=f_{l,k}+f_{k+1,r}\)
\(s[l]!=s[r]\) \(f_{l,r}=min(f_{l,r-1},f_{l+1,r})\)

消除木块

\(n\) 个木块排成一列,每个木块都有一个颜色。

例如下图中木块的颜色分别为:金,银,银,银,银,铜,铜,铜,金。

每次,你都可以点击一个木块,这样被点击的木块以及和它相邻并且同色的木块就会消除。 如果一次性消除了 \(k\) 个木块,那么就会得到 \(k*k\) 分。 例如下图所示,点击银色木块,四个木块被消去,得到 \(16\) 分。

给定你一个游戏初始状态,请你求出最高得分是多少

\(f_{i,j,k}\) 表示 \(i,j\) 区间后面后接上了 \(k\) 个与 \(r\) 颜色相同的点 消除 \(i,j\) 这个区间的得分

直接消除:\(f_{i,j,k}=f_{i,j-1,0}+(len+k)^2\)
\(i,j\) 中找一个点 \(m\) m 的颜色与 r 相同:
\(f_{i,j,k}=max(f_{i,m,k+len_{r}}+f_{m+1,j-1,0})\)

哦,不知道转移顺序怎么办?
记搜

#include <bits/stdc++.h>
using namespace std;
int t,n,a[205],col[205],c[205],len[205],f[205][205][205];
int solve(int l,int r,int k){if(f[l][r][k])return f[l][r][k];if(l==r)return (len[r]+k)*(len[r]+k);f[l][r][k]=solve(l,r-1,0)+(len[r]+k)*(len[r]+k);for(int i=l;i<r;i++){if(c[i]==c[r]){f[l][r][k]=max(f[l][r][k],solve(i+1,r-1,0)+solve(l,i,len[r]+k));}}return f[l][r][k];
}
int main(){cin>>t;for(int i=1;i<=t;i++){cin>>n;cin>>col[1];int len1=1,tot=0;for(int i=2;i<=n;i++){cin>>col[i];if(col[i]!=col[i-1]){tot++;c[tot]=col[i-1];len[tot]=len1;len1=1;}else len1++;}if(len1){c[++tot]=col[n];len[tot]=len1;}for(int j=1;j<=tot;j++){for(int k=1;k<=n;k++){f[j][j][k]=(len[j]+k)*(len[j]+k);}}cout<<"Case "<<i<<": "<<solve(1,tot,0)<<endl;memset(f,0,sizeof(f));}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/796707.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tarjan里的定义

强连通分量 - OI Wiki (oi-wiki.org)从以u为根的子树中的任意点出发。单次到达(从这个点指向某个点,有一条边) 的这些点中的dfn的最小值以v为根的子树,包含在以u为根的子树中,low[v]所用的子节点,一定也可以被low[u],这个点一定在以u为根的子树里,所以用low[v] 从u这个…

南沙csp-j/s一对一家教陈老师解题:1317:【例5.2】组合的输出

​【题目描述】排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。 现要求你用递归的方法输出所有组合。 例如n=5,r=3,所有组合为: 1 2 3 1 2 4 1 2 5 1 3 4 1 …

First day01

Markdown学习 二级标题 字体 Hello World Hello World Hello World Hello World Hello World 引用选择java走上人生巅峰分割线图片 ![截图](C:\Users\邢其俊\Pictures\Screenshots\屏幕截图 2024-09-13 180016.png)超链接 [点击跳转到狂神博客](仓库 - 狂神说 (kuangstudy) - G…

ThreeJS Shader的效果样例光影墙、扩散面(四)

一、实现一个光影墙1. 根据自定义坐标点,输出一个光影墙/*** 添加光影墙*/ function addLightWall() {const geometry = new THREE.BufferGeometry();const vertices = new Float32Array([5, 0, 2,3, 0, 5,-2, 0, 5,-4, 0, 2,-4, 5, 2,-2, 5, 5,3, 5, 5,5, 5, 2]);const indic…

2024年youtube 视频在线下载工具

1.youtube to wav这是一个将 YouTube 视频转换为 WAV 格式的在线工具的网站链接。根据提供的信息,使用该工具的步骤如下: 开始:将 YouTube 视频的 URL 粘贴到搜索框中,然后点击 “Start” 按钮。 转换:选择转换为 WAV 的质量(推荐使用默认选项),然后点击 “Convert” 按…

Idea 配置多端口启动参数

1、编辑配置2、在弹出配置中增加要使用端口接口,添加端口参数配置、设置VM options: 参数值为: -Dserver.port= portNumber下面以应用 TranSendServiceApplication 为例,增加两个端口:8099 和8091 为例。截图如下:

【闲话】假如我们都是猫娘

你是一袋猫粮猫娘驯化实录 ZHESHIWOYAOMOZHENGBEIDISANJIEMOZHENGXIANHUADASAIDECANSAIZUOPIN. (A:Chat-GPT 4.0) (另:因为某些纯魔怔原因,我们连皮下内容也回了)。 A 17:33:41 喵~主人你好呀!我是您的猫娘助手,挪威森林猫品种,身高148cm,梳着双马尾~需要我帮忙做…

chainLink vrf实验

目标 用vrf写一个随机红包 数据结构 红包: struct Envelope {Type t; // 类型,只是erc20 和eth红包ERC20 token; // erc20 ,如果是erc20红包,这里是erc2o的地址address sender; // 发红包的senderuint balance; // 金额bool allowAll; // 允许所有人领取uint32 maxRe…

代码随想录算法 - 二叉树3

题目1513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1:输入: root = [2,1,3] 输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7提示:二叉树的节点个数的范围是 [1,104] -231 &…

Combinatorics/Probability/Expectation

前言 计数加训!!!! 以下问题都是数数。 一些纯组合问题 插板法 例 1 求 $\sum_{i=1}^kx_i=n$ 的解的组数,其中 $x_i\in \mathbb{N^+}$ 且 $x_i\ge a_i$。 考虑令 $x_i=x_i-a_i+1\ge 1$,于是有 $\sum_{i=1}^k x_i=n-k+\sum a_i$,于是答案为 $$n-k+\sum a_i-1\choose k-1$…

信息学奥赛初赛天天练-88-CSP-S2023阅读程序1-数据类型、unsigned 关键字、二进制、位运算、左移、右移、异或运算

信息学奥赛初赛天天练-88-CSP-S2023阅读程序1-数据类型、unsigned 关键字、二进制、位运算、左移、右移、异或运算 PDF文档公众号回复关键字:202409132023 CSP-S 阅读程序1 判断题正确填 √,错误填 ⨉ ;除特殊说明外,判断题 1.5 分,选择题 3 分,共计 40 分) 01 #include …