t1

浮点数运算的精确

自作多情 提交于 2019-12-02 22:31:58
var floatObj = function () { /* * 判断obj是否为一个整数 */ function isInteger(obj) { return Math.floor(obj) === obj } /* * 将一个浮点数转成整数,返回整数和倍数。如 3.14 >> 314,倍数是 100 * @param floatNum {number} 小数 * @return {object} * {times:100, num: 314} */ function toInteger(floatNum) { var ret = {times: 1, num: 0}; if (isInteger(floatNum)) { ret.num = floatNum; return ret } var strfi = floatNum + ''; var dotPos = strfi.indexOf('.'); var len = strfi.substr(dotPos + 1).length; var times = Math.pow(10, len); var intNum = parseInt(floatNum * times + 0.5, 10); ret.times = times; ret.num = intNum; return ret } /* * 核心方法

Linux常用精简命令实训练习

匿名 (未验证) 提交于 2019-12-02 21:59:42
Linux 常用精简命令实训 一、文件操作 1.1 在家目录下创建testDir目录,随后进入testDir,分别采用相对路径和绝对路径两种方式,再进入到目录/home。 1.2 在家目录下,创建目录testDir/java/docs和目录testDir/shell/docs 1.3 在家目录下,目录testDir/java/docs中创建文件t1(并且文件中写入内容:“this file name is t1”),目录testDir/shell/docs中创建文件t2(并且文件中写入内容:“THIS file name : t2”)。 1.4 在家目录下,创建软链接文件_t1(_t1链接到testDir/java/docs/t1),家目录中创建软链接文件_t2(_t2链接到testDir/shell/docs/t2)。 1.5在家目录下,把目录testUser拷贝一份为testUser1,然后把目录testUser1重命名为:testUser.bak。 1.6在家目录下,删除目录testUser.bak。 1.7在家目录下,查找所有的链接文件。 1.8在家目录下,查找所有的普通文件并显示普通文件的详细信息。 1.9在家目录下,查找所有的目录并过滤掉“.”目录 1.10在家目录下,查找所有包含文本“file name”的普通文件。 1.11在家目录下,查找所有包含文本“this”和

java高并发系列 - 第9天:用户线程和守护线程

匿名 (未验证) 提交于 2019-12-02 21:52:03
守护线程 是一种特殊的线程,在后台默默地完成一些系统性的服务,比如 垃圾回收线程 、 JIT线程 都是 守护线程 。与之对应的是 用户线程 ,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作。如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。 所以当系统只剩下守护进程的时候,java虚拟机会自动退出 。 java线程分为用户线程和守护线程,线程的daemon属性为true表示是守护线程,false表示是用户线程。 下面我们来看一下守护线程的一些特性。 package com . itsoku . chat03 ; /** * 微信公众号:路人甲Java,专注于java技术分享(带你玩转 爬虫、分布式事务、异步消息服务、任务调度、分库分表、大数据等),喜欢请关注! */ public class Demo1 { public static class T1 extends Thread { public T1 ( String name ) { super ( name ); } @Override public void run () { System . out . println ( this . getName () + "开始执行," + ( this . isDaemon () ? "我是守护线程" : "我是用户线程"

20191026CSP-S模拟

依然范特西╮ 提交于 2019-12-02 11:46:10
T1 踩坑警告!!! 每个点走到的概率不同(可能多种方法走到了同一个点),千万不能直接把所有可能走到的点情况列举出来然后直接根据情况数求概率 昨天T1也挂,今天T1也挂,再挂T1直接不活 首先一个基础的期望概念: E ( x ) = ∑ i = 1 n p i ∗ x i E(x)=\sum\limits^n_{i=1}p_i*x_i E ( x ) = i = 1 ∑ n ​ p i ​ ∗ x i ​ 其中 p i p_i p i ​ 为概率, x i x_i x i ​ 为得到的结果 显然, x x x , y y y 两个坐标的变化是相互独立的,因此我们只需考虑一维即可 处理 x 2 x^2 x 2 ,我们发现: E [ x 2 ] = ∑ i = 0 n C n i ∗ ∑ j = 0 i ( i − 2 j ) 2 2 n E[x^2]=\frac{\sum\limits^n_{i=0}C^i_n*\sum\limits^i_{j=0}(i-2j)^2}{2^n} E [ x 2 ] = 2 n i = 0 ∑ n ​ C n i ​ ∗ j = 0 ∑ i ​ ( i − 2 j ) 2 ​ 其中 2 n 2^n 2 n 是走 n n n 步所有的情况, ∑ i = 0 n C n i \sum\limits^n_{i=0}C^i_n i = 0 ∑ n ​ C n

T1024模拟赛

风格不统一 提交于 2019-12-02 07:56:54
T1024 T1 爆零赛总是从T1做不出来开始 T1 题面: 古代龙人手中共有n粒秘药,我们可以用1表示「古老的秘药」,其余的用0表示。他将它们排成一列。古代龙人认为平衡是美的,于是他问Mark能选出多少个「平衡的区间」。「平衡的区间」是指首先选出一个区间[L, R],在它内部选出一个中间点mid,满足L<mid<R,mid是「古老的秘药」,且区间[L, mid]和[mid, R]中「古老的秘药」个数相等。 其实就是找出有多少个区间里面有奇数个 \(1\) 那么我们可以先处理出每个 \(1\) 的左边有多少 \(0\) 然后隔一个加一个求前缀和 \(sum[]\) 然后 \(O(n)\) 枚举左端点,用它左边的 \(0\) 乘右边 \(sum\) 的和 代码如下: #include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e6+10; int ts,n,a[maxn],cnt,rt[maxn]; ll sm[2],ans=0; int main() { scanf("%d%d",&ts,&n); for(int i=1;i<=n;i++) scanf("%1d",&a[i]),cnt+=a[i]; int sum=0; for(int i=n,j=cnt;i && j;i--)

有三个线程T1,T2,T3,怎么确保它们按顺序执行?

大城市里の小女人 提交于 2019-12-01 23:27:50
在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。 public class Test { public static void main(String[] args) throws InterruptedException{ Thread t1 = new Thread() { @Override public void run() { for (int i = 1; i < 10; i++) { System.out.println(i); } } }; Thread t2 = new Thread() { @Override public void run() { for(int i = 10; i < 20;i++) { System.out.println(i); } } }; Thread t3 = new Thread() { @Override public void run() { for(int i = 20; i < 30; i++) { System.out.println(i); } } }; t1.start(); t1.join(); t2.start(); t2.join(); t3.start(); t3.join(); } }    来源: https://www

mysql下实现窗口分析函数

南笙酒味 提交于 2019-12-01 13:55:32
窗口分析函数在做数据分析时十分常用,但是mysql却不支持。不过我们可以通过sql的形式实现这个功能 构造表数据 create table rank_over(id int,subid int,curd timestamp); …… insert into rank_over values(8,3,now()); insert into rank_over values(9,2,now()); 表数据如下 mysql> select * from rank_over; +------+-------+---------------------+ | id | subid | curd | +------+-------+---------------------+ | 1 | 1 | 2016-08-29 00:47:12 | | 2 | 1 | 2016-08-29 00:47:38 | | 3 | 1 | 2016-08-29 00:47:42 | | 4 | 2 | 2016-08-29 00:47:50 | | 5 | 2 | 2016-08-29 00:47:54 | | 6 | 3 | 2016-08-29 00:48:00 | | 7 | 4 | 2016-08-29 00:48:06 | | 8 | 3 | 2016-08-29 01:12:10 | | 9 | 2

09-sp_lock和sys.dm_tran_locks的用法

我是研究僧i 提交于 2019-11-30 10:19:08
一、总结 1.网址 https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-lock-transact-sql?redirectedfrom=MSDN&view=sql-server-2017(sp_lock) https://docs.microsoft.com/zh-cn/sql/relational-databases/system-dynamic-management-views/sys-dm-tran-locks-transact-sql?view=sql-server-2017(sys.dm_tran_locks) 2.查出结果具体含义参考官方文档 二、用到的SQL 1.根据object_id查看对象名称 命令:select OBJECT_NAME(245575913) SELECT OBJECT_ID('run.dbo.T1')     2.查询所有的锁 命令:exec sp_lock 3.查询指定进程的锁 命令:exec sp_lock 55 4.根据系统视图查询指定进程的锁 命令:select * from sys.dm_tran_locks where request_session_id=55 5.显示某个库的锁信息,参数是dbid 命令

MySQL中UNION和UNION ALL的使用

百般思念 提交于 2019-11-29 22:01:57
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如: select * from gc_dfys union select * from ls_jg_dfys 这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。 MySQL中的UNION ALL 而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。 从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下: select * from gc_dfys union all select * from ls_jg_dfys 使用Union,则所有返回的行都是唯一的,如同您已经对整个结果集合使用了DISTINCT 使用Union all,则不会排重,返回所有的行 如果您想使用ORDER

洛谷P3045 [USACO12FEB]牛券Cow Coupons

寵の児 提交于 2019-11-29 14:38:44
题目: 洛谷P3045 [USACO12FEB]牛券Cow Coupons 思路: 贪心 假设先用完所有优惠券,则只有两种决策:以原价购买未选物品中价格最低的;以最低代价退回当前用的一张优惠券,再以优惠价购买未选物品中优惠价最低的。 回退(反悔)操作可以用堆实现,具体实现: 用三个小根堆h1、h2、h3,分别存储未选物品的原价及编号、未选物品的优惠价及编号、已选物品退回优惠券的代价。 每次比较三个堆的堆顶t1、t2、t3,若当前花费加上min(t1,t2+t3)超过m就break,否则选择两种决策中花费较小的并弹掉堆顶。用bool数组记录每个物品是否被选过。 为了方便实现,最初可以在h3中加入k个0。 Code: #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, int> node; const int N = 1e5 + 5; priority_queue< node, vector<node>, greater<node> > h1, h2; priority_queue< ll, vector<ll>, greater<ll> > h3; ll n, k, m, cnt, sum, p[N], c[N]; bool mark[N]; inline void