【NOIP2017】Day6
来源:互联网 发布:韦德体测数据 编辑:程序博客网 时间:2024/06/09 18:22
Solution
T1:
设f[i][j]为i张牌,j张黑牌的期望张数,
T2:
最难的一题(我觉得),首先这是一道DP,但最好要转化,
令
T3:
分数规划?vscode1183类似,二分+最短路pd,这道题目是拓扑图,可以用类似DP的方法O(n+m)求解,注意这里已有一个起点(我考试时多此一举了)
CODE
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int n,m;int main(){ freopen("draw.in","r",stdin); freopen("draw.out","w",stdout); while (scanf("%d%d",&n,&m)!=EOF) { printf("%.4f\n",(double)m/(double)(n-m+1)); } return 0;}
#include <cstdio>#include <algorithm>#include <iostream>#include <cmath>#include <cstring>using namespace std;const int MAXN=50;int dp[MAXN][MAXN][MAXN][MAXN];bool b[MAXN][MAXN];char str[MAXN];int n,m;int find(int x1,int y1,int x2,int y2){ if (x1==x2 && y1==y2) return 0; if (x1>x2 || y1>y2) return 0x3f3f3f3f; if (dp[x1][y1][x2][y2]!=0x3f3f3f3f) return dp[x1][y1][x2][y2]; int ans=0x3f3f3f3f,tmp; tmp=find(x1+1,y1,x2,y2); for (int i=y1;i<=y2;i++) if (b[x1][i]) tmp+=max(x2-x1,max(i-y1,y2-i)); ans=min(ans,tmp); tmp=find(x1,y1,x2-1,y2); for (int i=y1;i<=y2;i++) if (b[x2][i]) tmp+=max(x2-x1,max(i-y1,y2-i)); ans=min(ans,tmp); tmp=find(x1,y1+1,x2,y2); for (int i=x1;i<=x2;i++) if (b[i][y1]) tmp+=max(y2-y1,max(i-x1,x2-i)); ans=min(ans,tmp); tmp=find(x1,y1,x2,y2-1); for (int i=x1;i<=x2;i++) if (b[i][y2]) tmp+=max(y2-y1,max(i-x1,x2-i)); ans=min(ans,tmp); dp[x1][y1][x2][y2]=ans; return ans;}void ReadInfo(){ memset(dp,0x3f,sizeof(dp)); scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { scanf("%s",str+1); for (int j=1;j<=m;j++) if (str[j]=='Y') b[i+j][i-j+m]=true; } }int main(){ freopen("flag.in","r",stdin); freopen("flag.out","w",stdout); ReadInfo(); cout<<find(2,1,n+m,n-1+m)<<endl; return 0; }
#include <cstdio>#include <algorithm>#include <iostream>#include <cmath>#include <cstring>using namespace std;const double eps=1e-6;const int MAXN=20010,MAXM=400010;int Head[MAXN],tp[MAXN];double dis[MAXN];int n,m,tot,maxw,mint;struct Edge{ int v,t,w,next;}edge[MAXM];void add_edge(int x,int y,int z,int w){ edge[++tot]=(Edge){y,z,w,Head[x]}; Head[x]=tot;}void ReadInfo(){ tot=0; mint=0x3f3f3f3f; maxw=-1; scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { int x,y,z,w; scanf("%d%d%d%d",&x,&y,&z,&w); add_edge(x,y,z,w); mint=min(mint,z); maxw=max(maxw,w); }}bool pd(double x){ for (int i=1;i<=n;i++) dis[i]=-1e20; dis[1]=0; for (int i=1;i<=n;i++) for (int j=Head[i];j;j=edge[j].next) { int v=edge[j].v,t=edge[j].t,w=edge[j].w; double ww=w-x*t; if (dis[v]<dis[i]+ww) dis[v]=dis[i]+ww; } if (dis[n]+eps>=0) return true; else return false;}void solve(){ double l,r,mid; l=0; r=(double)maxw/(double)mint; while (r-l>eps) { mid=(l+r)/2; if (pd(mid)) l=mid; else r=mid; } printf("%.4f\n",l); }int main(){ freopen("treasure.in","r",stdin); freopen("treasure.out","w",stdout); ReadInfo(); solve(); return 0;}
阅读全文
0 0
- 【NOIP2017】Day6
- day6
- Day6
- day6
- DAY6
- Day6
- DAY6
- Day6
- day6
- DAY6
- DAY6
- day6
- Day6
- day6
- day6
- Day6
- DAY6
- noip2017
- Python-web: Flask 应用、数据库查询数据、API接口
- Xor Sum HDU
- POJ2251 Dungeon Master 三维BFSmd
- JfreeChart 生成图表-雷达图
- Android进阶--android自动化测试python+uiautomator
- 【NOIP2017】Day6
- JZOJ3418. 【NOIP动态规划专题】选课(2017.8DP&贪心专题)
- 8月9日总结
- 守护进程的实现
- HttpClient
- bean依赖注入错误:Error creating bean with name 'itemService': Injection of autowired dependencies failed
- mysql数据类型
- 在Unity3D中使用Visual Studio调试shader
- HDU 1241 Oil Deposits DFS求连通块