inline

display

时间秒杀一切 提交于 2020-02-05 13:23:26
1. 引言   网页的所有元素,除了“块”就是“流”,而且“流”都是包含在“块”里面的(最外层的body就是一个“块”)。      其实,这部分知识都囊括在display这个样式设置中。      常用的属性有:none、block、inline、inline-block、inherit,其中inherit是继承父元素的样式,不用多说,其他的几个会在下文详解。 list-item:通过它可以模拟li列表样式; table:也是一个“块”,但和block相比,table具有包裹性; table-cell:最新的多列布局解决方案; 2. inline   常用的inline就是文字和图片,其实inline真没什么好说的,大家可以把它想象成一个杯子里的水,它是“流”,是没有大小和形状的,它的宽度取决于父容器的宽度。   因此,针对inline的标签,你设置宽度和高度是无效的,通过监控可以知道,该元素实际的宽度和高度都是auto,并不是我们设定的值。      一个很基础的问题:如何把inline元素转换成“块”元素?相信绝大部分人的回答是display:block,但是你应该知道这不是一个唯一的答案。至少我设置display:table也是可以的吧? 还有两种情况你应该去了解(如果你不知道的话): 第一,对inline 元素设置float 还是刚才那个例子

css知多少(10)——display

荒凉一梦 提交于 2020-02-05 13:20:25
原文: css知多少(10)——display 1. 引言   网页的所有元素,除了“块”就是“流”,而且“流”都是包含在“块”里面的(最外层的body就是一个“块”)。在本系列一开始讲《 浏览器默认样式 》的时候,大家也都看到了浏览器默认样式中规定了html元素哪些属于“块”(剩下的就是“流”)。这部分知识非常重要也非常基础,因此在所有的前端面试题中,都会问道哪些元素是“块”哪些元素是“流”。      其实,这部分知识都囊括在display这个样式设置中。在网上查找出display所有的属性,你会发现它有很多,但是不是每个都常用,甚至大部分你都没有用过。这个没关系,学以致用,用不到的就可以先不学,知道就行,什么时候用,什么时候再去详细学——前提是你知道有这么个东西,否则无从下手。      看上图。常用的属性有:none、block、inline、inline-block、inherit,其中inherit是继承父元素的样式,不用多说,其他的几个会在下文详解。其他的都不常用,但是有一些还是需要点出来,其实这些已经在《 浏览器默认样式 》一节讲到了,这里简单描述一下,详细的可以参考浏览器默认样式一节。 list-item:通过它可以模拟li列表样式; table:也是一个“块”,但和block相比,table具有包裹性; table-cell:最新的多列布局解决方案; 2.

JSOI2014

不羁的心 提交于 2020-02-05 11:46:13
B 宅男计划 题面: bzoj 题解:三分+贪心 可以发现一个 显然的 性质 就是你买外卖的次数和你能维持的天数大概是成一个单峰函数 证明不会 于是我们三分峰值 然后找到这个次数后再贪心 首先把那些又贵又放不久的扔掉,可以用单调栈 然后从最便宜的开始往上贪心 code C 骑士游戏 题面: bzoj 题解:最短路? 可以显然的写出一个dp方程,然而你会发现会有环 我们发现这个方程的形式和spfa的转移形式差不多 所以把所有点扔到队列里,初值设置魔法攻击的代价,跑最短路 如果这个点被更新了,则反图上与它相连的点都有可能更新,入队 codeC F 奇怪的计算器 题面: bzoj 题解:线段树 首先将这些值,因为不管怎么样都不会改变他们的大小关系 区间修改,如果最小的值小于下界就直接推平,上界同理 codeF G 支线剧情2 题面: bzoj 题解:树形dp 设 \(f[i]\) 表示这个点有存档,之后都不存档的最少代价 \[f[u]=\sum_{(u,v,w)\in E}{f[v]+siz[v]*w}\] 设 \(dp[u]\) 表示这个点子树内有存档的最小代价 如果当前点存档,儿子也有一个存档则 \(dp[u]+=dp[v]+deep[v]\) , \(deep\) 为从1到这个点的距离 否则直接转移(就是枚举一个最小值) codeG I 强连通图 题面: bzoj 题解:缩点

P3466 [POI2008]KLO-Building blocks(Splay)

喜夏-厌秋 提交于 2020-02-05 09:40:43
题意: N柱砖,希望有连续K柱的高度是一样的. 你可以选择以下两个动作 1:从某柱砖的顶端拿一块砖出来,丢掉不要了. 2:从仓库中拿出一块砖,放到另一柱.仓库无限大. 现在希望用最小次数的动作完成任务.你还要求输出结束状态时,每柱砖的高度 题解: 很显然,要让我们将这K个柱子变成一样高并且操作次数最少,就是求这K个数的中位数 所以我们需要用一种数据结构能够实现插入,删除,求第k大,它前面有多少个数,后面有多少个数。 然后根据这K个数和中位数就能计算出最少次数了 a n s = m i n ( ∑ i = l r ∣ a i − x ∣ ) ans = min(\sum_{i=l}^{r}|a_i-x|) a n s = m i n ( i = l ∑ r ​ ∣ a i ​ − x ∣ ) 找到中位数后就可以知道 a n s = m i n ( ∑ i = l m i d x − a i + ∑ i = m i d + 1 r a i − x ) ans = min(\sum_{i=l}^{mid}x-a_i+\sum_{i=mid+1}^{r}a_i-x) a n s = m i n ( i = l ∑ m i d ​ x − a i ​ + i = m i d + 1 ∑ r ​ a i ​ − x ) 左边可以通过将中位数伸展到根节点,然后求出比该数小的和及比它大的数的和即可

