st

Timers in PLC - Structured Text

懵懂的女人 提交于 2021-02-04 15:39:07
问题 How do timers work in PLC Structured Text (ST)? How do we declare them? I've been studying a standard of PLC (IEC 61131-3), and they do not speak about timers in ST. I know the great majority of PLC programmers do them in ladder logic, but in this particular case I really need to declare timers in ST. I am using a Rockwell PLC. 回答1: You can find explanations about timers and how to use (declare) it in the help system of your IDE. For example, in the CODESYS help you can read about timers of

B - TT 的旅行日记

浪尽此生 提交于 2020-04-07 09:53:53
https://vjudge.net/contest/365635#problem/B 建两层图,因为只能跑一条商业线,可以从正常点向虚拟点建一条单向边 For(i,1,m){ in(x);in(y);in(v); push(x,y,v); push(y,x,v); push(x+n,y+n,v); push(y+n,x+n,v); } in(k); For(i,1,k){ in(x);in(y);in(v); push(x,y+n,v); push(y,x+n,v); } 看这个建图过程就应该能明白。 if(d[t+n]<d[t]) 意味着走商业线更短 否则经济线更短 对于那个商业线的点,就是从大于n的点到小于等于n的点过度的时候,也就是从虚拟图跑到实图的那一条边 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <stack> #include <cstring> #define inf 2147483647 #define N 1000010 #define p(a) putchar(a) #define For(i,a,b) for(int i=a;i<=b;++i) using namespace std; int n,s,t,m,x,y,v,k

Python基础(六)

梦想的初衷 提交于 2020-04-04 15:20:16
今日主要内容 驻留机制 小数据池 代码块 深浅拷贝 集合 一、 驻留机制 (一)== 和 is == :判断两边的内容是否相同 a = -6 b = -6 print(a == b) # True is :判断两边的内存地址是否相同 a = -6 b = -6 print(a is b) # Fales (二)什么是驻留机制 python中为了节省内存定义的一套规则,部分数据在重复定义的时候指向同一个内存空间,也就是内存地址是相同的 在驻留机制范围内的代码块和小数据池,在定义变量的时候都将履行驻留机制 代码块的优先级高于小数据池 (三)什么是代码块 一个py文件、一个函数、一个模块、一个类、终端中的每一行代码都是一个代码块 (四)小数据池和代码块的驻留范围 小数据池 数字: -5 ~ 256 字符串: 只包含数字、字母、下划线的全部字符串 在python3.6解释器中字符串使用乘的时候总长度不能超过20(只包含数字、字母、下划线) 在python3.7解释器中字符串使用乘的时候总长度不能超过4096(只包含数字、字母、下划线) 布尔值 True False 代码块 数字: -5 ~ 正无穷 字符串: 全部字符串(包含数字、字母、下划线、特殊字符、中文等) 使用乘的时候总长度不能超过20(只包含数字、字母、下划线) 布尔值 True False (五)指定驻留 指定任意字符串

RMQ问题的ST算法

