const

【经典】半平面交求解方程组——poj1755

馋奶兔 提交于 2020-02-28 19:42:46
神坑,精度要调到1e-10,板子没问题 /* 二分距离,凸包所有边往左平移这个距离,半平面交后看是否还有核存在 */ #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<vector> #include<algorithm> #include<queue> using namespace std; #define N 205 typedef double db; const db eps=1e-10; const db inf=1e10; const db pi=acos(-1.0); int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0; } int cmp(db k1,db k2){return sign(k1-k2);} int inmid(db k1,db k2,db k3){return sign(k1-k3)*sign(k2-k3)<=0;}// k3 在 [k1,k2] 内 struct point{ db x,y; point(){} point(db x,db y):x(x),y(y){} point operator + (const point &k1)

C++的强制类型转换

拜拜、爱过 提交于 2020-02-28 19:18:08
c/c++强制类型转换 Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型: 代码: int i; double d; i = (int) d;或者:i = int (d); 对于具有标准定义转换的简单类型而言工作的很好。然而,这样的转换符也能不分皂白的应用于类(class)和类的指针。ANSI-C++标准定义了四个新的转换符:'reinterpret_cast', 'static_cast', 'dynamic_cast' 和 'const_cast',目的在于控制类(class)之间的类型转换。 代码: reinterpret_cast<new_type>(expression) dynamic_cast<new_type>(expression) static_cast<new_type>(expression) const_cast<new_type>(expression) 1 reinterpret_cast reinterpret_cast 转换一个指针为其它类型的指针

formatTime() 时间戳,返回数据是计算距离现在的时间

