终于停止了掉Rating的浪潮!

猥琐的链接

这次200分才Rank10,而且很多人并列

庆幸T2最后20分钟发现期望的算法打错了,然后拿到了50pts,250收场

T1 水题*1

这道题不仅做过,而且本来难度就很低,不A对不起自己

主要是一个追及问题,我们枚举所有的人初始时的位置即可

CODE

#include<cstdio>
using namespace std;
const int N=1005;
int n;
double v,u,d[N],c[N],ans;
int main()
{
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
register int i,j;
scanf("%d%lf%lf",&n,&v,&u);
for (i=1;i<=n;++i)
scanf("%lf",&c[i]);
for (i=1;i<=n;++i)
scanf("%lf",&d[i]);
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
ans+=u/(c[i]-(j-1)*d[i]-v);
printf("%.3lf",ans);
return 0;
}

T2 水题*2

话说再给我半小时小时应该可以A了这题(A的人比T3多了去了)

写完DFS后其实就有两条路:记忆化||概率DP

记忆化比较舒服,但我还是太蒟(主要是正着来比较难写)

而且这题的DP转移也比较好写,因此我们考虑倒着DP

设f[i][j]表示还剩下j(minites)时在i点时的期望

因此转移的时候只要与它相连的所有可行的点转移即可,最后再对起点分类讨论

CODE

#include<cstdio>
#include<cstring>
using namespace std;
typedef double DB;
const int N=105,T=500;
struct edge
{
int to,next,v;
}e[N*N<<1];
DB f1[N][T],f2[N][T];
int n,m,t,head[N],h1[N],h2[N],c[N],cnt,x,y,z;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline void add(int x,int y,int z)
{
e[++cnt].to=y; e[cnt].v=z; e[cnt].next=head[x]; head[x]=cnt;
}
int main()
{
//freopen("B.in","r",stdin); freopen("B.out","w",stdout);
memset(e,-1,sizeof(e));
memset(head,-1,sizeof(head));
register int i,j,k;
read(n); read(m); read(t);
for (i=1;i<=n;++i)
read(c[i]),read(h1[i]),read(h2[i]);
for (i=1;i<=m;++i)
{
read(x); read(y); read(z);
add(x,y,z); add(y,x,z);
}
for (j=t;j>=1;--j)
for (i=1;i<=n;++i)
{
int res=0;
for (k=head[i];k!=-1;k=e[k].next)
if (j+e[k].v+c[e[k].to]<=t) ++res;
f1[i][j]=h1[i]; f2[i][j]=h2[i];
if (!res) continue;
for (k=head[i];k!=-1;k=e[k].next)
if (j+e[k].v+c[e[k].to]<=t)
{
f1[i][j]+=f1[e[k].to][j+e[k].v+c[e[k].to]]/res;
f2[i][j]+=f2[e[k].to][j+e[k].v+c[e[k].to]]/res;
}
}
DB ans1=0,ans2=0;
int res=0;
for (i=1;i<=n;++i)
if (c[i]<=t) ++res;
for (i=1;i<=n;++i)
if (c[i]<=t) ans1+=f1[i][c[i]]/res,ans2+=f2[i][c[i]]/res;
printf("%.5lf %.5lf",ans1,ans2);
return 0;
}

T3 水题*3

状压DP即可(怎么这么多dalao直接DFS艹过去了)

这题我们需要3个状态对于所有任务:0表示还未取,1表示取来了但是还没有送到,2表示已经送到了,因此f[i][j]表示在i点时状态为j(三进制数)最短时间

注意如果只设01那么你难以区分没取和取了没送到的;或是取了没送到的和取了送到的

而且可以一次接多个任务,因此可能会有中转点的干扰

所以每次转移时枚举每一个点再搞一下即可

注意1只能由0转移过来,2只能由1转移过来,千万不能直接从0转移到2

3的幂次可以预处理,因此复杂度O(3^k*k*n)

