p1

洛谷P1310 表达式的值 题解 栈/后缀表达式的应用

为君一笑 提交于 2019-12-02 13:00:18
题目链接: https://www.luogu.org/problem/P1310 本题涉及算法:栈、前缀表达式转后缀表达式,动态规划思想。 这道题目我思考了好长时间,第一时间让我做的话我也做不出来。 看洛谷上面的题解给了我很大的启发。 其中最重要的两点启发是: 启发1:中缀加操作数预处理 将原始表达式中添加上‘.’,这些‘.’对应运算数(这么预处理能方便我接下来更方便地将前缀转后缀表达式进行处理); 启发2:动归思想 首先一个状态对应两个值,我暂且将它们设为 \(v0\) 和 \(v1\) ,其中: \(v0\) 表示该状态下结果为 \(0\) 的方案数; \(v1\) 表示该状态下结果为 \(1\) 的方案数。 那么,在前缀转中缀的时候,只有我们假设由两个状态 \(a\) 和 \(b\) 变换到新的状态 \(c\) ,那么: 如果进行的是 + 操作,则 \(c.v0 = a.v0 \times b.v0\) , \(c.v1 = a.v0 \times b.v1 + a.v1 \times b.v0 + a.v1 \times b.v1\) ; 如果进行的是 * 操作,则 \(c.v0 = a.v0 \times b.v0 + a.v0 \times b.v1 + a.v1 \times b.v0\) , \(c.v1 = a.v1 \times b.v1\) 。

git-vi

╄→гoц情女王★ 提交于 2019-12-02 12:52:20
VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是它的命令集太多,所以要想精通他,也是一件很不容易的事情,除了专业SA,对于我们开发人员而已只需要掌握一些最最常见的用法应该就可以了;下面就介绍一些常见的命令: 命令 描述 nG 跳转到第n行。n为行数,该命令立即使光标跳到指定行 G 跳转到文件最后一行 gg 跳转到文件第一行 Ctrl+G 光标所在位置的行数和列数报告 :set nu 编辑器中显示行号 Ctrl-f 向前翻页 Ctrl-b 向后翻页 n+ 光标下移n行 n- 光标上移n行 0 光标移至当前行首,注意是数字零 $ 光标移至当前行尾 dd 删除一行,后行自动上移 D 删除从光标至行尾的字符 d0 删除光标至行首间的字符,注意是数字0 d$ 删除光标至行尾间的字符 u 撤销上一次操作,类似于Ctrl+Z /pattern 从光标开始处向文件尾搜索pattern ?pattern 从光标开始处向文件首搜索pattern n 在同一方向重复上一次搜索命令 N 在反方向上重复上一次搜索命令 :s/p1/p2/g 将当前行中所有p1均用p2替代;其中s代表substitute、g代表global :n1,n2s/p1/p2/g 将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g 将文件中所有p1均用p2替换 :n 跳转到第n行 i/r

c# 判断点是否在多边形内

梦想与她 提交于 2019-12-01 15:28:06
/// <summary> /// 判断点是否在多边形内 /// </summary> /// <param name="checkPoint">需要判断的点</param> /// <param name="polygonPoints">组成多边形点的集合</param> /// <returns></returns> public static bool IsInPolygon2(PointLatLng checkPoint, List<PointLatLng> polygonPoints) { int counter = 0; int i; double xinters; PointLatLng p1, p2; int pointCount = polygonPoints.Count; p1 = polygonPoints[0]; for (i = 1; i <= pointCount; i++) { p2 = polygonPoints[i % pointCount]; if (checkPoint.Lng > Math.Min(p1.Lng, p2.Lng)//校验点的Y大于线段端点的最小Y && checkPoint.Lng <= Math.Max(p1.Lng, p2.Lng))//校验点的Y小于线段端点的最大Y { if (checkPoint.Lat <=

面向对象:属性

假如想象 提交于 2019-12-01 09:01:34
# 属性的初识 属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理.@property ***@属性名.setter **@属性名.deleter * # class Person:## def __init__(self,name,hight,weight):# self.name = name# self.__hight = hight# self.__weight = weight## @property# def bmi(self):# return '%s 的bmi 值%s' %(self.name,self.__weight / self.__hight ** 2)# p1 = Person('大阳哥',1.68,70)# # print(p1.bmi())# print(p1.bmi)# # 属性 : 将一个方法 伪装成一个 属性,在代码的级别上没有本质的提升,但是让其看起来跟合理.# print(p1.name)# p1.name = 'alex'# print(p1.name)# 属性的改class Person: def __init__(self,name,age): self.name = name if type(age) is int: self.__age = age else: print( '你输入的年龄的类型有误,请输入数字')

[LeetCode] 2. Add Two Numbers

