<!DOCTYPE html> <html> <head> <meta charset=UTF-8> <title></title> <script type=text/javascript src=js/jquery-1.12.4.min.js ></script> <style> *{ margin: 0; padding: 0; } li{ list-style: none; } a{ text-decoration: none; font-size: 14px; } .nav{ margin: 100px; } .nav>li{ position: relative; float: left; width: 80px; height: 40px; text-align: center; } .nav li a{ display: block; width: 100%; height: 100px; line-height: 100px; color: #333; } .nav li a:hover{ background: #eee; } .nav ul{ display: none; position: absolute; top: 40px; left: 0; width: 100%; border-left: 1px solid #fecc5b; border-right:1px solid #fecc5b; } .
(思路大量参考 DP 带师 UM 的博客)
一个能直接把人干劝退的插头 DP 。。
Description 给定一个 \(n * m\) 图,有一个起点和终点和一些空地,你需要在空地上放置一些障碍和不超过 k 个炮台(均不可经过),使得:
起点和终点仍连通,可以存在多条路径;
每经过一个点(起终也算),答案加上该点八连通的炮台数,最大化答案(注:多条路径算答案最小的一条)。
\(\min(n,\ m) \leq 6,\ \max(n,\ m) \leq 20,\ 1\leq k \leq 15\)
Analysis 这个数据就很插头 DP 把,那就不去想其他的了。
那既然是要路径(不是回路),那自然一行的状态就直接 \(0\) 表示无插头, \(1\) 表示左插头, \(2\) 表示右插头, \(3\) 表示独立插头。
但是这样好像不太够,因为考虑到八连通下的贡献,需要知道附近几个点的状态,是路径,是炮台还是障碍。
所以需要一行状态形如(粉色那一列):
对于打叉的点,记录的就是这些格子是路径,是炮台还是障碍(其他还有四个格子因为那个点还没遍历到,不考虑)。
(这两个都四进制就行,注:之后插头的叫状态 \(1\) ,格子种类的叫状态 \(2\) )
还不够,因为有炮台的限制,所以还要加一个指炮台数量(最多 \(15\) 个所以二进制 \(4\) 位就够了)。
Solution 根据 Analysis 里说的,对于每个点,我们提取上一行状态 \(1\) 的左格 \(pr\) 和上格 \(pd\) ,状态 \(2\) 的左格 \(l\) ,左上格 \(ul\) ,上格 \(u\) ,右上格 \(ur\) 。
继承接口赋值的时候,需要采用引用的方式,需要在初始化列表里面初始化
class Parent { public: virtual void ShowEntry() { cout << entry parent << endl; }; }; class Child : public Parent { virtual void ShowEntry() override { cout << entry child << endl; }; }; class People { private: Parent& pl; //定义需要是引用 public: People(Parent& _input): pl(_input) {}; // 初始化列表里面初始化 void Show() { pl.ShowEntry(); }; }; TEST(override, bridge1) { Child cld; People p(cld); p.Show(); }
Spring MVC的特点: 轻量级,简单易学
高效 , 基于请求响应的MVC框架
与Spring兼容性好,无缝结合
约定优于配置
功能强大:RESTful、数据验证、格式化、本地化、主题等
简洁灵活
Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计。
DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;
中心控制器: Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。
Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。
SpringMVC的原理如下图所示:
当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。
SpringMVC建议执行原理: 简要分析执行流程
DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。
我们假设请求的url为 : http://localhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080服务器域名
SpringMVC部署在服务器上的web站点
hello表示控制器
通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。
HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。
针对问题:
改进思路:
数学模型:
损失函数:
交叉熵损失
// 抽象部分, 外部接口,抽象化产品 // 当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。 // 当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。 // 当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。 // 例子1: 画图形 正方形, 圆形,长方形 颜色:红色,黑色, 白色 // 颜色 class Color { public: virtual void FillColor(string produce) = 0; virtual ~Color() {}; }; // 形状 class Shape { protected: Color* fillcolor; public: Shape(Color* userColor): fillcolor(userColor){}; virtual void DrawShape() = 0; }; // 具体的形状类 class Rectangle : public Shape { public: virtual void DrawShape() override { fillcolor->FillColor(长方形); } Rectangle(Color* userColor) : Shape(userColor) {} }; class Square : public Shape { public: virtual void DrawShape() override { fillcolor->FillColor(正方形); } Square(Color* userColor) : Shape(userColor) {} }; class White : public Color { public: virtual void FillColor(string produce) override { cout << entry White << __func__ << endl; cout << 白色的 + produce << endl; } }; class Black : public Color { public: virtual void FillColor(string produce) override { cout << entry Black << __func__ << endl; cout << 黑色的 + produce << endl; } }; TEST(bridge_module, bridge1) { Color* w = new White(); Color* blk = new Black(); Rectangle rg(w); Square sq(blk); sq.
西门子S7协议实现 采用java的方式实现西门子S7协议
链接地址:iot-communication github: https://github.com/xingshuangs/iot-communication
<dependency> <groupId>com.github.xingshuangs</groupId> <artifactId>iot-communication</artifactId> <version>1.1.0</version> </dependency> 网络模型 层数 OSI层 S7协议 第 7 层 应用层 S7 协议 S7 Communication 第 6 层 表示层 S7 协议( COTP ) 第 5 层 会话层 S7 协议( TPKT ) 第 4 层 传输层 Transmission Control Protocol 第 3 层 网络层 IP 第 2 层 数据链路层 Ethernet 第 1 层 物理层 Ethernet S7协议数据结构 S7协议TCP/IP实现依赖于面向块的ISO传输服务,S7协议包含在TPKT和ISO-COTP协议中,允许PDU(协议数据单元)通过TCP承载。 ISO overTCP通信定义在RFC1006中,ISO-COTP定义在RFC2126其是基于ISO 8073协议(RFC905)。该结构如下图。
给定一个有向无环图,我们称 \(x,y\) 存在关系当且仅当存在 \(x\to y\) 或者 \(y \to x\) 的边。最长链为最大的集合使得其中任意两个元素存在关系,最长反链为最大的集合使得其中任意两个元素不存在关系。
Dilworth 定理:最长反链等于最小链覆盖。
最小链覆盖为用最少的链(可以相交)覆盖图的每一个点,我们传递闭包后即可转化为经典二分图模型:最小链划分。
如何求出具体方案?我们先求出链划分,然后先选取每条链的终点,只要存在两个点之间有关系,如 \(x\to y\),就将 \(y\) 沿着对应的链向起点走。可以证明重复这个过程可以得到答案。
听起来很复杂,但实现很简单。下面是 CF590E 的代码。
#define N 10000005 #define M 755 char s[N + M]; int idx, n, ch[N][2], fa[N], w[N], u[M], d[M][M], m, v[M], mat[M]; queue<int>q; bool dfs(int x){ rp(i, n)if(d[x][i] && !v[i]){ v[i] = 1; if(!mat[i] || dfs(mat[i])){mat[i] = x; return true;} }return false; } vector<int>c; int main() { read(n); rp(i, n){ u[i] = ++m; scanf(%s, s + m); int l = strlen(s + m), x = 0; rp(j, l){ int op = s[j + m - 1] - 'a'; if(!
1 确认加载的库的名字正确,以及你要加载的库的目录里有这个库;
2 如果有中文路径或者名字,进行宽字符转换;LoadLibraryExW;
3 如果同一个demo在不同机器上,有些机器能加载上这个DLL,有些机器LoadLibraryEx 返回空;但是路径,名字都是正常的,库也是存在的;可能是补丁问题;
“DLL在某台机器上加载不上:请把这个DLL编译成MT;并且添加一下:忽略特定默认库;”
出现在某机器上加载正常,而某机器上不正常 可能的原因是这台加载不上DLL的机器是个裸机,一些运行系统库这台机器上没有;而能加载的机器上有某个缺少的系统库;
缺少的系统库一般是:msvc系列库
task3 1 with open('data3.txt','r',encoding='utf-8') as f: 2 data=f.readlines() 3 f.close() 4 with open('data3_processed.txt','w',encoding='utf-8') as b: 5 a=['四舍五入后数据:'] 6 for i in range(len(data)): 7 data[i]=data[i].strip('\n') 8 for i in data[1:]: 9 i=eval(i) 10 if i-int(i)<0.5: 11 a.append(str(int(i))) 12 else: 13 a.append(str(int(i)+1)) 14 for i in range(len(data)): 15 b.write(data[i]+'\t'+a[i]+'\n') 16 b.close() 17 a1=[];a2=[] 18 for i in range(1,len(data)): 19 a1.append(eval(data[i])) 20 a2.append(int(a[i])) 21 print(f'原始数据:\n{a1}\n四舍五入后数据:\n{a2}') task4
1 f=open('data4.txt','r',encoding='utf-8') 2 a=[] 3 for i in f: 4 a.