这个题就是搜索+剪枝,,但有一些剪枝的方法是值得借鉴的:

1、最优性剪枝:

①当前答案 与 当前距离的比较

②当前距离+最短路 与 当前答案的比较

2、可行性剪枝:

①终点肯定要走,与终点相斥或相同的都直接剪掉

3、玄学卡过:

一般出题人卡正搜但不卡倒搜,所以一般搜索题倒搜或双向搜。。

码:

#include<iostream>
#include<cstdio>
using namespace std;
#include<cstring>
int n,k,m,s,t,tu[150][150],ans=1e9,wh[150],xue[150],i,j,x,y,z,xia[150][150];
bool zou[150],dui[150][150];void dfs(int now,int juli)
{  if(juli>=ans)return;if(now==s){   ans=min(ans,juli);        return ;    }int i,j;bool keyi;for(i=1;i<=n;i++){  if(tu[now][i]>1e7||zou[i]||xue[wh[i]])continue; keyi=1;for(j=1;j<=k;j++)if(dui[i][j]&&xue[j]){keyi=0;break;}if(!keyi)continue;xue[wh[i]]++;zou[i]=1;dfs(i,juli+tu[now][i]);xue[wh[i]]--;zou[i]=0;    }}int main()
{scanf("%d%d%d%d%d",&n,&k,&m,&s,&t);for(i=1;i<=n;i++)scanf("%d",&wh[i]);memset(tu,0x7f,sizeof(tu));for(i=1;i<=k;i++)for(j=1;j<=k;j++)cin>>dui[i][j];for(i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);tu[x][y]=tu[y][x]=min(tu[x][y],z);}for(i=1;i<=k;i++)
for(j=1;j<=k;j++)
{if(dui[i][j])dui[j][i]=1;
}zou[t]=1;xue[wh[t]]=1;dfs(t,0);if(ans==1e9)printf("-1");else printf("%d",ans);
}

2017.5.8 文化之旅 思考记录相关推荐

  1. 2017.10.5 最短母串 思考记录

    这个题n<=15,可以用10表示选取情况下的最优值 预处理两个串之间的连接关系,然后枚举状态转移 然而这个题还要输出方案,,而且还不让你开空间. 所以只能记录前继动态判断.. 所以十分难写难调 ...

  2. 2017.9.26 块的计数 思考记录

    这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...

  3. 2017.8.8 魔兽地图DotR 思考记录

    假题害人..  明明说了是一棵树,却还要强行加一组坑爹数据   所以网上的题解挂了好多 这题是很综合的树上背包问题. 由依赖关系转化为一些枚举来跑多重背包 由于是 "一棵树" 所以 ...

  4. 2017.3.25 魔术球问题 思考记录

    这个题还是不难的..(想了20分钟就出完解) 二分+网络流检验,,能加在上面的数大的向小的连边 总点数-最大匹配>n    :{l=mid+1,      记录答案       } else   ...

  5. 2017.10.23 chess 中国象棋 思考记录

    这种题的一般解法: 1. 发现状压可以搞,然后发现状态爆炸 2.考虑状态特点,一共只有几种可能的状态 3.考虑可不可以只对状态进行计数 4.离散统计贡献 码: #include<iostream ...

  6. 2017.10.19 起床困难综合征 思考记录

    2333noi送分题 首先暴力试每个数有些二进制位是会重复算的,,所以就考虑能否把每个二进制位独立考虑 老性质:二进制运算每一位独立 所以二进制dp,如果这一位输入1,是多少,输入0,是多少 然后按二 ...

  7. 2017.10.11 network 网络扩容 思考记录

    第一问是网络流. 第二问是费用流,但之前的边依然是可以用的,所以每个点决策:用原来的流量    购买一条流量,扫每条边加进去就可以了 然后限制流出为k 码: #include<iostream& ...

  8. 2017.10.7 弹飞绵羊 思考记录

    ..这个题根据弹后的关系是很容易想出一个森林的..修改连接关系就是cut和link.. 但是分块的做法似乎十分优越,,好写好调.所以学一下分块的写法 首先每一个区间的信息都是可以做到O(1)查询的.. ...

  9. 2017.10.1 互不侵犯king 思考记录

    ..没想到做的这么顺利 首先n<=⑨.. 所以状压这个⑨ 然后枚举状态转移累加即可 f[行数][最上层排布情况][已经用了几个] 最后    Σf[n][i][k]   0<=i<2 ...

最新文章

  1. ansible 详解
  2. RPC协议之争和选型要点
  3. 字符串拷贝函数memcpy()、strncpy()和snprintf()性能之比较
  4. 20201014 《人工智能与大数据》第1节课 笔记
  5. docker 服务器engin开放2376端口给pycharm连接
  6. 干货!全面认识Docker和基本指令
  7. windows 系统nginx做反向代理实例
  8. Celery参数详解、配置参数
  9. 记dropbox与git不和谐的一个问题
  10. Mybatis3 源码解析系列
  11. CentOS系统找回MySQL数据库root登录密码
  12. WPF学习拾遗(三)TextBox焦点问题
  13. 利用python处理pdf文本,帮我省下不少钱
  14. ev3无需使用计算机编程,Legoev3机器人怎么编程.docx
  15. 大家谈之《区块链大革命》
  16. 记者求证北京将禁止外地车和外地人员从事网约车传闻
  17. TextView 的 StaticLayout,比你想象中复杂点!
  18. Mysql数据库学习笔记[完结]
  19. 什么是集体户口,优势、劣势
  20. 录屏,webm格式转gif的小技巧

热门文章

  1. div固定在浏览器顶部_关于浏览器的兼容问题
  2. Activity的属性taskAffinity
  3. 工作笔记-新系统安装deb文件失败
  4. eclipse下安装Tomcat
  5. python rename dataframe,python rename dataframe_python – 重命名Pandas DataFra
  6. Spark机器学习库MLib分类和回归文档V1.4.1(翻译)
  7. ipa解包打包工具_ios打包ipa的四种实用方法(.app转.ipa)
  8. java正则匹配双字节_Java 正则表达式详解(二)
  9. 计算机表演赛vr创意大赛,计算机表演赛新增VR创意大赛
  10. windows中安装64位MySQL及连接MySQL和重置MySQL密码