CODE

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=25,Q=15,INF=1e9;
struct data
{
int s,t,l,r;
}a[Q];
int dis[N][N],pow[Q],f[N][60000],n,m,q,ans=-1,x,y,z;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline int max(int a,int b)
{
return a>b?a:b;
}
inline int min(int a,int b)
{
return a<b?a:b;
}
inline void init(void)
{
register int i,j;
for (pow[0]=1,i=1;i<=q;++i)
pow[i]=pow[i-1]*3;
for (i=1;i<=n;++i)
for (j=0;j<pow[q];++j)
f[i][j]=INF; f[1][0]=0;
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
dis[i][j]=INF;
for (i=1;i<=j;++i)
dis[i][i]=0;
}
inline void floyd(void)
{
register int i,j,k;
for (k=1;k<=n;++k)
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
inline int get_num(int x,int id)
{
return x/pow[id]%3;
}
inline int count(int x)
{
int res=0;
while (x)
{
if (x%3==2) ++res;
x/=3;
}
return res;
}
int main()
{
//freopen("C.in","r",stdin); freopen("C.out","w",stdout);
register int i,j,k;
read(n); read(m); read(q);
init();
for (i=1;i<=m;++i)
{
read(x); read(y); read(z);
dis[x][y]=min(dis[x][y],z);
}
floyd();
for (i=0;i<q;++i)
read(a[i].s),read(a[i].t),read(a[i].l),read(a[i].r);
for (j=0;j<pow[q];++j)
for (k=0;k<q;++k)
{
int id=get_num(j,k);
if (id==0) continue;
if (id==1)
{
for (i=1;i<=n;++i)
if (f[i][j-pow[k]]+dis[i][a[k].s]<=a[k].r) f[a[k].s][j]=max(a[k].l,min(f[i][j-pow[k]]+dis[i][a[k].s],f[a[k].s][j]));
} else
{
for (i=1;i<=n;++i)
if (f[i][j-pow[k]]+dis[i][a[k].t]<=a[k].r) f[a[k].t][j]=min(f[i][j-pow[k]]+dis[i][a[k].t],f[a[k].t][j]);
}
}
for (i=1;i<=n;++i)
for (j=0;j<pow[q];++j)
if (f[i][j]!=INF) ans=max(ans,count(j));
printf("%d",ans);
return 0;
}

EZ 2018 04 21 NOIP2018 模拟赛(九)的更多相关文章

  1. EZ 2018 04 21 NOIP2018 模拟赛(十) -LoliconAutomaton的退役赛

    难得的一次Unrated,避免了重回1500的尴尬 其实题目都还可以,但只不过所有人T1都炸了,可能是数据的锅(假的) 而且我因为T1SB的把T2弃了,没想到是千年水题 T3莫名爆炸,然后TM的40分 ...

  2. EZ 2018 04 13 NOIP2018 模拟赛(八)

    这次的题目都是什么鬼? 玄学乱搞+肉眼看CODE+倒着搜索? 好吧是我ZZ了 链接在此 T1 玄学乱搞 由于考场上写的部分分做法忘记讨论n<=2000时的情况,少得了30pts 很容易得到一个基 ...

  3. EZ 2018 04 06 NOIP2018 模拟赛(七)

    我是链接 这次是真的惨,码了将近2hours的可持久化线段树炸掉了! 而且本地拍了一万年也没发现哪里炸了. T1 压位的入门题,话说这道题能拿个99分就可以了(100分要FFT) 对于暴力,就是暴力找 ...

  4. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  5. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  6. EZ 2018 06 24 NOIP2018 模拟赛(二十)

    很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...

  7. EZ 2018 06 02 NOIP2018 模拟赛(十七)

    这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...

  8. EZ 2018 05 26 NOIP2018 模拟赛(十六)

    这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...

  9. EZ 2018 05 20 NOIP2018 模拟赛(十五)

    这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...

随机推荐

  1. 大数据【一】集群配置及ssh免密认证

    八月迷情,这个月会对大数据进行一个快速的了解学习. 一.所需工具简介 首先我是在大数据实验一体机上进行集群管理学习,管理五台实验机,分别为master,slave1,slave2,slave3,cli ...

  2. EL表达式和标签

    1.什么是EL expression language 表达式语言 特点: 语言简单,使用方便 .${表达式}. 提供自动类型转换的功能 如果返回结果为null时 String -- ”” Numbe ...

  3. 【前端】NodeJs包管理工具NPM

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS部署上的很多问题. 测试是否安装成功,出现版本提示表示安装成功. npm -v NPM常用命令 官方文档:https://www.npm ...

  4. LeetCode题解之 Binary Tree Preorder Traversal

    1.题目描述 2.问题分析 利用递归. 3.代码 vector<int> preorderTraversal(TreeNode* root) { vector<int> v; ...

  5. centOS7中Mariadb数据库安装与基本管理

    一.Mariadb数据库安装 1. 直接yum源安装 yum -y install mariadb mariadb-serversystemctl start mariadb /启动Mariadb服务 ...

  6. 指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配

    在做通过 PL/SQL 导入Excel 数据的时候,在进行数据库连接的时候,选择DSN为Excel ,输入用户名和密码,进行Connect 出现错误“指定的 DSN 中,驱动程序和应用程序之间的体系结 ...

  7. [Linux|DBA]运维三十六计

    这里是腾讯两位大神梁定安.周小军总记得运维DBA三十六计--

  8. 将目录结构输出为json格式(zTree)

    # -*- coding: UTF-8 -*- import json,os path = 'E:\\BACKUP' #返回空目录 def path_to_dict(path): d = {'name ...

  9. MongoDB之 复制集搭建

    MongoDB复制集搭建步骤,本次搭建使用3台机器,一个是主节点,一个是从节点,一个是仲裁者. 主节点负责与前台客户端进行数据读写交互,从节点只负责容灾,构建高可用,冗余备份.仲裁者的作用是当主节点宕 ...

  10. MYSQL导入csv类型的数据出现The MySQL server is running with the --secure-file-priv option

    今天尝试使用 into outfile导出数据的时候出现错误: The MySQL server is running with the --secure-file-priv option so it ...