「CTSC 2011」幸福路径
[「CTSC 2011」幸福路径
蚂蚁是可以无限走下去的,但是题目对于精度是有限定的,只要满足精度就行了.
\({(1-1e-6)}^{2^{25}}=2.6e-15\)
考虑使用倍增的思想.
定义\(dp[x][y][t]\)为从\(x\)点出发,走\(2^t\)步,到达\(y\)所得到的最大权值.
dp转移:\(dp[x][y][t]=max(dp[x][k][t-1]+p^{2^{t-1}} dp[k][y][t-1])\)(\(k \subset [1,n]\)).
一次转移复杂度为\(o(n^3)\).
总复杂度\(o(n^3*K)\),\(K \leq 25\).
#include<bits/stdc++.h>
#define rep(q,a,b) for(int q=a,q##_end_=b;q<=q##_end_;++q)
#define dep(q,a,b) for(int q=a,q##_end_=b;q>=q##_end_;--q)
#define mem(a,b) memset(a,b,sizeof a )
#define debug(a) cerr<<#a<<' '<<a<<"___"<<endl
using namespace std;
void in(int &r) {
static char c;
r=0;
while(c=getchar(),!isdigit(c));
do r=(r<<1)+(r<<3)+(c^48);
while(c=getchar(),isdigit(c));
}
bool cur1;
const int mn=105;
const int mm=1005;
int n,m,cnt1,s;
double lp,p;
double val[mn],dp[mn][mn][2];
bool cur2;
int main() {
// cerr<<(&cur1-&cur2)/1024.0/1024<<endl;
freopen("path.in","r",stdin);
freopen("path.out","w",stdout);
int st;
scanf("%d%d",&n,&m);
rep(q,1,n)scanf("%lf",&val[q]);
scanf("%d%lf",&st,&p);
int a,b;
bool ok=1;
rep(q,1,n)rep(w,1,n)dp[q][w][ok]=-1e9;
rep(q,1,n)dp[q][q][ok]=0;
double Mx=0;
rep(q,1,m) {
scanf("%d%d",&a,&b);
dp[a][b][ok]=val[b]*p;
Mx=max(Mx,dp[a][b][ok]);
}
for(int tim=1;tim<=25;++tim){
if(p*Mx<1e-3)break;
ok=!ok;
rep(q,1,n)rep(w,1,n)dp[q][w][ok]=-1e9;
rep(q,1,n)dp[q][q][ok]=0;
rep(k,1,n)rep(q,1,n)rep(w,1,n)dp[q][w][ok]=max(dp[q][w][ok],dp[q][k][!ok]+dp[k][w][!ok]*p);
rep(q,1,n)rep(w,1,n)Mx=max(Mx,dp[q][w][ok]);
p*=p;
}
double ans=0;
rep(q,1,n)ans=max(ans,dp[st][q][ok]);
printf("%.1lf\n",val[st]+ans);
return 0;
}
「CTSC 2011」幸福路径的更多相关文章
- 「CTSC 2011」排列
「CTSC 2011」排列 要求不存在公差为 A 或者公比为 B 的子列,那么实际上可以把该问题转化为求一个图的最优拓朴序. 任意差为 A 或者比为 B 的两个数连一条边. 求一个合法序列的答案可以用 ...
- 「BZOJ 2434」「NOI 2011」阿狸的打字机「AC自动机」
题意 有一个打字机,支持三种操作: 字符串末尾加一个小写字母 字符串末尾减一个字符 输出这个字符串 经过不超过\(n\)次操作后有\(m\)组询问:\((x,y)\),表示第\(x\)次输出第字符串在 ...
- 「BZOJ 2342」「SHOI 2011」双倍回文「Manacher」
题意 记\(s_R\)为\(s\)翻转后的串,求一个串最长的形如\(ss_Rss_R\)的子串长度 题解 这有一个复杂度明显\(O(n)\)的做法,思路来自网上某篇博客 一个双倍回文串肯定当且仅当本身 ...
- 「CTSC 2008」祭祀
题目链接 戳我 \(Solution\) 第一问 这道题要知道一个叫做\(Dilworth\)的定理 最长反链\(=\)最小链覆盖 证明(\(from\ r\_64\)): 所以我们只要求一个最小链覆 ...
- 「BalticOI 2011」Switch the Lamp On
Casper is designing an electronic circuit on a \(N \times M\) rectangular grid plate. There are \(N ...
- 「CTSC 2013」组合子逻辑
Tag 堆,贪心 Description 给出一个数列 \(n\) 个数,一开始有一个括号包含 \([1,n]\),你需要加一些括号,使得每个括号(包括一开始的)所包含的元素个数 \(\leq\) 这 ...
- Solution -「POI 2011」「洛谷 P3527」MET-Meteors
\(\mathcal{Description}\) Link. 给定一个大小为 \(n\) 的环,每个结点有一个所属国家.\(k\) 次事件,每次对 \([l,r]\) 区间上的每个点点权加上 ...
- Solution -「CTSC 2018」「洛谷 P4602」混合果汁
\(\mathcal{Description}\) Link. \(n\) 种果汁,第 \(i\) 种美味度为 \(d_i\),每升价格 \(p_i\),一共 \(l_i\) 升.\(m\) ...
- LOJ6002 - 「网络流 24 题」最小路径覆盖
原题链接 Description 求一个DAG的最小路径覆盖,并输出一种方案. Solution 模板题啦~ Code //「网络流 24 题」最小路径覆盖 #include <cstdio&g ...
随机推荐
- FAT
目录 概 主要内容 代码 Zhang J., Xu X., Han B., Niu G., Cui L., Sugiyama M., Kankanhalli M. Attacks which do n ...
- Glossary Collection
目录 直接修饰用 间接强调用 (多为副词) 过渡用 特别的名词 动词 词组 各种介词 句子 摘要 引言 总结 正文 实验 直接修饰用 Word 含义 例句 近义词 nuanced adj. 微妙的:具 ...
- SRGAN
目录 概 主要内容 代码 Ledig C., Theis L., Huszar F., Caballero J., Cunningham A., Acosta A., Aitken A., Tejan ...
- Hadoop单点安装(伪分布式)
Hadoop单点安装,基于版本2.7.1, 在一台Lunix主机上面安装Hdoop, 包括Hdfs的NameNode和DataNode, 以及Yarn的ResouceManager和NodeManag ...
- Solon 1.6.12 发布,类似 Spring 的生态体系
关于官网 千呼万唤始出来: https://solon.noear.org .整了一个月多了,总体样子有了...还得不断接着整! 关于 Solon Solon 是一个轻量级应用开发框架.支持 Web. ...
- 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通
本文介绍从创建 net6.0 项目运行在 windows 开发环境的 docker 然后正式部署至 liunx 服务器. 1 windows10 安装 docker 下载docker-desktop ...
- 带你认识FusionInsight Flink:既能批处理,又能流处理
摘要:本文主要介绍了FusionInsight Flink组件的基本原理.Flink任务提交的常见问题.以及最佳实践FAQ. 本文分享自华为云社区<FusionInsight HD Flink组 ...
- MySQL 开启和关闭远程访问
MySQL 开启和关闭远程访问权限 一.开启MySQL/MariaDB的远程访问权限 [root@localhost ~]# mysql -u root -p MariaDB [(none)]> ...
- 总结 sql 的 并集、交集、差集
有两个表 ,表a ,表b , create table a { age int , name varchar(20) } ending=innodb; insert into a values(13 ...
- [vscode] os.getcwd(),调试和命令行运行的结果不一致
问题描述: 调试和命令行运行的时候工作目录不一致 这会导致一个问题,我想从上级目录导入模块的话,F5调试就会找不到模块,而命令行则没问题 那么我该如何调试呢? 目录结构: top └ folder_ ...