SRM573 Div1Medium Ski Resorts
来源:互联网 发布:数据库软件工程师考试 编辑:程序博客网 时间:2024/06/05 16:43
【分析】
修改,我比较讨厌这个词。
有没有什么贪心的做法?不知道啊。
要改成什么?
问题好像走进了死胡同。我们唯一知道的就是这个点原来的特征值。枚举一下改成它们?试一试吧!
定义dis[i][j]为将i的特征值改成j的特征值。
接下来直接一遍Dijkstra带走!!!
其实我也知道这样说服不了你们。你其实可以模拟一下特征值为:10 20 10(i和i+1相连)
它的答案应该是10,无论将10、20改成15、15还是将将10、20改成16、16,答案都不会变,那我们何不妨将特征值改成我们已知的。
我知道这还是说服不了你们……
这TM其实就是玄学!你要揣摩出题者的意图!一定这样的没错!
【代码】
#include <bits/stdc++.h>#define ll long long#define oo 1e15#define M 55using namespace std;ll dis[M][M],ans=oo;vector<int>st[M];char str[M][M];bool mk[M][M];int n,m,w[M];struct node{ int pre,now; ll co; bool operator<(const node &a)const{ return co>a.co; }};priority_queue<node>q;void Dij(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)dis[i][j]=oo; } while(!q.empty())q.pop(); for(int i=1;i<=n;i++){ node tmp; tmp.pre=1; tmp.now=i; tmp.co=dis[1][i]=abs(w[i]-w[1]); q.push(tmp); } while(!q.empty()){ node tmp=q.top(); q.pop(); int pre=tmp.pre; int now=tmp.now; ll co=tmp.co; if(mk[pre][now])continue; mk[pre][now]=1; for(int i=0;i<st[pre].size();i++){ int nxp=st[pre][i]; for(int j=1;j<=n;j++){ int nxn=j; if(mk[nxp][nxn])continue; if(w[now]>=w[nxn]){ ll v=abs(w[nxn]-w[nxp]); if(dis[nxp][nxn]>co+v){ tmp.pre=nxp; tmp.now=nxn; tmp.co=dis[nxp][nxn]=co+v; q.push(tmp); } } } } }}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%s",str[i]+1); for(int j=1;j<=n;j++){ if(str[i][j]=='Y')st[i].push_back(j); } } for(int i=1;i<=n;i++)scanf("%d",&w[i]); Dij(); for(int i=1;i<=n;i++)ans=min(ans,dis[n][i]); if(ans==oo)puts("-1"); else cout<<ans<<endl; return 0;}
2 0
- SRM573 Div1Medium Ski Resorts
- SRM573 Div1Medium Ski Resorts
- SRM573 Div1
- TC SRM573 div2 p1000
- poj1088 Ski
- SRM548 Div1Medium KingdomAndDice
- SRM551 Div1Medium ColorfulWolves
- SRM574 Div1Medium PolygonTraversal
- SRM579 Div1Medium TravellingPurchasingMan
- SRM588 Div1Medium KeyDungeonDiv1
- SRM589 Div1Medium GearsDiv1
- SRM554 Div1Medium TheBrickTowerMediumDivOne
- SRM548 Div1Medium KingdomAndDice
- SRM551 Div1Medium ColorfulWolves
- SRM593 Div1Medium MayTheBestPetWin
- SRM579 Div1Medium TravellingPurchasingMan
- SRM588 Div1Medium KeyDungeonDiv1
- SRM589 Div1Medium GearsDiv1
- nswoj-zb的生日
- Java I/O流(二)——File,Properties,PrintWriter,IO ,RandomAccessFile,ByteBuffer,nio
- 位运算的理解
- javaScript数据类型
- vuejs2和echarts3组合显示图表
- SRM573 Div1Medium Ski Resorts
- 二分查找
- Android图片加载框架最全解析(四),玩转Glide的回调与监听
- 2017 Wuhan University Programming Contest 现场赛G. Room(set+思路)
- AS中jar包冲突解决方案
- Unity3d学习 基础-关于MonoBehaviour的生命周期
- 递归算法遍历文件夹中所有文件
- Tomcat配置理解
- Xamarin android沉浸式状态栏