F种食物 D种饮料 每个人只需要一份食物和一份饮料 但每个人都有自己的喜好 问你当前的储备最多能满足多少人的需求
一开始读错题意了…不是需要给每个人提供所有喜欢的食物或者饮料 只要某一种提供一份就够了 这就变成很基础的网络流了…
源点连食物 容量就是食物容量 饮料连汇点 容量是饮料容量 食物连人如果这个人喜欢 人连饮料一样是如果喜欢 这些容量都是1 最大流即可
我这里把人习惯性的拆开来了…实际上不拆似乎也可以?对不起想错了 为了限制每个人只花费一份必须拆
ac代码
1 |
|
无知 无求
F种食物 D种饮料 每个人只需要一份食物和一份饮料 但每个人都有自己的喜好 问你当前的储备最多能满足多少人的需求
一开始读错题意了…不是需要给每个人提供所有喜欢的食物或者饮料 只要某一种提供一份就够了 这就变成很基础的网络流了…
源点连食物 容量就是食物容量 饮料连汇点 容量是饮料容量 食物连人如果这个人喜欢 人连饮料一样是如果喜欢 这些容量都是1 最大流即可
我这里把人习惯性的拆开来了…实际上不拆似乎也可以?对不起想错了 为了限制每个人只花费一份必须拆
ac代码
1 | #include <cstdio> |
思路蛮简单的 一看就是二分的问题 但是处理种种细节 各种边界条件…奇偶数判断等等…
自己写出了种种问题…还是看了看官方题解…牛(
1 | class Solution { |
本来读完题面以为是简单的网络流模板题…只是疑惑了一下为什么点的范围…这么大…然后发现常用的网络流板子过不去…
本来以为是vector初始化太慢了我强行改成手动管理..依旧t了
后来查了题解才明白这是需要另外一种算法…sap算法来优化网络流问题…过题的代码基本是按照题解来的就没啥可放的了…
超时代码
1 | #include <cstdio> |
既然是子串…我第一个想到的就是简单尺取法了…过一遍O(n)的性能…简单写了写也就ac了
过了以后发现这种经典问题有更简单的思路…当看到重复的时候其实以及可以知道到重复位置以前的最长长度已知…可以直接跳到重复字符的下一位置…
我的代码如下
1 | class Solution { |
简单的网络流问题 p个产电 c个费电 m条边 多源点多汇点问题 增加超级源点和超级汇点 超级源点向产电连边值即为产电值
费电单位向超级汇点连边值即为费电值 其余m条边直接相连即可 跑一下最大流就是结果了。。。
AC代码
1 | #include <cstdio> |
除了做做ACM的题,也会没事刷刷leetcode的题感受一下 这里主要是对比自己的写法与其他人更好的写法之间的差异 后面有可能会尝试其他语言来完成题目?
题目意思清晰直白 只存储某位的链表逆序相加得到新链表
写的时候才会考虑到很多细节问题 进位是最容易想到的问题 还有两个链表长度不一致的问题 以及最后提交才发现的可能存在单纯由于进位导致长度增加的问题
刷leetcode感觉就是算法层面的并不是特别复杂 工业应用的也往往是这种简单的逻辑 但要考虑到种种细节…细桀(
代码如下
1 | /** |
好长时间没更新了哈…前段时间有点忙 后面没事的时候开始更新写写题
很长时间没读英文题面了还有点不适应…题目大意是有n个店员m个仓库k种商品
每个店员需求不同的商品,从不同的仓库调花费也各不相同,问可能的调度中花费最小的,没有则-1
感觉是很普遍的费用流例题,不过也是好长时间不写了…
给了费用矩阵肯定是k种商品每种的n和m之间的全连接写花费,同时为了限制流量店员和仓库都要拆成两个点之间的边就是仓库的容量限制或者店员的商品需求
仔细想了一下发现不太会判断最小费用流的最大流是否满足需求,后来想想可以用限制店员的边来看是否达到要求
写的时候意识到其实不需要拆点,每种商品对应的仓库和店员是分开的已经可以达成要求了
第一遍把所有商品一块计算…tle 后来参考了一下其他人的做法 每个商品分别作为一个小图来计算…会快很多
AC代码
1 | #include <cstdio> |
那我们就算正式开始尝试了,为了有一个开头,我翻了一下youtube发现还是有相关教程的,所以前期的几篇大概会通过看教程模仿再加入一些自己的改进
有用的资源
这里建议在看教程模仿的时候调用的方法都去api文档里查一查,一是能够更加熟悉函数,二是教程不可避免地有些老了,有的方法已经被更换建议按照api中的新接口来使用。比如查看携带的资源现在统一为一个store对象了
写下这篇文章的时候我看完了教程的前六段,首先类似地,我们将creep分成了几类,harvester,upgrader,builder,repairer,它们分别做的事情也非常显然
目前的逻辑有的几个问题
与教程不同的是,由于存在creep发现自己的事情已经做完的情况下可以去做其他creep的工作,但是直接引用会导致很大的重复代码运行,所以我加入了rolehandle模块负责统一处理各种creep共同的问题而将每种creep的role精简了许多
1 | var roleharvester=require('./roleharvester'); |
1 | var rolebuilder=require('./rolebuilder'); |
另外一段处理就是spwan的处理了,当前的处理很简单,当spawn能量够时看缺乏哪种creep按需生产即可
下一步的计划首先是根据RCL以及当前拥有的能量生产适当的creep,尽量做到能够根据RCL情况以及实际能量来生产,而后可能的话开始尝试实现一些简单的自动建筑?
中文文档真的是好用嗷
编程游戏,对我胃口嗷
为了能够在世界服里有一个比较好的开端,我打算先在自己的服务器上跑私有客户端(感谢阿里云学生服务器),在服务器上做一个比较完善的尝试后再上世界服
按照文档说的方法
装好一系列的环境 node.js MongoDB Redis…
注意 文档里给的node.js版本也还是过低了…后来发现npm里有一个模块n可以来管理版本,直接搜就能看到了不难
1 | sudo apt install npm |
其他包倒是问题不大,照着教程来就是了
唔..有点尴尬…阿里云给的学生服务器性能不太够的样子…考虑一下要怎么办吧…
尝试了一下…我去掉了额外的mongodb redis…能跑起来了…发现自己对于它cli和服务器的机制理解有问题…不知道是因为减少安装的包还是改正了使用过程的结果…反正能用了
可是累死我了…