【GDKOI2016】不稳定的传送门Code&Details
来源:互联网 发布:excel可视化数据分析 编辑:程序博客网 时间:2024/06/05 01:10
Details
其实细节并不是很多。
因为我们要倒着做,所以直接给连出去的所有边的那一段排一个序就好了。
一开始我们的所有边按照起点的序号排序,那么我们就可以直接排序那一段了。
我们的起点a,用ll[a],rr[a]存它连出去的边排序之后的两个端点,那么我们就可以排序这一段了。
Code
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)using namespace std;const int maxn=100005;int i,j,k,t,n,m,ans,num;int l[maxn*2],r[maxn*2];double f[maxn*2];struct node{ int a,b,c; double p,zhi;}bian[maxn*2];bool cmp(node x,node y){ return x.a<y.a;}bool cmp1(node x,node y){ return x.zhi>y.zhi; }int main(){ scanf("%d%d",&n,&m); fo(i,1,n-1){ num++; scanf("%d",&bian[num].c); bian[num].p=1;bian[num].a=i;bian[num].b=i+1; } fo(i,1,m){ num++; scanf("%d%d%lf%d",&bian[num].a,&bian[num].b,&bian[num].p,&bian[num].c); } sort(bian+1,bian+num+1,cmp); j=0; fo(i,1,num+1){ if(bian[i-1].a!=bian[i].a){ r[j]=i-1; j++; l[j]=i; } } fod(i,n,1){ double p=1; fo(j,l[i],r[i])bian[j].zhi=bian[j].p/(bian[j].c+bian[j].p*f[bian[j].b]); if (l[i]<=r[i])sort(bian+l[i],bian+r[i]+1,cmp1); fo(j,l[i],r[i]){ f[i]+=p*(f[bian[j].b]*bian[j].p+bian[j].c); p=p*(1-bian[j].p); } } printf("%.2f\n",f[1]);}
1 0
- 【GDKOI2016】不稳定的传送门Code&Details
- [GDKOI2016]不稳定的传送门
- [GDKOI2016]不稳定的传送门
- GDKOI2016 Day1 T2 不稳定的传送门
- [GDKOI2016] Day1 不稳定的传送门 结论
- 【GDKOI2016】寻宝Code&Details
- 【GDKOI2016】项链Code&Details
- 【GDKOI2016】染色大战 Code&Details
- 【GDKOI2016】魔卡少女Code&&Details
- 【GDKOI2016】QT与泰剧Code&Details
- GDKOI2016Day1第二题 不稳定的传送门 解题报告
- GDKOI2016
- 传送门的一对多点传送程序
- 飞花的传送门
- CODE 39: Submission Details
- deeplearning资料的传送门
- 一个万能的传送门
- 一个万能的传送门
- django python3 使用mysql
- Android Studio -修改LogCat的颜色
- 网站代码该如何优化?
- 多个数的最小公倍数
- cocos2dx 定时器
- 【GDKOI2016】不稳定的传送门Code&Details
- System.AccessViolationException: 尝试读取或写入受保护的内存
- C++的一维数组和二维数组
- Linux 安装jdk和配置
- 【POJ 2778】DNA Sequence 中文题意&题解&代码(C++)
- Pyhton执行shell
- 记忆化搜索
- 蓝桥杯 分糖果
- JION,LEFT JION RIGHT JION FULL JION 联系与区别