1 | docker pull rocketmqinc/rocketmq:4.4.0 |
1 | docker run -d -p 9876:9876 -v {RmHome}/data/namesrv/logs:/root/logs -v {RmHome}/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv |
{RmHome} 要替换成你的宿主机想保存 MQ 的日志与数据的地方,通过 docker 的 -v 参数使用 volume 功能,把你本地的目录映射到容器内的目录上。否则所有数据都默认保存在容器运行时的内存中,重启之后就又回到最初的起点。
与上一个是同一个docker镜像,无需拉取
1 | brokerClusterName = DefaultCluster |
1 | docker run -d -p 10911:10911 -p 10909:10909 -v {RmHome}/data/broker/logs:/root/logs -v {RmHome}/rocketmq/data/broker/store:/root/store -v {RmHome}/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf |
其中 brokerIP1 需要自己修改,不能是127.0.0.1 因为运行在docker容器里面的,localhost与宿主机器隔离,需要使用连接的局域网ip,否则会有各种异常产生
1 | docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr={本机局域网 IP}:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t pangliang/rocketmq-console-ng |
Drocketmq.namesrv.addr的ip就是上一步配置文件设置的brokerIP1
此时运行若无异常,console日志打出如下,则运行成功1
2
3
4
5
6
7[2020-04-03 06:23:30.049] INFO closeChannel: close the connection to remote address[192.168.31.156:10911] result: true
[2020-04-03 06:23:59.976] INFO closeChannel: close the connection to remote address[192.168.31.156:10911] result: true
[2020-04-03 06:24:00.045] INFO closeChannel: close the connection to remote address[192.168.31.156:9876] result: true
[2020-04-03 06:24:30.031] INFO closeChannel: close the connection to remote address[192.168.31.156:9876] result: true
[2020-04-03 06:24:30.035] INFO closeChannel: close the connection to remote address[192.168.31.156:10911] result: true
[2020-04-03 06:24:59.961] INFO closeChannel: close the connection to remote address[192.168.31.156:9876] result: true
[2020-04-03 06:25:00.027] INFO closeChannel: close the connection to remote address[192.168.31.156:10911] result: true
涉及到的容器如下
1 | ▶ docker container ls |
第一次跑go程序之前,还要先安装相关依赖包,不然可能会出现
1 | rocketmq-client-go/core/cfuns.go:21:10: fatal error: 'rocketmq/CMessageExt.h' file not found |
下面是解决步骤
1 | 1. git clone https://github.com/apache/rocketmq-client-cpp |
参考(官方demo)[https://github.com/apache/rocketmq-client-go/blob/master/examples/producer.go]
参考代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package main
import (
"fmt"
"github.com/apache/rocketmq-client-go/core"
)
func Main0() {
pConfig := &rocketmq.ProducerConfig{
ClientConfig: rocketmq.ClientConfig{
GroupID: "broker-a",
NameServer: "http://192.168.31.156:9876",
},
ProducerModel: rocketmq.CommonProducer,
}
sendMessage(pConfig)
}
func sendMessage(config *rocketmq.ProducerConfig) {
producer, err := rocketmq.NewProducer(config)
if err != nil {
fmt.Println("create common producer failed, error:", err)
return
}
err = producer.Start()
if err != nil {
fmt.Println("start common producer error", err)
return
}
defer producer.Shutdown()
fmt.Printf("Common producer: %s started... \n", producer)
for i := 0; i < 10; i++ {
msg := fmt.Sprintf("%s-%d", "Hello,Common MQ Message-", i)
result, err := producer.SendMessageSync(&rocketmq.Message{Topic: "test_1", Body: msg})
if err != nil {
fmt.Println("Error:", err)
}
fmt.Printf("send message: %s result: %s\n", msg, result)
}
fmt.Println("shutdown common producer.")
}
func main() {
Main0()
}
运行生产者端代码,完成消息发送1
2
3
4Common producer: ProducerConfig=[GroupId: broker-a, NameServer: http://192.168.31.156:9876, ProducerModel: CommonProducer, ] started...
send message: Hello,Common MQ Message--0 result: [status: SendOK, messageId: C0A81F9C77926C5F71990DBE59BD0000, offset: 1]
send message: Hello,Common MQ Message--1 result: [status: SendOK, messageId: C0A81F9C77926C5F71990DBE59F60001, offset: 1]
send message: Hello,Common MQ Message--2 result: [status: SendOK, messageId: C0A81F9C77926C5F71990DBE5A000002, offset: 2]
参考官方demo
修改对应topic和NameServer即可运行
运行消费者代码,完成消息消费1
2
3
4
5
6
7
8
9
10
11
12
13
14INFO[0000] subscribe topic[test_1] with expression[*] successfully.
consumer: [PushConsumerConfig=[GroupId: broker-a, NameServer: http://192.168.31.156:9876, MessageModel: Clustering, ConsumerModel: Orderly, ], subcribed topics: [test_1, ]] started...
A message received, MessageID:C0A81F9C77926C5F71990DBE59BD0000, Body:Hello,Common MQ Message--0
A message received, MessageID:C0A81F9C77926C5F71990DBE5A000002, Body:Hello,Common MQ Message--2
A message received, MessageID:C0A81F9C77926C5F71990DBE59F60001, Body:Hello,Common MQ Message--1
Consumer Later, MessageID:C0A81F9C77926C5F71990DBE59F60001
A message received, MessageID:C0A81F9C77926C5F71990DBE5A150003, Body:Hello,Common MQ Message--3
A message received, MessageID:C0A81F9C77926C5F71990DBE5A400004, Body:Hello,Common MQ Message--4
A message received, MessageID:C0A81F9C77926C5F71990DBE5A710007, Body:Hello,Common MQ Message--7
A message received, MessageID:C0A81F9C77926C5F71990DBE5A640006, Body:Hello,Common MQ Message--6
A message received, MessageID:C0A81F9C77926C5F71990DBE5A510005, Body:Hello,Common MQ Message--5
A message received, MessageID:C0A81F9C77926C5F71990DBE5A800008, Body:Hello,Common MQ Message--8
Consumer Later, MessageID:C0A81F9C77926C5F71990DBE5A800008
A message received, MessageID:C0A81F9C77926C5F71990DBE5A8D0009, Body:Hello,Common MQ Message--9
【Rocketmq】通过 docker 快速搭建 rocketmq 环境
rocketmq 部署启动指南-Docker 版
apache/rocketmq-client-go
go get rocketmq-client-go error #3
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" |
zsh-syntax-highlighting安装
1 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting |
zsh-autosuggestions安装
1 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions |
1 | source ~/.zshrc |
当item2的主题是Solarized Dark时,会覆盖zsh-autosuggestions的提示字体,造成显示不了的情况1
2
3
4▶ vim ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
: ${ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=2'}
把fg的颜色从8改为其他颜色,只支持8种颜色,可参考zsh-autosuggestions文档
mac外接键盘无法用到触控板,外接鼠标的话,方向逻辑相反,Mos很好解决了这个问题,而且可以控制鼠标的滚轮爽如触控板.
在多屏幕工作时,经常要用手来操作鼠标箭头到另外一个屏幕,现用软件可实现快捷键切换到其他屏幕
先安装Hammerspoon
open config
1 | -- Set hyper to cmd |
此处将cmd定义为hyper,然后定义hyper+`为切换鼠标箭头到其他屏幕,也可自定义为其他快捷键
其他具体操作可参考文档
公司内部一般都是用的python和golang, 而python库又是用的pyhton2.7来写的,编码的途中经常遇到很多很多坑,而且很多还是相同的问题导致了不同的结果….
用python2最恶心的一句话莫过于UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
python2不是默认utf-8编码…每个文件必须说明utf-8编码,不然py文件中遇到中文的话会直接出错
1 | # -*- coding: utf-8 -*- |
pycharm用户可以直接设置每次新增文件可以添加title.
设置->Editor->File and Code Templates -> Files -> Python Script
然后进行添加
在处理字符串时需要对中文字符进行unicode编码1
s = u'你好世界'
输出含有中文的unicode字符的时候还要进行utf-8编码1
print s.encode('utf-8')
对于如果要把unicode字符转化为str时,需要把环境编码设置为utf-81
2
3import sys
reload(sys).setdefaultencoding('utf8')
print str(s)
1 | ''.join(s.split()) |
有很多和dict需要存到csv里,以dict的keys作为csv的头1
2
3
4
5
6
7
8
9import csv
headers = ['name','age']
person_list = [{'name':'djangoz','age':18},{'name':'alice','age':18}]
with open('file.csv','w') as csvfile:
csvwriter = csv.DictWriter(csvfile, fieldnames=headers)
csvwriter.writeheader()
for person in person_list:
csvwriter.writerow(person)
然后file.csv文件就是这样了1
2
3
4▶ cat file.csv
name,age
djangoz,18
alice,18
docker安装部分就不介绍了,可看官方文档
1 | docker pull mysql:8.0 |
下载的版本为8.0的mysql
1 | docker run -p 3306:3306 --restart=always -name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0 |
创建容器,将容器的3306端口映射到本地的3306端口,设置为docker启动时容器自启动,命名为mysql,设置数据库密码为root
将本地mysql的数据库导出为sql文件1
mysqldump -u root -p you_database > you_database.sql
1 | docker cp you_database.sql mysql:/opt/ |
此时sql文件就到mysql容器里的/opt/路径里面了。
然后进入容器里面操作1
docker exec -it mysql bash
此时就进入到容器里面了,先在容器里面的mysql创建相应的数据库1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16▶ docker exec -it mymysql bash
root@19820b3cb9b8:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.13 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
create database YOU_DATABASE;
创建完相应的数据库后,就可以导入之前复制到容器里面的sql文件了。1
root@19820b3cb9b8:/# mysql -u root -p YOUDATABASE < /opt/you_database.sql
此时就大功告成了,然后就可以卸载本地的mysql,达成删库跑路成就了。1
2▶ brew remove mysql
Uninstalling /usr/local/Cellar/mysql/8.0.12... (257 files, 233.2MB)
先用单例模式写一个生成验证码图片的GenerateCode类,该类的createImage()方法返回BufferImage类,然后用Servlet来读取图片,GenerateCode对象在生成图片的同时也会生成一个验证码的字符串,可供后台验证的Servlet来验证前台post上去的验证码是否相同.
1 | package servlet; |
1 | package servlet; |
1 | package Utils; |
index.jsp1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27<%@ page import=“java.awt.image.BufferedImage” %>
<%@ page import=“servlet.VerifyCode” %><%–
Created by IntelliJ IDEA.
User: onlyless
Date: 11/17/18
Time: 11:34
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action=“/Verify.do” method=“post”>
<table>
<tr>
<td>
<img src=“/VerifyCode.do”>
<input type=“text” name=“verifycode” maxlength=“4”>
<input type=“submit” name=“submit”>
</td>
</tr>
</table>
</form>
</body>
</html>
success.jsp1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<%–
Created by IntelliJ IDEA.
User: onlyless
Date: 11/16/18
Time: 16:46
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<html>
<head>
<title>success</title>
</head>
<body>
<h1>success</h1>
</body>
</html>
思路很简单,最终也实现出来了,但是我发现了一个BUG,在多个窗口同时请求验证时,由于后台很简单的读取GenerateCode的验证码,因此这多个窗口post上来的验证码就算全部都是正确的,但是只能验证最后生成验证码图片的那个post,要解决这个问题,我想应该要用到Cookie的知识,现在还在学习,待以后再解决这个问题。
第二天学到了Cookie和Session的运用,发现用Session很简单就能解决上面的那个不足。
1 | … |
1 | … |
两个浏览器同时登陆都成功登陆,后台查看验证码一致
不过我发现这个问题在同一个浏览器上还是存在,原因很简单,用一个浏览器不同窗口的Session都是一样的,这样就导致新生成的验证码覆盖掉以前Session绑定的验证码,导致问题产生,这个问题我测试了一下学校的教务系统和12306的登录验证码,都存在这样的问题。不过这个一般谁也不会同时开多个窗口登录,登录失败一个,换以前的窗口登录,这样导致一直匹配到的不是产生最新的验证码。
]]>]]>首先,这种快乐是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到快乐一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特的、崭新的树叶和雪花上的喜悦。
其次,这种快乐来自于开发对他人有用的东西。内心深处,我们期望我们的劳动成果能够被他人使用,并能对他们有所帮助。从这一角度而言,这同小孩用粘土为“爸爸的办公室”捏制铅笔盒没有任何本质的区别。
第三,快乐来自于整个过程体现出的一股强大的魅力—将相互啮合的零部件组装在一起,看到它们以精妙的方式运行着,并收到了预期的效果。比起弹球游戏机或自动电唱机所具有的迷人魅力,程序化的计算机毫不逊色。
第四,这种快乐是持续学习的快乐,它来自于这项工作的非重复特性。人们所面临的问题总有这样那样的不同,因而解决问题的人可以从中学习新的事物,有时是实践上的,有时是理论上的,或者兼而有之。
最后,这种快乐还来自于在易于驾驭的介质上工作。程序员,就像诗人一样,几乎仅仅在单纯的思考中工作。程序员凭空地运用自己的想象,来建造自己的“城堡”。很少有创造介质如此灵活,如此易于精炼和重建,如此容易实现概念上的设想(不过我们将会看到,容易驾驭的特性也有它自己的问题)
然而程序毕竟同诗歌不同,它是实实在在的东西;它可以移动和运行,能独立产生可见的输出;它能打印结果,绘制图形,发出声音,移动支架。神话和传说中的魔术在我们的时代已变成现实。在键盘上键入正确的咒语,屏幕会活动、变幻,显示出前所未有的也不可能存在的事物。
EFI文件都在磁盘的ESP分区,先挂载ESP分区,然后用ms-dos自带的修复工具即可修复
准备工作:一个有原装winPE的u盘
1 | diskpart #进入diskpart |
给定N个DNA字符串,找到最短的字符串使N个字符串都是它的子序列(不连续)
又是典型的IDA* 迭代加深搜索思路,用一个数组保存每次搜索到对于N个字符串的下标,当每个下标都到了字符串的结尾的时候即说明解出了答案。
为防止超时,当此时深度+至少还要加深的深度>限制值时就返回上一层状态。
1 |
|
在一个两层迷宫内,骑士从起点是否能在给定步数之内找到公主,’#’代表传送门,会传送到另一个平面该位置去,’*’代表墙,’P’代表公主
水题,用bfs模拟即可,就是有个坑 传送门被传到的位置不能是墙(由题意)和传送门(会造成无限传送)
1 |
|
f[0] = 1,f[1] = 2
f[k] = f[i] + f[j] (0<=i,j<==k-1)
求当n = f[k] 时,输出前k项 (k最小时)
典型的IDA*算法,K从1开始枚举,当k可行时,结束搜索.
很容易发现f[k]是递增的,所以当搜索深度为step时,f[step] = f[1…step-1] + f[step-1],这样就很快地会搜索出解.
1 |
|
八数码问题,不过目标状态不定,保证有解
和上一题类似,先算一下目标状态在跑IDA*即可,剪枝条件与上一题相同
参考
1 |
|
经典的八数码的题目,还要判断是否有解,wiki链接
用IDA*算法来解决,先算出当前状态和目标状态的哈曼顿距离,当距离为0时即解出答案。
有两个可以剪枝的条件:
关于8数码是否有解,可参考这篇文章
1 |
|
解出N个9x9的数独,(输出一个解即可)
用一个二维布尔数组来标记,点(x,y)的行,列,块的数字是否已经出现过,然后直接暴力搜索即可
1 |
|
A要从(0,0)到(m,n),A有体力值D,每秒都会消耗体力值1,有K座炮塔,每座炮塔都会发射子弹,给出炮塔射击的方向,并且具有一个射击周期,和子弹的速度。
写这题的时候感觉有点掉头发。。。
首先预处理子弹会在哪个位置有效击中,用一个三维数组来保存信息,对于每个子弹,先求出子弹能到达的最远位置,然后在0~d的时间内求,然后再用bfs来搜索可行的路线,当第一次能到达(m,n)就是所求答案。
1 |
|
N个城市M条路径,给定起点A,终点B,求有几条从A到B的最短路(其中每经过的路径不能重复)
先用最短路求出A到B的最短路Min,也求出A到每个城市的距离dis[N],然后反向求B到A的最短路,得到B到每个城市的最短距离dis2[N],然后遍历每条路径edge,如果dis[edge.from] + edge.len + dis2[edge.to]== Min,就说明这条路径一定是A到B的最短路中会经过的路径,,每条路径的容量为1,把每条符合条件的路径加入到最大流的图中,建完图后,以A为源点,B为汇点跑最大流即可(用EdmondsKarp会超时,跑Dinic即可)
1 |
|
T组样例,N个地点,每个地点有个繁忙度,地点间有M条街道,每条街道要收过路费(目的地繁忙度-起点繁忙度)^3 (3次方),有Q个查询,包含Q个目的地,求从起点1到每个目的地的最小花费。如果花费小于3或者无法到达目的地,则输出”?”
由于目的地繁忙度不一定大于起点繁忙度,所以图中有负环(一开始没想到,直接用dijkstra一直WA),所以要用bellman_ford来求最短路,当某些地点位于负环内,就肯定最终花费小于3。
1 |
|
RoBa原创,转载请注明出处
劳资六年前开始搞ACM啊!!!!!!!!!!
从此踏上了尼玛不归路啊!!!!!!!!!!!!
谁特么跟劳资讲算法是程序设计的核心啊!!!!!!
尼玛除了面试题就没见过用算法的地方啊!!!!!!
谁再跟劳资讲算法之美算法的力量,劳资一本算法导论拍死你啊!!!!!!!!
那是搞ACM的入门书啊!!!!特么的入门书就一千多页啊!!!!!!!
还没有习题答案啊,学完了你特么都不知道自己到底会不会啊有木有!!!!!!
然后你就得看lrj的黑书啊!!!!!!还是特么的没有习题答案啊!!!!
那书难的一B啊!!!!人家一个“显然”得出的结论够你想一礼拜啊有木有!!!!
一个课后题够你想几个月啊有木有!!!!
然后还有一堆堆的书啊!!!!每一类算法都足够写一本书啊!!!!
每本都是砖头一样啊!!!!还都特么是英文的啊!!!!
也有中文翻译版啊!!!!!!翻译得跟屎一样啊!!!!
你看的时候得把它再变回英文才能懂啊!!!!!!有木有!!!!!!
ACM的题目类型是没有范围的啊!!!!!!
动态规划有木有!!!!数据结构有木有!!!!
图论有木有!!!!!!计算几何有木有!!!!!!
数论有木有!!!!!!要写两三百行的模拟题有木有!!!!!!
特么连物理题化学题都有啊!!!!!!
还有理论上就不可做的NP难问题啊!!!!!!
特么理论上不可做的题也有人能AC啊!!!!坑爹啊!!!!
课本上学的东西完全不给力啊!!!!!!
你以为学过一个最长公共子串就是懂动态规划了啊!!!!!!
树型的有木有!!!!状态压缩的有木有!!!!插头的有木有!!!!
而且特么写出来就超时啊!!!!!!
你得四边形优化啊!!!!你得斜率优化啊!!!!你得队列优化啊!!!!
特么恨不得把要算十年的程序优化到一秒啊!!!!
你以为学过一个二叉搜索树就是懂数据结构了啊!!!!!!
平衡啊旋转啊红啊黑啊有木有!!!!
伸展啊随机权重啊合并啊拆分啊有木有!!!!!!
你以为学过一个Dijkstra最短路就是懂图算法了啊!!!!!!
特么的图里有几百万个点啊!!!!!!得用堆来优化啊!!!!
而且边权要是负的就不对了啊!!!!还有环啊!!!!
而且特么的你根本看不出是最短路问题啊!!!!!!
为神马最短路算法可以用来解不等式啊!!!!
还有网络流啊!!!!特么的课本上的算法铁定超时啊!!!!!!
你得看论文去研究神马Dinic啊SAP啊!!!!!!
而且你还是根本看不出是网络流啊!!!!!!
网络流是在图上来求啊!!!!特么的图在哪里啊!!!!
特么的八竿子打不着的问题都能变成网络流啊!!!!!!
这些你都学会了啊!!!!想参加比赛了啊!!!!发现想拿个成绩非常难啊!!!!!!
校内选拔赛就好几百人报名啊有木有!!!!!!最后只能剩下十几个啊!!!!
人家都是竞赛保送的啊!!!!!!中学就学了好几年了有木有!!!!怎么比的过啊!!!!!!
进了校队以后你就不要想寒暑假了啊!!!!!!
夏天劳资全身脱光了涂满花露水半夜刷题有木有!!!!!!
冬天劳资跑遍校园找不到一个开门的食堂有木有!!!!!!
而且特么老外的在线比赛都在半夜啊!!!!!!!!在机房通宵是常事啊有木有!!!!!!
比赛是三个人啊!!!!但是只有一台电脑啊!!!!!!
特么的ACM组委会连多买几台电脑都不肯啊!!!!!!
队友占着机器你就只能干着急啊!!!!!!想把他踹一边儿去啊!!!!!!
没机器你就得在纸上调试啊!!!!!!你的脑子就是个CPU啊有木有!!!!
你要是摊上一个啥都不会,连读题都误导你的队友,你就死定了啊!!!!!!
不怕神一样的对手就怕猪一样的队友啊!!!!
你终于参加区域赛了啊!!!!一百多个队啊!!!!!!
还有一大堆打星号的高中生们啊!!!!!!都是全国前几名级别的有木有!!!!
还有一大堆打星号的老不死们啊!!!!!!毕业了还要来诈尸啊!!!!
一开场那气球呼呼地挂啊!!!!你还没读完题人家已经AC了啊!!!!
而且最先过的不一定是最简单的啊!!!!人家故意在误导你啊有木有!!!!!!
比赛要五个小时啊!!!!结束了以后脑子都抽筋了啊!!!!
人家做七八道题,你连一半都不到啊!!!!!!
拿个毛的奖啊!!!!去个毛的总决赛啊!!!!!!
去了总决赛也是被虐啊!!!!!!老毛子们更尼玛不是人啊有木有!!!!!!
连清华都被虐啊有木有!!!!!!
你拿着一堆Honorable Mention毕业了啊!!!!想找工作啊!!!!
谁说懂算法很容易找到好工作啊!!!!
都特么要项目经验有木有!!!!
劳资成天盯着一个黑乎乎的控制台窗口!!!!哪有时间做项目啊!!!!!!
同学们都是网站啊桌面程序啊做过一堆啊!!!!
人家对面试官侃侃而谈啊!!!
劳资只好说劳资除了算法啥也不会啊!!
而且其实算法也没学会啊!!!!!坑爹啊!!!!
终于工作了啊!!!!发现算法神马的完全用不上啊!!!!
稍微复杂点的算法都有现成的库可以用啊!!!!!!
要懂Shell编程有木有!!!!
要懂多线程有木有!!!!
要懂Socket有木有!!!!
要懂分布式有木有!!!!
要懂J2EE有木有!!!!要懂设计模式有木有!!!!
要懂以下省略三千字有木有!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
总之搞ACM的上辈子都是脑细胞死光钻到牛角尖里出不来的天使啊!!!!!!你伤不起啊!!!!!!
]]>额,直接看题目吧,反正也是中文题,不好用几句话表述清楚~~~
题目链接
因为等级差距不能间接交易,所以每个交易的等级都在一个区间内,这个区间必须包含大祭司的等级,可以把区间枚举,设大祭司等级为L,则需要从[L-M,L],一直枚举到[L,L+M],保证所有交易的点的等级都在这个区间内就可以了,然后在进行最短路处理,进行最短路的过程中,先不考虑直接购买物品的价值,直接全部走兑换的形式,然后把得到的数组加上直接购买物品的价值,从中找到最小值就是答案。
1 |
|
n个点m条边,判断最小生成树是否唯一
求出次小生成树和最小生成树大小是否相同即可
1 |
|
给互相平行的直线L1,L2,和N个圆,角色在直线上、圆上、园内行走不消耗体力。在其他位置上由S点走到T点消耗的体力为S和T的欧几里得距离。求最少需要多少体力。
这题和poj2502那题很相似,关键在建图,这里考察了圆到圆的最短距离和线到圆的最短距离,一开始写的代码以为圆内要消耗体力,然后计算了一下内含情况的最短距离,结果也AC了,后来发现不需要,可能是题目数据没这种情况吧。
1 |
|