别说谁变了你拦得住时间么 提交于 2020-02-28 14:36:47
1 const formatTime=function(tiem) {//时间转换 2 const timestamp = Date.now(); 3 return function (tiem) { 4 const diff = timestamp - tiem * 1000; 5 if (diff < 60 * 1000) { 6 return '刚刚'; 7 } else if (diff < 60 * 60 * 1000) { 8 return Math.floor(diff / (60 * 1000)) + '分钟前'; 9 } else if (diff < 24 * 60 * 60 * 1000) { 10 return Math.floor(diff / (60 * 60 * 1000)) + '小时前'; 11 } else { 12 const createTime = new Date(tiem * 1000); 13 const Day = createTime.getDate(); 14 const Month = createTime.getMonth() + 1; 15 const Hour = createTime.getHours(); 16 const Minute = createTime.getMinutes(); 17 function

泛化动态数组

我只是一个虾纸丫 提交于 2020-02-28 14:26:44
泛化动态数组 动态数组的核心思想是在存储数据时动态的管理数组元素占用的内存,通过调用动态数组的类方法来对数组中的数据进行 增删改查 操作。最初我们为数组申请10个元素的空间,放我们不断向数组中添加数据时,会自动的申请更大的空间(这里申请的是原本容量的1.5倍,用的是移位操作),将原来内存块的数据拷贝到新的更大的内存块中。当我们删除数据,当空闲内存是总容量的一半且不小于最小容量(10)时,将自动对数组内存缩容操作。 抽向数据类型(ADT) :(linearList.h) /************************************************************************* > File Name : linearList.h > Author : Harold > Mail : 2106562095@qq.com > Github : www.github.com/Haroldcc > Created Time : 2020年02月26日 11时02分58秒 ************************************************************************/ /***** 线性表的抽象定义 *****/ # ifndef LINEARLIST_H # define LINEARLIST_H #

泛型单链表

放肆的年华 提交于 2020-02-28 14:22:14
泛型单链表 单链表将每个数据分为节点,每个节点存储数据和指向下一个节点的指针。这样数据就不用在内存中使用连续的存储空间,有更大的灵活性。 这里将单链表分为节点类(Node)和链表类(singleLinkedList),由于链表类需要访问到Node类的数据,因此将Node类的数据声明为 public ,也可以将链表类声明为节点类的友元类。 抽向数据类型(ADT) :(linearList.h) /************************************************************************* > File Name : linearList.h > Author : Harold > Mail : 2106562095@qq.com > Github : www.github.com/Haroldcc > Created Time : 2020年02月26日 11时02分58秒 ************************************************************************/ /***** 线性表的抽象定义 *****/ # ifndef LINEARLIST_H # define LINEARLIST_H # include <iostream> template < typename

DECLARE_META_INTERFACE(INTERFACE)和IMPLEMENT_META_INTERFACE(INTERFACE, NAME)宏定义分析

给你一囗甜甜゛ 提交于 2020-02-28 14:19:33
这里讲的两个宏定义是IPC中鼎鼎大名的 DECLARE_META_INTERFACE(INTERFACE) IMPLEMENT_META_INTERFACE(INTERFACE, NAME) 定义 frameworks\base\include\utils\IInterface.h # define DECLARE_META_INTERFACE ( INTERFACE ) \ static const String16 descriptor ; \ static sp < I # # INTERFACE > asInterface ( const sp < IBinder > & obj ) ; \ virtual String16 getInterfaceDescriptor ( ) const ; \ # define IMPLEMENT_META_INTERFACE ( INTERFACE , NAME ) \ const String16 I # # INTERFACE : : descriptor ( NAME ) ; \ String16 I # # INTERFACE : : getInterfaceDescriptor ( ) const { \ return I # # INTERFACE : : descriptor ; \ } \ sp < I # #

C++四种类型转换

两盒软妹~` 提交于 2020-02-28 13:32:45
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。      static_cast 静态类型转换。如int转换成char reinterpreter_cast 重新解释类型    dynamic_cast 命名上理解是动态类型转换。如子类和父类之间的多态类型转换。      const_cast, 字面上理解就是去const属性。 4种类型转换的格式: TYPE B = static_cast<TYPE> (a) 一般性介绍 1)static_cast<>() 静态类型转换, 编译的时c++编译器会做类型检查 ; 基本类型能转换 但是不能转换指针类型 2)若不同类型之间, 进行强制类型转换 ,用reinterpret_cast<>() 进行重新解释 3)一般性结论: C语言中 能隐式类型转换的,在c++中可用 static_cast<>()进行类型转换。因C++编译器在编译检查一般都能通过; C语言中不能隐式类型转换的,在c++中可以用 reinterpret_cast<>() 进行强行类型 解释。总结:static_cast<>()和reinterpret_cast<>() 基本上把C语言中的 强制类型转换给覆盖 reinterpret_cast<>(

UVaLive 3357 Pinary (Fib数列+递归)

谁说我不能喝 提交于 2020-02-28 11:37:45
题意:求第 k 个不含前导 0 和连续 1 的二进制串。 析:1,10,100,101,1000,...很容易发现长度为 i 的二进制串的个数正好就是Fib数列的第 i 个数,因为第 i 个也有子问题,其子问题也就是Fib,这样就可以用递归来解决了。 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> #include <set> #include <queue> #include <algorithm> #include <vector> #include <map> #include <cctype> #include <cmath> #include <stack> #include <sstream> #include <list> #include <assert.h> #include <bitset> #include <numeric> #define debug() puts("++++") #define gcd(a, b) __gcd(a, b) #define lson

HDU-4686 Arc of Dream 构造矩阵

a 夏天 提交于 2020-02-28 11:33:25
  题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4686   因为a i = a i-1 *AX+AY ,b i = b i-1 *BX+BY ,那么ai*bi=AX*BX*A*a i-1 *b i-1 +AX*BY*a i-1 +BX*AY*b i-1 +AY*BYAY。令Sn为ai*bi前n项的和,Sn=Sn-1 + an*bn,因此我们可以构造一个如下的转移矩阵:   然后矩阵乘法优化就可以了。。。   注意此题n=0的情况!   其实矩阵大小只要5就可以了,那几个常数项可以合并到一列。。。 1 //STATUS:C++_AC_1296MS_232KB 2 #include <functional> 3 #include <algorithm> 4 #include <iostream> 5 //#include <ext/rope> 6 #include <fstream> 7 #include <sstream> 8 #include <iomanip> 9 #include <numeric> 10 #include <cstring> 11 #include <cassert> 12 #include <cstdio> 13 #include <string> 14 #include <vector> 15

如何优雅地使用 ES6 箭头函数

坚强是说给别人听的谎言 提交于 2020-02-28 11:24:31
箭头函数以其简洁的语法、没有烦人的 this 问题而广受欢迎,非常适合用作回调函数。 本文将介绍5个最佳实践方法,帮你用好箭头函数。 1. 箭头函数名称推断 JavaScript 中的箭头函数是_匿名函数_:函数的 name 属性是空字符串 '' 。 ( number => number + 1 ).name; // => '' 匿名函数在调试过程中和调用栈分析里被标记为 anonymous 。很遗憾, anonymous 对执行中的代码没有提供任何追踪信息。 下面是代码中执行匿名函数的调试截图: 右边的调用栈包含2个标记为 anonymous 的函数。从这样的调用栈里你无法得到任何有用的信息。 所幸的是, 函数名称推断 (ES2015 的特性)可以在特定条件下 检测到 函数名称。名称推断是指,JavaScript 可以从其语法位置确定箭头函数名:例如,从指向函数对象的变量名得到。 我们来看看函数名称推断是怎么工作的: const increaseNumber = number => number + 1; increaseNumber.name; // => 'increaseNumber' 由于变量 increaseNumber 指向这个箭头函数,JavaScript 就认为 'increaseNumber' 可以作为这个函数的名称。 现在我们来看使用了名称推断后的调试过程: