终于停止了掉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. Prometheus Node_exporter 之 Memory Detail Vmstat

    Memory Detail Vmstat 查看/proc/vmstat 文件的内容 1. Memory Pages In / Out type: GraphUnit: shortLabel: Page ...

  2. jboss4.2.3 屏蔽响应头server信息

    1.修改配置deploy/jboss-web.deployer/service.xml <Connector port="8080" protocol="HTTP/ ...

  3. [Python_2] Python 基础

    0. 说明 Python 基础笔记,使用的版本为 Python 3.6.2 Python 的变量.字符串操作.list.元组.字典.循环.range.类型转换.运算等操作. 1. 引号的使用 字符串使 ...

  4. 【MYSQL】语法复习

    一.数据类型 截图来源: http://www.runoob.com/mysql/mysql-data-types.html 二.基本语句 1.创建数据表 -- 主键自增,T_User CREATE ...

  5. docker18.ce harbor 安装

     Harbor 是什么? harbor VMware 开发的一个容器镜像仓库,harbor的功能提供用户权限管理.镜像复制等功能,提高使用的registry的效率. 安装最新版的docker可以参考d ...

  6. KMS服务器软件-windows/OpenWRT-X64版

    软件项目: https://github.com/Wind4/vlmcsd windows版kms服务器 https://files.cnblogs.com/files/SilenceRet/vlmc ...

  7. vc MFC 通过IDispatch调用默认成员函数

    CComPtr<IDispatch> spDisp(IDispatch *); if(!spDisp) return; DISPPARAMS dispParam={0}; //没有参数 V ...

  8. 8、Django的模型层(2)

    第3节:多表操作 3.1 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作 ...

  9. MySql详解(三)

    MySql详解(三) 导入基础表 具体的SQL文件已经放入百度网盘,连接为:http://pan.baidu.com/s/1hseoVR2,后面的MySql内容都是按照这些基础表展开的. depart ...

  10. Javascript之DOM性能优化

    原文地址:http://ce.sysu.edu.cn/hope/Item/140355.aspx 作者:陈古松 来源:本站原创 发布时间:2015-03-14 更新时间:2015-03-14  点击数 ...