首页 > 其他分享 >守卫者的挑战

守卫者的挑战

时间:2024-05-27 16:36:46浏览次数:15  
标签:node 状态 背包 容量 210 int 挑战 守卫者

状态转移

我们假设 \(f{_i}{_,j}{_,k}\),表示前 \(i\) 场,赢了 \(j\)场,
目前背包容量为 \(k\) 的概率,每一项挑战有两种状态,胜或失败,两种情况答案不同,所以要分开计算,

失败状态:

\[f_{i,j,k}+=f_{i-1,j,k}*(1-p[i]) \]

成功状态:

\[f_{i,j+1,k+a[i]}+=f_{i-1,j,k}*p[i],(k+a[i]>=0) \]

实现注意

在实现时我们需要注意某些地方,

  • 1:实现有正有负,要判非负再转移
  • 2:背包容量最多为 \(n\),(因为最多 \(n\) 个碎片)
  • 3:要按背包容量排序,先拿背包,再拿碎片,这样一定能保证状态转移全,但不排序则会导致背包容量不够的情况(还有一些是把 \(n\) 加200来保证空间,两种都可以)

注意3证明

实际上可以看一下题目,它只是要求 \(n\) 场完了之后容量够即可,所以实际上挑战中的顺序是不重要的,排序保证了容量是够的,如果背包拿完了还装不下碎片那就是不能了

#include<bits/stdc++.h>
using namespace std;
const int maxn=3e2+10; 
double f[210][210][210];
int n,l,k;
struct node
{
	int a;
	double p; 
}m[maxn];
bool cmp(node a,node b)
{
	return a.a>b.a;
}

int main()
{
	scanf("%d%d%d",&n,&l,&k);
	k=min(k,n);
	for(int i=1;i<=n;i++)scanf("%lf",&m[i].p),m[i].p/=(double)100;
	for(int i=1;i<=n;i++)scanf("%d",&m[i].a);
	sort(m+1,m+n+1,cmp);
	f[0][0][k]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=i;j++)
		{
			for(int k=0;k<=n;k++)
			{
				f[i][j][k]+=f[i-1][j][k]*(1-m[i].p);
				int x=k+m[i].a;
				if(x<0)continue;
				x=min(x,n);
				f[i][j+1][x]+=f[i-1][j][k]*m[i].p;
			}
		}
	}
	double ans=0;
	for(int i=l;i<=n;i++)
		for(int j=0;j<=n;j++)ans+=f[n][i][j];
	printf("%.6lf\n",ans);
	
	return 0;
}

标签:node,状态,背包,容量,210,int,挑战,守卫者
From: https://www.cnblogs.com/oceansofstars/p/18215835

相关文章

  • 智慧养老大趋势:迎接未来老龄化社会的挑战与机遇
    随着全球人口老龄化的加速,智慧养老已成为应对这一挑战的重要途径。智慧养老是指利用现代信息技术,特别是物联网、大数据、云计算和人工智能等技术手段,为老年人提供个性化、智能化和便捷化的养老服务。本文将探讨智慧养老的大趋势,分析其背后的驱动因素,并展望智慧养老的未来发展......
  • 守卫者挑战
    守卫者的挑战题目描述打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地。突然,眼前一道亮光闪过。“我,Nizem,是黑魔法圣殿的守卫者。如果你能通过我的挑战,那么你可以带走黑魔法圣殿的地图……”瞬间,队员们被传送到了一个擂台上,最初身......
  • MVVM的工作原理和优点及其在实际项目中的优势和挑战
    MVVM的工作原理和优点及其在实际项目中的优势和挑战工作原理:MVVM(Model-View-ViewModel)模式通过引入ViewModel作为Model和View之间的桥梁,实现数据的双向绑定。ViewModel负责封装数据逻辑,暴露可绑定的属性给View,同时监听Model的变化,同步更新视图;反之,View的变化也能通过ViewModel......
  • ISCC2024个人挑战赛WP-MISC
    (非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考) whereisflag下载附件,解压出pyc,然后到下面网址反编译python反编译-在线工具记住c,是密文,Key是k5fgb2eur5styn0lve3t6r1sAESecb解密解密网址:https://www.lddgo.net/encrypt/aes成语学习压缩包密码:5......
  • ISCC2024个人挑战赛WP-WEB
    (非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考) 还没想好名字的塔防游戏GET/world.jsHTTP/1.1Host:101.200.138.180:17345Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed......
  • 守卫者的挑战
    守卫者的挑战题目描述打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地。突然,眼前一道亮光闪过。“我,Nizem,是黑魔法圣殿的守卫者。如果你能通过我的挑战,那么你可以带走黑魔法圣殿的地图……”瞬间,队员们被传送到了一个擂台上,最初身......
  • 编写C语言计算器:探索挑战与优化之路
    如果你对C语言编程充满兴趣,那么构建一个简易计算器可能是一个很好的练习机会。在本文中,我们将探讨如何使用C语言实现一个基本的计算器,并分享我们在这个过程中遇到的挑战及其解决方案。版本1.0如下:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>voidmenu(){ p......
  • 【宫殿记忆】挑战软考高项最难最多ITTO
    本文来自公众号“AI大道理” 软考高项十大管理ITTO宫殿记忆法视频课程:平台:荔枝微课连接:https://weike.fm/aqG502ab79​weike.fm/aqG502ab79            ——————浅谈则止,细致入微AI大道理扫描下方“AI大道理”,选择“关注”公众号......
  • HPC高性能传输会面临哪些挑战?要怎么应对?
    HPC高性能传输通常指的是在高性能计算环境中进行数据传输时所使用的技术和方法。在HPC领域,数据传输通常涉及大规模的数据集,因此需要高效的传输方式来确保数据能够在计算节点之间快速可靠地传送。许多不同类型的公司和组织可能会使用高性能计算(HPC)来解决各种复杂的问题。以下是一......
  • 挑战程序设计竞赛 2.1章习题 poj 3046 Ant Counting
    https://vjudge.net.cn/problem/POJ-3046#author=GPT_zh有一天,贝西在蚂蚁山里探头探脑,看着蚂蚁们来来回回地觅食。她发现很多蚂蚁都是兄弟姐妹,彼此无法区分。她还发现,有时只有一只蚂蚁去觅食,有时几只,有时全部。这就产生了大量不同组合的蚂蚁!有点数学天赋的贝茜开始琢磨起来......