2017.9.11 海拔 思考记录
对于网络流熟练的玩家来说就是送分题
每一个点不是0就是1,这分类讨论一下就能证明、
然后0和1一定是有一定的界限,相当于把图分成两半、
所以应该很自然地想到了划分集合的方法
用网络流的花就是最小割、
于是推了半天,才推出来:
‘’
然后因为是方格,所以需要对偶图最短路
建出来的这个网络流显然没法跑最短路
所以考虑原图
每两个点两个方向的流量可以转化为最短路图中边的方向 (也想了好久)
然后就可以了过了
(其实最好写堆优dijkstra,spfa易被卡 然鹅bzoj总时限、)
然后要注意打完代码无论如何都要用眼睛看一遍
最后一组边的读入直接注释掉了 有40,而且对拍极限数据半天才出错、
码:
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
queue<int>q;
#define inf 1000000009
#define N 9000000
int tot,hou[N],xia[N],zhong[N],v[N],x,n,s,t,i,j,dis[N];
bool vis[N];
void jia(int a,int b,int c)
{
++tot,hou[tot]=xia[a],xia[a]=tot,zhong[tot]=b,v[tot]=c;
}
int spfa()
{int i;for(i=1;i<N;i++){dis[i]=inf; }q.push(s); dis[s]=0; while(!q.empty()){int st=q.front();q.pop();vis[st]=0;for(i=xia[st];i!=-1;i=hou[i]){int nd=zhong[i];if(dis[nd]>dis[st]+v[i]){dis[nd]=dis[st]+v[i];if(!vis[nd]){vis[nd]=1;q.push(nd);} }}}return dis[t];
}
int main()
{memset(xia,-1,sizeof(xia));scanf("%d",&n);s=(n+2)*(n+1)+1;t=n+2;for(i=1;i<=n+1;i++){for(j=2+i*(n+2);j<=2+i*(n+2)+n-1;j++){scanf("%d",&x); jia(j,j-n-2,x);}}for(i=1;i<=n;i++){for(j=1+(n+2)*i;j<1+(n+2)*i+(n+1);j++){scanf("%d",&x); jia(j,j+1,x);}} for(i=1;i<=n+1;i++){for(j=2+(i)*(n+2);j<=2+(i)*(n+2)+n-1;j++){scanf("%d",&x); jia(j-n-2,j,x);}}
for(i=1;i<=n;i++){for(j=1+(n+2)*i;j<1+(n+2)*i+(n+1);j++){scanf("%d",&x); jia(j+1,j,x);}}for(i=2;i<=n+1;i++)jia(i,t,0);for(i=2*(n+2);i<(2+n)*(n+2);i+=n+2)jia(i,t,0);for(i=1+(n+2);i<(n+1)*(n+2);i+=n+2)jia(s,i,0);for(i=2+(n+1)*(n+2);i<(n+2)*(n+2);i++)jia(s,i,0);
printf("%d",spfa());
}
2017.9.11 海拔 思考记录相关推荐
- 2017.9.5 组合数学 思考记录
这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...
- 2017.9.4 Nim 思考记录
只要知道nim的结论 这题就是链剖板子题.1A 注意bzoj 的 换行符是 \r!! \r!! \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...
- 2017.10.28 排序 思考记录
这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...
- 2017.10.28 压缩 思考记录
这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd = abRRcdcdcdcdR != Ma ...
- 2017.10.6 单词 思考记录
少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...
- 2017.10.5 高速公路 思考记录
..一开始死活不知道样例8/3是怎么算出来的.. 后来才发现右端点要-1.. 这个题说是期望,但因为每个点的概率相同,所以直接求和然后除就可以了 维护每个区间的答案,听说直接维护答案很难写,,感觉还可 ...
- 2017.10.1 蚯蚓 思考记录
现在看来这个题真心不难. 如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的 由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的 所以就sor ...
- 2017.9.28 产品加工 思考记录
很早之前做的了.发现bzoj上竟然没提交过 于是又重推了一遍 首先这个ti<=5是用来让n^2的复杂度降一降的, 然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个 ...
- 2017.9.28 降雨量 思考记录
论逻辑清晰的重要性. 首先大小的关系明摆着是要你建一颗线段树 然后就可以分类讨论了 x没有 y有 x有 y没有 x没有 y没有 x有 y有 对于都没有的情况 只可能是maybe 对于一个没有的情况, ...
最新文章
- seaborn箱图(box plot)可视化、并且在箱图中使用三角形标注均值的位置(showmeans=True)
- [javaSE] 多线程(守护线程)
- python文件无法关闭_Python脚本无法正常终止
- Java设计模式之迭代器模式
- mysql计算相邻的差值_MySQL如何计算相邻两行某列差值
- 趣味概率问题:脑洞蒙特卡洛模型,来招聘!!!
- 取消360导航作为浏览器访问首页
- Tracup|使用项目管理软件帮助战胜拖延症
- 主机耳机没声音win10
- 同学聚会,进行点菜,点了大盘鸡 水煮鱼 大虾 以及4个凉菜 1箱啤酒 分别录入各个单价,并计算总价,录入总学生数,计算人均多少钱。
- Python字符串格式化
- 从钉钉后台对接考勤打卡信息(仅供参考)
- 微服务时代之2017年五军之战
- Arduino基础篇(二)-- 常用的基本函数
- Android Studio如何查看自己创建的SQLite数据库
- Unity3D Content Size Fitter的坑
- 多媒体计算机设计原则,多媒体课件的设计原则
- Unity3D播放音频数组的问题
- ThinkPHP根据时间显示不同的问候语
- ORACLE EBS
热门文章
- SpringBoot和监控管理
- Theory and tools for the conversion of analog to spiking convolutional neural networks
- 【汇总】pytorch里的一些函数
- Win10 Ubuntu子系统用户密码忘记解决方案
- python fun函数、求4x4整型数组的主对角线元素的和_python中多维数组中列major的numpy整形...
- 坐标轨迹计算_机器人的轨迹规划与自动导引
- int 为什么是2147483647_现在的C语言编辑器里的int范围为什么是-2147483648~2147483647...
- HTML基础知识点(1)
- python编程语言模块_Python基础编程常用模块汇总
- mysql 存储过程 模糊查询_mysql 分页创建存储过程并实现模糊查询