EZ 2018 04 21 NOIP2018 模拟赛(九)
终于停止了掉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 模拟赛(九)的更多相关文章
- EZ 2018 04 21 NOIP2018 模拟赛(十) -LoliconAutomaton的退役赛
难得的一次Unrated,避免了重回1500的尴尬 其实题目都还可以,但只不过所有人T1都炸了,可能是数据的锅(假的) 而且我因为T1SB的把T2弃了,没想到是千年水题 T3莫名爆炸,然后TM的40分 ...
- EZ 2018 04 13 NOIP2018 模拟赛(八)
这次的题目都是什么鬼? 玄学乱搞+肉眼看CODE+倒着搜索? 好吧是我ZZ了 链接在此 T1 玄学乱搞 由于考场上写的部分分做法忘记讨论n<=2000时的情况,少得了30pts 很容易得到一个基 ...
- EZ 2018 04 06 NOIP2018 模拟赛(七)
我是链接 这次是真的惨,码了将近2hours的可持久化线段树炸掉了! 而且本地拍了一万年也没发现哪里炸了. T1 压位的入门题,话说这道题能拿个99分就可以了(100分要FFT) 对于暴力,就是暴力找 ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- EZ 2018 06 24 NOIP2018 模拟赛(二十)
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...
- EZ 2018 06 02 NOIP2018 模拟赛(十七)
这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...
- EZ 2018 05 26 NOIP2018 模拟赛(十六)
这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...
- EZ 2018 05 20 NOIP2018 模拟赛(十五)
这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...
随机推荐
- Flutter之搜索电影
搜索使用的是豆瓣电影API https://developers.douban.com/wiki/?title=movie_v2#subject 效果 代码: https://github.com/z ...
- Cobalt Strike 学习
前言 本文以一个模拟的域环境为例对 Cobalt Strike 的使用实践一波. 环境拓扑图如下: 攻击者(kali) 位于 192.168.245.0/24 网段,域环境位于 192.168.31. ...
- oracle学习之pl/sql使用==转载
PLSQL循序渐进全面学习教程(全):https://blog.csdn.net/spark998/article/details/2065269
- LeetCode 题解之 Positions of Large Groups
1.题目描述 2.问题分析 从头遍历字符串,使用一个局部迭代器和局部变量记录该字符个数.如果个数>= 3 ,则将此时的迭代器位置和局部迭代器的位置保存到局部vector中.再将这个局部vecto ...
- Python环境下如何安装爬虫需求的一些库
是在CMD环境下的: request库pip install request 回车 pandas库 同理,pip install pandas :这里需要声明下,这个是不一定成功的,刚入门稍微看了一点 ...
- pages bookmarks for machine learning domain
http://www.ai-start.com/dl2017/html/lesson4-week2.html 达叔深度学习笔记 http://cs231n.github.io/convolution ...
- 新建maven工程使用webapp插件弹出javax.servlet.http.HttpServlet was not found on the Java Build Path异常
检查pom.xml文件中是否引用javax.servlet,引用如下所示:
- SQL Server 请求失败或服务未及时响应。有关详细信息,请参见事件日志或其它适合的错误日志
在打开数据库的时候,突然出现异常错误,然后我去关闭sql server 服务,然后重启服务的时候,不能重启,出现以下错误 “请求失败或服务未及时响应.有关详细信息,请参见事件日志或其它适合的错误日志” ...
- 转:C# 深入理解堆栈、堆在内存中的实现
尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(GarbageCollection),但是我们还是应该了解它们,以优化我们的应用程序.同时,还需要具备一些基础的内存管理工作机制 ...
- load file within a jar
String examplejsPrefix = "example"; String examplejsSuffix = "js"; String exampl ...