C++学习笔记2

China☆狼群 提交于 2020-02-04 00:12:26
二、C++基础知识 6、inline内联函数 在函数定义前冠以关键字 inline, 则该函数就被声明为内联函数 每当程序中出现对该函数的调用时, C++编译器使用函数体内的代码代替函数调用表达式。再编译过程替换 使用内联函数代替宏定义, 可以消除宏定义的不安全性。 内联函数具有宏定义的所有优点而没有缺点 浪费空间、节省时间 简单函数可以加上inline 7、缺省参数的函数 C++ 在声明函数原型时, 可为一个或多个参数指定缺省参数值, 以后调用此函数, 若省略其中某一参数, C++ 自动的以缺省值作为相应参数的值 int special(int x=5,float y=5.3); 当进行函数调用时, 可以有以下几种形式 1)special(100,79.8)//x=100, y=79.8 2)special(25);//x=25, y=5.3 3)special();//x=5,y=5.3 不能special(,25); 这是错误的 传实参的时候必须从左往右传,在设置缺省值的时候 必须 从右往左设置,有默认值的参数放在右边;没有缺省值的参数必须传参 #include<iostream> using namespace std; //函数声明, 缺省值在声明处设置 int my_add(int x=10,int y=20); int main() { cout<<"my_add()

matplotlib可视化_常用图

可紊 提交于 2020-02-03 20:29:08
今天整理下matplotlib常用到的图形 matplotlib 引入matplotlib包:import matplotlib.pyplot as plt 将图片内嵌在交互窗口,而不是弹出一个图片窗口 %matplotlib inline #notebook模式下 %pylab inline #ipython模式下 matplotlib官方文档 matplotlib官方文档:http://matplotlib.org/users/pyplot_tutorial.html​ pyplot的api http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot 散点图(plt.scatter) %matplotlib inline import matplotlib.pyplot as plt import numpy as np plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题 #rand 均匀分布和 randn高斯分布 x=np.random.randn(1,1000) y=np.random.randn(1,1000) T=np.arctan2(x,y) plt.scatter(x,y,c=T,s=25,alpha=0.5,marker='o'

What is the difference between display: inline-block and float: left

一世执手 提交于 2020-02-02 06:38:06
问题 I'm want to know why not just use display:inline-block all of the time INSTEAD of float:left. Inline-block seems to be much easier to control in terms of layout and not having issues with having to clear floats etc. I'm trying to get my head around why use one instead of the other. Many thanks, Emily. 回答1: The purpose of float is to allow text to wrap around it. So it's moved to the left or right side and taken out of the page flow. Line boxes containing the other text then avoid overlapping

C++ do inline functions prevent copying?

ぐ巨炮叔叔 提交于 2020-02-02 05:49:41
问题 Assuming the compiler does in fact inline foo is there a performance difference between these 2 statements? inline int foo (int val) { return val; } int main () { std::cout << foo(123) << std::endl; std::cout << 123 << std::endl; return 0; } Let's ignore any implications that move semantics and copy elision might have. 回答1: My compiler (gcc 4.7.2) produces nearly identical code for the two statements: _main: LFB1018: pushq %rbx LCFI0: movq __ZSt4cout@GOTPCREL(%rip), %rbx ; std::cout << foo

「JSOI2014」序列维护

我们两清 提交于 2020-02-01 22:38:19
「JSOI2014」序列维护 传送门 其实这题就是 luogu的模板线段树2 ,之所以要发题解就是因为被 \(\color{black}{\text{M}} \color{red}{\text{_sea}}\) 告知了一种比较NB的 \(\text{update}\) 的方式。 我们可以把修改操作统一化,视为 \(ax + b\) 的形式,然后我们按照原来的套路来维护两个标记,分别代表 \(a\) 和 \(b\) ,那么我们的更新就可以这么写: inline void f(int p, int atag, int mtag, int l, int r) { t[p].sum = (t[p].sum * mtag % P + 1ll * atag * (r - l + 1) % P) % P; t[p].atag = (t[p].atag * mtag + atag) % P; t[p].mtag = t[p].mtag * mtag % P; } 然后我们就只需要写一个维护 \(ax + b\) 操作的修改就可以了。 其实我们还可以发现这个东西还可以用于区间赋值 \((a = 0)\) 。 简直很妙有没有 参考代码: #include <cstdio> #define rg register #define file(x) freopen(x".in", "r", stdin),

CF6

半腔热情 提交于 2020-02-01 22:36:44
A A 不解释 #include<bits/stdc++.h> using namespace std; namespace red{ inline int read() { int x=0;char ch,f=1; for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar()); if(ch=='-') f=0,ch=getchar(); while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return f?x:-x; } int a[5]; inline bool check(int id) { return (a[id]+a[id+1]>a[id+2]&&a[id+2]-a[id+1]<a[id]); } inline bool check2(int id) { return (a[id]+a[id+1]>=a[id+2]); } inline void main() { for(int i=1;i<=4;++i) a[i]=read(); sort(a+1,a+4+1); if(check(1)||check(2)) puts("TRIANGLE"); else if(check2(1)||check2(2)) puts("SEGMENT"); else