妖精的绣舞 提交于 2019-12-01 06:38:42
这题因为我做过Java版本,发觉跟Java版本几乎无差别。若有JS的小伙伴有更neat的解法欢迎留言。因为我是硬转JS刷题,有些JS的东西用的的确不是很6。 这题思路非常直观,就是直接做加法,注意进位即可。记得最后判断是不是还有额外的一个进位。 1 /** 2 * @param {ListNode} l1 3 * @param {ListNode} l2 4 * @return {ListNode} 5 */ 6 var addTwoNumbers = function(l1, l2) { 7 let dummy = new ListNode(0); 8 let cur = dummy; 9 let sum = 0; 10 let p1 = l1; 11 let p2 = l2; 12 while (p1 != null || p2 != null) { 13 if (p1 != null) { 14 sum += p1.val; 15 p1 = p1.next; 16 } 17 if (p2 != null) { 18 sum += p2.val; 19 p2 = p2.next; 20 } 21 cur.next = new ListNode(sum % 10); 22 sum = parseInt(sum / 10); 23 cur = cur.next; 24 } 25

常用的前端框架Angular、React、Vue

我只是一个虾纸丫 提交于 2019-12-01 00:13:35
VUE 一.vue导读 1.1 vue的优点:结合其他框架点,轻量级,中文API,数据驱动,双向绑定,MVVM设计模式,组件化开发,单页面应用 1.2 vue环境的导入:   本地导入 <!--方法一:下载到本地直接引如js文件--> <script src="js文件的导入/vue.js"></script>   CDN导入 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> </div> <!--方法一:下载到本地直接引如js文件--> <script src="js文件的导入/vue.js"></script> <!--方法二:直接导入官网vue运行环境的url 链接--> <!--<script src="https://cn.vuejs.org/js/vue.js"></script>--> </body> </html> 1.3 挂载点 01 vue 的导入.html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--id 类的操作语法渲染--

面向对象练习

此生再无相见时 提交于 2019-11-30 23:00:23
今日作业 1.什么是对象?什么是类? 对象:特征与技能的结合体 类: 一系列对象相似的特征与技能的集合体· 2.绑定方法的有什么特点 1.类名称空间中定义的数据类型和函数属性都是共享给所有对象用的 2.对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性 3.类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的 4.绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入 3.基于面向对象设计一个对战游戏 # 人狼大战!! # coding=utf-8 class People: camp = 'Humanity' def __init__(self,name,aggr=25,life_value=150,money=500,armor = 10): self.name = name self.aggr = aggr self.life_value = life_value self.money = money self.armor = armor def attack(self,Wolf): damage_value = self.aggr - Wolf.armor Wolf.life_value -= damage_value class Wolf: camp = 'Orc' def __init__(self,name,wolf

初识Vue

泄露秘密 提交于 2019-11-30 20:04:57
1. 什么是Vue?   Vue是前端框架,可以独立完成前后端分离式web项目的JavaScript框架 2. Vue特点   Vue是三大主流框架之一(Angular, Reactm, Vue), Vue结合了前两者的优点,是一个轻量级,中文api,数据驱动(数据驱动,不是从DOM出发),双向绑定(数据具有监听机制),MVVM设计模式,组件化开发,单页面(单页面能够体现出高效)应用的特点. 3. Vue的使用方法 1.下载vue.js:https://vuejs.org/js/vue.js 2. 通过下载保存在本地,在HTML文件中引入 3. 在HTML中书写挂载点,用id表示(一个Vue对象挂载点之后索引一个匹配结果,挂载点一般用id标识) 4. 在自定义的script的标签中new一个对象,传一个大字典过来 5. 字典中用el与HTML挂载点页面结构建立关联,data为其通过数据,methods为其提供方法    4. 实例成员挂载点 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/vue.js"></script> </head> <body> <div id="c1"> <p>{{user}}</p> </div> <

第三次作业

纵然是瞬间 提交于 2019-11-30 16:59:06
1.作业概述: 本次作业学习了数据的封装与分享,我便从分享这方面构思了一个问题,即用友元类来求出两点之间的距离,书上给出的例题采用的是友元函数来解决问题,因此我打算采用友元类来解决距离问题: 2.代码实现: #include"pch.h" #include<iostream> #include<cmath> using namespace std; class A { public: A(int x = 0, int y = 0) : x(x), y(y) {} int getX() { return x; } int getY() { return y; } `` friend class B; private: int x,y; ; }; class B { public: void display() { cout << "点的横坐标为:" << a.getX(); cout << "点的纵坐标为:" << a.getY() << endl; } void set(int i, int j); double caculate(B &p1, B &p2); private: A a; }; void B::set(int i, int j) { a.x = i; a.y = j; } double B::caculate(B &p1, B&p2) { double a = p2

笑着哭i 提交于 2019-11-30 12:49:00
public class Hello { public static void main(String agrs[]) { Person p1 = new Person("shuaizong",18); //调用构造方法对新建的对象进行初始化 //创建对象 p1.sayHello(p1); Person p2 = new Person("huazi",30); p2.sayHello(p2); Person p3 = new Person("wiwi",2); p3.sayHello(p3); p1.introduce(); } } class Person { String name; int age; void introduce() { System.out.println("Hello!"); } Person(String a_name,int an_age) { name = a_name; age = an_age; } void sayHello() { System.out.println("Hello!I am "+name+", I am "+age+" years old."); } void sayHello(Person p1) { System.out.println("Hello!I am "+p1.name +",I am "+p1.age+"