2018年11月

每个规则有两个基本部分:
选择器{
属性:值
}

选择器可以是元素选择器(p span等)

选择器分组

选择器可以多选:

h2,p{

}
表示h2,p标签都应用如下规则

通配选择器

此类选择器可与任何元素匹配 类似通配符一样
*{
color:red
}

类选择器&ID选择器

.className{

}

#idName{

}

同时选择器

当把两个类名连在一起则可以实现 仅对两个类同时使用时生效假设:
.a.b{
color:red
}
<div class="a b"></div>

属性选择器

可以指定一个 标签的下属属性比如:

h1[class]{
    color:red
}
<h1 class="a">df</h1>
<h1 class="b">ff</h1>
<h1 class="c">gg</h1>

还可以这样用

h1[moon]{
    color:red
}
<h1 moon="1">d</h1>
<h1 moon="2">f</h1>

img[alt]{
    color:red
}
<img alt="x"/>

如果想把所有带有title属性的都生效规则 则:
*[title]{

color:red

}
还可以:
atitle{

color:red

}
仅当title和href同时出现时

根据具体属性值

如:
a[href="http://www.baidu.com"]
{
color:red
}

带有部分属性值选择

a[class~="warning"]{
color:red
}
//生效

还有:
class^="warning" warning开头
class$="warning" warning结尾
class*="warning" 包含warning子串

特定属性选择

img[src|="figure"] //src属性中 figure 以及figure-开头的

特殊性

如果一个元素有两个或多个冲突的属性声明则最高特殊性的声明就会胜出

  • 内联样式 特殊性+1000
  • 对于选择器中给定的各个ID属性值:加100
  • 对于选择器中给定的各个类的属性值、属性选择或伪类加10
  • 对于选择器中给定的各个元素和伪元素加1
    有些特别重要的属性我们可以增加!important来提高层级

通配选择不加任何特殊性

继承

当前元素会继承父元素的属性

有一些属性是不能继承的例如:border 继承值没有特殊性 通配符往往会继承。
如果特殊性相同则会按以下进行排序:

  • 按权重和来源排序(importan 创造人员的正常生命 读者的正常生命 用户代理的声明)
  • 按特殊性排序
  • 按顺序排序

题目描述
猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。
Update:数据已加强。

输入输出格式
输入格式:
第一行,一个数n,表示序列中有n个数。

第二行n个数,表示给定的序列。序列中每个数字不超过10^910
9

输出格式:
给定序列中逆序对的数目。

输入输出样例
输入样例#1:
6
5 4 2 6 3 1

输出样例#1:
11

说明
对于25%的数据,n leq 2500n≤2500
对于50%的数据,n leq 4 times 10^4n≤4×10
4

对于所有数据,n leq 5 times 10^5n≤5×10
5

请使用较快的输入输出

应该不会n方过50万吧 by chen_zhe
详细解释:https://www.cnblogs.com/tsunami-lj/p/6440013.html

#include <iostream>
#include <cstdio>
using namespace std; 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
long long n;
long long arr[5*10*10*10*10*10+1];
long long tmp[5*10*10*10*10*10+1];
long long res = 0;
void mergeSort(long long left,long long right){
    if(left < right){
        long long mid = (left+(right-left)/2);
        mergeSort(left,mid);
        mergeSort(mid+1,right);
        long long z = left,y = mid+1;
        long long num = z;
        while(z <= mid && y <= right){
            if(arr[z] <= arr[y]){
                tmp[num++] = arr[z++];
            }else{
                tmp[num++] = arr[y++];
                res += mid - z + 1;
                printf("===================\n");
                printf("%d\n",left);
                printf("%d\n",right);
                printf("%d\n",mid);
                printf("%d\n",mid - z + 1);
                printf("===================\n");
            }
        }
        while(z <= mid){
            tmp[num++] = arr[z++];
        }
        while(y <= right){
            tmp[num++] = arr[y++];
        }
        for(long long i=left;i<=right;i++){
            arr[i] = tmp[i];
        }
    }
}
int main(int argc, char** argv) {
    cin >> n;
    for(long long i = 0;i<n;i++){
        scanf("%lld",&arr[i]);
    }
    mergeSort(0,n-1);
    printf("%lld",res);
    return 0;
}

元素的两种形式:替换、非替换

  • 替换元素 img 等 由载体提供内容展示
  • 非替换元素 p span 等
  • 块级元素 p div
  • 行内元素 在一个文本行内生成元素框 而不会打断这行文本 a标签 strong em 等

link标签可以引用网址上的css
<link rel="stylesheet" type="text/css" href="地址" media="作用媒体"/>
media可供属性
all 所有
aural 语音合成
braille braille 设备文档。。………………

候选样式表:
rel="alternate" 可设为备选样式表 在浏览器可选择

@import

此方法也可以加载外部css 但是要求写在style 标签里面

CSS注释// / /

内联样式

可以在标签里面单独设style
<p style="color:red"></p>