为君一笑 提交于 2020-03-30 08:22:27
ST(Sparse Table)算法的基本思想是,预先计算从起点A[i]开始长度为2的j次方(j=0,1...logn)的区间的最小值,然后在查询时将任何一个区间A[i..j]划分为两个预处理好的可能重叠的区间,取这两个重叠区间的最小值。 在预处理阶段,从起点A[i]开始,任何一个长度为2^j的区间都可以划分为两个长度2^(j-1)的区间,其中第一个区间的范围为: i...i+2^(j-1)-1 ;第二个区间的范围为: i+2^(j-1)...i+2^j-1 。用M[i,j]表示从A[i]开始,长度为2^j的区间(即A[i]...A[i+2^j-1])最小值对应的下标,那么 A[M[i,j]] = min{A[i...i+2^(j-1)-1], A[ i+2^(j-1)...i+2^j-1 ]} 。 利用DP思想,先计算M[i,j-1]的值,然后计算M[i,j]的值。 在 查询阶段,任何区间A[i..j]的长度d=j-i+1,令k=floor(logd),那么该区间可以被两个长度为2^k的子区间完全覆盖,这两个长度 为2^k的区间可以有重叠。由于这两个区间已经在预处理中求得最小值,因此可以取二者的最小值得到A[i..j]的最小值。 ST算法预处理阶段的复杂度为O(nlogn),查询阶段的复杂度为O(1)。 实现: /** * * Using ST(Sparse Table)

232. Implement Queue using Stacks

霸气de小男生 提交于 2020-03-24 08:20:25
Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of queue. pop() -- Removes the element from in front of queue. peek() -- Get the front element. empty() -- Return whether the queue is empty. Notes: You must use only standard operations of a stack -- which means only push to top , peek/pop from top , size , and is empty operations are valid. Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.     You may

queue stack 用法

折月煮酒 提交于 2020-03-22 13:18:03
queue 队列,先进先出,排队,队头队尾 queue<int> que; for(int i=0;i<6;i++) que.push(i); cout<<que.front()<<endl<<que.back(); que.pop(); que.empty(); que.size(); pop  队头出队 push  队尾排队 front和back只是取元素,并不做增删 stack 栈,先进后出 stack<int> st; for(int i=0;i<6;i++) st.push(i); cout<<st.top()<<endl; st.pop(); st.empty(); st.size(); pop  栈顶出栈 push  栈顶入栈 top  只取元素不增删 来源: https://www.cnblogs.com/lxzbky/p/12545426.html

C++/MFC计算程序运行时间

放肆的年华 提交于 2020-03-17 03:37:50
在我们实际的编程工作中,经常要测量程序的运行时间,比如衡量算法的运行时间等等。在这里我收集了网上集中测量程序运行时间的方法。 通过网上查阅资料,找到以下几种VC中求取程序运行时间的方法: 方法一 利用GetTickCount函数(ms) 代码: CString str; longt1=GetTickCount();//程序段开始前取得系统运行时间(ms) 。。。。。。//to do sth longt2=GetTickCount();//程序段结束后取得系统运行时间(ms) str.Format("time:%dms",t2-t1);//前后之差即程序运行时间 AfxMessageBox(str); 方法二利用C/C++计时函数(s) 代码: #include"time.h" clock_t start, finish; start =clock(); finish = clock(); printf("%f seconds\n",(double)(finish-start)/CLOCKS_PER_SEC); 方法三 利用CTime类 获取系统时间 代码: CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日 %X"); AfxMessageBox(str)

ST表-笔记

假如想象 提交于 2020-03-17 01:58:51
ST表 用途:N个数,M次询问,每次给定区间[L, R],求区间最大值 (不支持在线修改,是一种离线算法) 要求: O(1) 时间内求区间最大值 设原数组为 a[] 方案:利用倍增 思想 ,倍数为 2 。 令 f(i, j)表示区间[i, i+ 2 j 2^j 2 j ] ,即下标 i 开始的 2 j 2^j 2 j 个数组成的区间。 由定义得:f(i, 0) = a[i]; 这个边界条件 一般的转移:把一个区间分成两半 f ( i , j ) = m a x ( f ( i , j − 1 ) , f ( i + 2 j − 1 , j − 1 ) ) f(i, j) = max(f(i, j-1), f(i+2^{j-1}, j-1)) f ( i , j ) = m a x ( f ( i , j − 1 ) , f ( i + 2 j − 1 , j − 1 ) ) (1)预处理: 算出所有f(i, j),i 和 a.size() 有关系,j 最大为log(a.size()),因此时间复杂度为O(nlogn)。存储结构用二维数组st[i][j],根据ij的范围,空间复杂度也是O(nlogn)。 for ( int i = 0 ; i < n ; ++ i ) st [ i ] [ 0 ] = a [ i ] ; for ( int j = 1 ; ( 1 << j ) <=

序列化与反序列化

十年热恋 提交于 2020-03-16 08:18:17
序列化:将对象写入文件,对象要继承serializable实现接口 private static void xulihua() { Student st = new Student(); st.setId(1000); st.setName("测试"); st.setSex("男"); st.setHp(100); ObjectOutputStream oos = null; try { OutputStream os = new FileOutputStream("f:\\stu.dat"); oos = new ObjectOutputStream(os); st.setHp(50); System.out.println(".....保存游戏进度......"); System.out.println("被弄死了......"); System.out.println("Game over....."); oos.writeObject(st); oos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (oos != null) { try { oos.close();

日志文件C++ 时间 文件 行数

时光怂恿深爱的人放手 提交于 2020-03-14 04:09:47
#include <stdio.h> #include<windows.h> #include <time.h> #define Line __LINE__ #define File __FILE__ void WriteLog(const char *file, int line, char * msg) { SYSTEMTIME st; GetLocalTime(&st); FILE *fp; fp=fopen("D:\\log.txt","at"); fprintf(fp,"MyLogInfo: %d-%d-%d %d:%d:%d %s:%d: % s\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond, file,line, msg); printf(" %d-%d-%d %d:%d:%d %s:%d: %s\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond, file,line, msg); fclose(fp); // OutputDebugStringA(msg); } int main(int , char**) { WriteLog(File,Line, " now error...."); return 0; }