SRM551 Div1Medium ColorfulWolves
来源:互联网 发布:济宁淘宝代运 编辑:程序博客网 时间:2024/05/18 00:56
【分析】
题目有点奇怪,你必须先多模拟几次样例才会知道这是什么意思。
首先我们考虑从颜色i到颜色j所需要的最小花费是多少。这个应该比较简单,代价应该是对于切到[0,j-1]的“Y”的个数cnt。(因为如果考虑那些某些奇奇怪怪的切换方式,不会写)
那么dis[i][j]=cnt。
接下来一次Folyd就完成了。
【代码】
#include <bits/stdc++.h>using namespace std;#define M 55#define oo 1e9char str[M][M];int dis[M][M];int n;int main(){ scanf("%d",&n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++)dis[i][j]=oo; } for(int i=0;i<n;i++){ scanf("%s",str[i]); int w=0; for(int j=0;j<n;j++){ if(str[i][j]=='Y')dis[i][j]=w++; } } for(int k=0;k<n;k++){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]); } } } if(dis[0][n-1]==oo)dis[0][n-1]=-1; printf("%d\n",dis[0][n-1]); return 0;}
其实考虑整个大问题的时候当然会有点无从下手,但是你可以自己多问一些问题,然后试着解决它。如果运气好的话,整个大问题就迎刃而解了。
1 1
- SRM551 Div1Medium ColorfulWolves
- SRM551 Div1Medium ColorfulWolves
- SRM551
- SRM 551 - 450 ColorfulWolves
- SRM551 题解(T3 除外)
- SRM548 Div1Medium KingdomAndDice
- SRM573 Div1Medium Ski Resorts
- SRM574 Div1Medium PolygonTraversal
- SRM579 Div1Medium TravellingPurchasingMan
- SRM588 Div1Medium KeyDungeonDiv1
- SRM589 Div1Medium GearsDiv1
- SRM554 Div1Medium TheBrickTowerMediumDivOne
- SRM548 Div1Medium KingdomAndDice
- SRM593 Div1Medium MayTheBestPetWin
- SRM573 Div1Medium Ski Resorts
- SRM579 Div1Medium TravellingPurchasingMan
- SRM588 Div1Medium KeyDungeonDiv1
- SRM589 Div1Medium GearsDiv1
- 【洛谷P3708】koishi的数学题
- 数组的知识点汇总
- 创建XML文件
- Mybatis缓存
- 【Java】简介
- SRM551 Div1Medium ColorfulWolves
- SMOTE算法(人工合成数据)
- File类知识点整理
- Update a Dictionary map
- poj 1852 Ants
- 2017.4.17学习
- Web基础之JavaScript实战
- Node.js编程
- 【个人笔记重点,不作为参考】主题:面向对象的程序设计