2017.5.8 文化之旅 思考记录
这个题就是搜索+剪枝,,但有一些剪枝的方法是值得借鉴的:
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 文化之旅 思考记录相关推荐
- 2017.10.5 最短母串 思考记录
这个题n<=15,可以用10表示选取情况下的最优值 预处理两个串之间的连接关系,然后枚举状态转移 然而这个题还要输出方案,,而且还不让你开空间. 所以只能记录前继动态判断.. 所以十分难写难调 ...
- 2017.9.26 块的计数 思考记录
这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...
- 2017.8.8 魔兽地图DotR 思考记录
假题害人.. 明明说了是一棵树,却还要强行加一组坑爹数据 所以网上的题解挂了好多 这题是很综合的树上背包问题. 由依赖关系转化为一些枚举来跑多重背包 由于是 "一棵树" 所以 ...
- 2017.3.25 魔术球问题 思考记录
这个题还是不难的..(想了20分钟就出完解) 二分+网络流检验,,能加在上面的数大的向小的连边 总点数-最大匹配>n :{l=mid+1, 记录答案 } else ...
- 2017.10.23 chess 中国象棋 思考记录
这种题的一般解法: 1. 发现状压可以搞,然后发现状态爆炸 2.考虑状态特点,一共只有几种可能的状态 3.考虑可不可以只对状态进行计数 4.离散统计贡献 码: #include<iostream ...
- 2017.10.19 起床困难综合征 思考记录
2333noi送分题 首先暴力试每个数有些二进制位是会重复算的,,所以就考虑能否把每个二进制位独立考虑 老性质:二进制运算每一位独立 所以二进制dp,如果这一位输入1,是多少,输入0,是多少 然后按二 ...
- 2017.10.11 network 网络扩容 思考记录
第一问是网络流. 第二问是费用流,但之前的边依然是可以用的,所以每个点决策:用原来的流量 购买一条流量,扫每条边加进去就可以了 然后限制流出为k 码: #include<iostream& ...
- 2017.10.7 弹飞绵羊 思考记录
..这个题根据弹后的关系是很容易想出一个森林的..修改连接关系就是cut和link.. 但是分块的做法似乎十分优越,,好写好调.所以学一下分块的写法 首先每一个区间的信息都是可以做到O(1)查询的.. ...
- 2017.10.1 互不侵犯king 思考记录
..没想到做的这么顺利 首先n<=⑨.. 所以状压这个⑨ 然后枚举状态转移累加即可 f[行数][最上层排布情况][已经用了几个] 最后 Σf[n][i][k] 0<=i<2 ...
最新文章
- ansible 详解
- RPC协议之争和选型要点
- 字符串拷贝函数memcpy()、strncpy()和snprintf()性能之比较
- 20201014 《人工智能与大数据》第1节课 笔记
- docker 服务器engin开放2376端口给pycharm连接
- 干货!全面认识Docker和基本指令
- windows 系统nginx做反向代理实例
- Celery参数详解、配置参数
- 记dropbox与git不和谐的一个问题
- Mybatis3 源码解析系列
- CentOS系统找回MySQL数据库root登录密码
- WPF学习拾遗(三)TextBox焦点问题
- 利用python处理pdf文本,帮我省下不少钱
- ev3无需使用计算机编程,Legoev3机器人怎么编程.docx
- 大家谈之《区块链大革命》
- 记者求证北京将禁止外地车和外地人员从事网约车传闻
- TextView 的 StaticLayout,比你想象中复杂点!
- Mysql数据库学习笔记[完结]
- 什么是集体户口,优势、劣势
- 录屏,webm格式转gif的小技巧
热门文章
- div固定在浏览器顶部_关于浏览器的兼容问题
- Activity的属性taskAffinity
- 工作笔记-新系统安装deb文件失败
- eclipse下安装Tomcat
- python rename dataframe,python rename dataframe_python – 重命名Pandas DataFra
- Spark机器学习库MLib分类和回归文档V1.4.1(翻译)
- ipa解包打包工具_ios打包ipa的四种实用方法(.app转.ipa)
- java正则匹配双字节_Java 正则表达式详解(二)
- 计算机表演赛vr创意大赛,计算机表演赛新增VR创意大赛
- windows中安装64位MySQL及连接MySQL和重置MySQL密码