MUL

BZOJ4944 泳池 解题报告

回眸只為那壹抹淺笑 提交于 2020-12-17 00:03:04
题目描述 有一个 \(n\) 行无穷列的海域,每个格子有 \(q\) 的概率安全, \(1-q\) 的概率不安全。从中框出一个面积最大的矩形,满足以下两个条件: (1)矩形内的格子均安全; (2)矩形必须紧靠海域的最左端(即包含第一列的格子)。 问最大面积为 \(k\) 的概率是多少。这里在模998244353意义下计算,给出 \(q\) 的分数表示形式 \(q=x/y\) 。 数据规模: \(1 \le n \le 10^9, 1 \le k \le 5 \times 10^4\) 。 简要题解 该问题等价于不超过 \(k\) 的概率减去不超过 \(k-1\) 的概率。 设 \(dp[i][j]\) 表示海域有 \(i\) 行,且第1列到第 \(j\) 列全安全的条件下,选取的最大面积不超过 \(k\) 的概率。我们要求的即为 \(dp[n][0]\) 。 初始条件和边界条件如下: \(dp[i][j]=0,i \times j>k,dp[0][j]=1\) 考虑 \(dp[i][j]\) 从谁转移。有两种情况: 情况一:第 \(j+1\) 列全安全; 情况二:第 \(j+1\) 列存在不安全的格子,则可以枚举第 \(j+1\) 列最靠上的不安全位置 \(t\) ,那么当且仅当上面 \(t-1\) 行面积不超过 \(k\) (概率 \(dp[t - 1][j + 1]{q^{t

mysql中key 、primary key 、unique key 与index区别

半腔热情 提交于 2020-12-16 07:16:01
索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。 表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。 如果一个表有1000行,这比顺序读取至少快100倍。注意你需要存取几乎所有1000行,它较快的顺序读取,因为此时我们避免磁盘寻道。 所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。字符串是自动地压缩前缀和结尾空间。 索引用于: 快速找出匹配一个WHERE子句的行; 当执行联结时,从其他表检索行; 对特定的索引列找出MAX()或MIN()值; 如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。 如果所有键值部分跟随DESC,键以倒序被读取。 在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。 如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。 ————————————————————————————————————————————————————————————————————————————— 下面是建表的语句: [sql] view plain copy

mysql中key 、primary key 、unique key 与index区别

断了今生、忘了曾经 提交于 2020-12-16 07:15:28
<div id="article_content" class="article_content csdn-tracking-statistics tracking-click" data-mod="popu_519" data-dsm="post" style="overflow: hidden;"> <p><span style="font-family:Microsoft YaHei"><span style="font-size:18px; color:#ff0000"><span style="line-height:25.2px"></span></span></span></p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"> 索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family

杂记:GCC内联汇编

此生再无相见时 提交于 2020-12-13 14:00:58
Author: retrhelo Date: 2020.12.13 转载请注明出处 注意,本文仅基于GCC编译器,不确认是否在其他编译器环境下有效。 1. 使用asm()语句在C语言中嵌入汇编代码 我们可以使用 asm() 语句或是 __asm__() 语句来嵌入汇编代码。通常来说这两者的用法是相同的。其使用方法如下所示 asm ( "assembly code" : output operands /* optional */ : input operands /* optional */ : list of clobbered registers /* optional */ ); 1.1 Assembly Code(汇编代码) 这一部分用于填入所要执行的汇编代码,通常按照C风格字符串的格式填入,在不同的语句之间要填入 \n 作为换行符。 1.2 Outputs Operands(输出操作数) 这一部分视具体情况而言是可选的。通常使用形如 "=r" (var) 的形式编写代码,以将寄存器和变量联系起来。其中, r 可以使用具体的字符来指定所使用的寄存器,其规则如下表所示 | r | Registers | | :------------: | :------------: | | a | %eax, %ax, %al | | b | %ebx, %bx, %bl | | c |

leetcode math类型题目解题总结

天大地大妈咪最大 提交于 2020-12-12 10:05:15
2. Add Two Numbers https://leetcode.com/problems/add-two-numbers/description/ class Solution { public : ListNode * addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode result( - 1 ); ListNode * current = & result; int add = 0 ; while (l1!=NULL || l2!= NULL){ int val1 = 0 ; int val2 = 0 ; if (l1!= NULL){ val1 = l1-> val; l1 = l1-> next; } if (l2!= NULL){ val2 = l2-> val; l2 = l2-> next; } current ->next = new ListNode((val1+val2+add)% 10 ); add = (val1+val2+add)/ 10 ; current = current-> next; } if (add == 1 ) current ->next = new ListNode( 1 ); return result.next; } }; View Code 7. Reverse

以太坊:在合约里调用指定地址的另一已部署合约

冷暖自知 提交于 2020-12-09 02:29:57
转载请注明出处: https://www.cnblogs.com/zhizaixingzou/p/10122371.html 目录 1. 在合约里调用指定地址的另一已部署合约 后面的讲解已在下面的在线 IDE 中验证过: https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.25+commit.59dbf8f1.js 1.1. 第一个合约:供调用的合约 编写源码: 1 pragma solidity ^0.4.11 ; 2 3 contract DataStore { 4 uint256 data; 5 6 function set(uint256 x) public { 7 data = x; 8 } 9 10 function get() public view returns (uint256) { 11 return data; 12 } 13 } 编译得到字节码:

【计算机组成原理】指令系统-寻址

浪尽此生 提交于 2020-12-06 05:46:04
一、指令和数据的寻址方式 操作数或指令在存储器中的地址:某个操作数或某条指令存放在某个存储单元时其存储单元的编号 在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。 寻找方式:当采用地址指定方式时,形成操作数或指令地址的方式。 寻址方式分为两类:指令寻址和数据寻址。 1)指令寻址:确定下一条预执行指令的指令地址 a、顺序寻址:(PC)+1->PC 程序计数器自动加1 b、跳跃寻址:由转移指令指出 2)数据寻址:确定本条指令的操作数地址 指令中所给出的地址码,并不一定是操作数的有效地址。 寻址过程就是把操作数的形式地址,变换为操作数的有效地址。 例如:一种单地址指令的结构如下所示,其中用X I D各字段组成该指令的操作数地址。 二、寻址方式 1、隐含寻址(操作数在累加寄存器中) 在指令中不明显的给出而是隐含着操作数的地址 例如:单地址的指令格式,没有在地址字段指明第二操作数地址,而是规定累加寄存器AL或AX作为第二操作数地址,AL或AX对单地址指令格式来说是隐含地址 eg: MOV AL ,LSRC_BYTE MUL RSRC_BYTE ADD 寻址特征 A 操作数地址隐含在操作码中,(寻址特征指明寻址类型)。 另一个操作数隐含在ACC中 先在内存中地址为A的地方找到一个操作数,另一个操作数隐含在寄存器ACC里,从ACC里取出另外一个操作数

JS高阶函数之柯里化

久未见 提交于 2020-11-30 11:54:52
JS高阶函数之柯里化 在最近项目中遇到了一个问题,字符串(0)(1)-(2)-(3)(4)代表具有(0)(1)(4)权限,-(2)-(3)代表被排除,这时候很快就联想到柯里化这个词的,之前还是在看一篇算法题提到函数柯里化(Currying),满满的音译既视感,实际了解之后才发现其实就是高阶函数的一个特殊用法。 柯里化是指这样一个函数(假设叫做createCurry),它能够接收函数A作为参数,运行后能够返回一个新的函数。并且这个新的函数能够处理函数A的剩余参数。 我们可以先看下函数式编程穷人版思路,举个栗子: var str = " JavaScript " ; const trim = str => str . trim ( ) ; const warpInSpan = str => `<span> ${ str } </span>` ; const tolower = str => str . toLowerCase ( ) ; console . log ( tolower ( warpInSpan ( trim ( str ) ) ) ; //输出<span>javascript</span> 我们可以看到,这种实现思路非常简单,但是对于一个追求可读性程序猿来说,这种一层一层嵌套肯定是不能满足的。这时候我们可以使用函数式编程之管道(从左至右分别处理数据流的过程称为管道或序列

NOI2013矩阵游戏

感情迁移 提交于 2020-11-27 05:10:54
这就是区分高中生和小学生爸爸的题目吧。 推导扣一个网上的式子吧 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int mod=1e9+ 7 ; 4 typedef long long ll; 5 ll a,b,c,d; 6 ll qmod(ll x,ll y) 7 { 8 ll ans= 1 ; 9 while (y) 10 { 11 if (y& 1 )ans=x*ans% mod; 12 x=x*x%mod;y>>= 1 ; 13 } 14 return ans; 15 } 16 struct numb 17 { 18 ll pow,mul; 19 numb(){pow=mul= 0 ;} 20 }n,m; 21 numb read() 22 { 23 char ch;ch= getchar();numb a; 24 while (ch> ' 9 ' ||ch< ' 0 ' )ch= getchar(); 25 while (ch<= ' 9 ' &&ch>= ' 0 ' ) 26 { 27 a.mul=(a.mul* 10 %mod+ch- ' 0 ' )% mod; 28 a.pow=(a.pow* 10 %(mod- 1 )+ch- ' 0 ' )%(mod- 1 ); 29 ch= getchar();

微机原理

纵然是瞬间 提交于 2020-11-24 13:21:29
第一章  微型计算机基础 第二章   微处理器与系统总线 第三章  8086的指令系统与寻址方式 !有很多东西没写。之后继续 第一章  微型计算机基础 第一节  微型计算机发展概况 计算机是一种自动、高速、精确地进行信息处理的现代化电子设备。自从1946年第一台计算机诞生,计算机已经由电子管时代、晶体管时代、中小规模集成电路时代、发展到大规模、超大规模集成电路时代、第五代计算机、甚至量子计算机发展。 微处理器也有了飞速的发展,从70年代初,由大规模集成电路组成的微型计算机问世,经历30余年-推出了四代产品(4位微处理器、8位微处理器、16位微处理器、32位微处理器及以上)在微型计算机发展过程中,最成功的也最具有影响力的是IBM PC系列微机,又称PC机(PERSONAL COMPUTER)。 在微型计算机发展的同时,软件系统也得到了迅速的发展。以操作系统为例,PC机最初使用的是DOS操作系统,随着PC机的升级,DOS操作系统以由开始的DOS1.0版本升级到DOS6.2版本。DOS操作系统虽然有着很大的改进,但它仍是一种采用命令行接口的单任务、单用户的操作系统。和DOS操作系统相比,MS Windows操作系统有更大的优越性.MS windows提供了一个具有图形功能的用户界面操作环境,使用户使用更方便,因此得到了广泛的应用。MS Windows也由 WIN 3.1发展到WIN95