代码模板(new)

Posted zb121

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码模板(new)相关的知识,希望对你有一定的参考价值。

1.树状数组:题目:UVA1428

技术图片
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<string>
 5 #include<cstring>
 6 #include<numeric>
 7 #include<vector>
 8 #include<map>
 9 #include<queue>
10 #include<set>
11 #include<cmath>
12 using namespace std;
13 typedef long long ll;
14 typedef pair<int,int>PII;
15 typedef pair<ll,ll>PLL;
16 
17 //树状数组和线段树是一样的下标均是从1开始的。。。这个一定不能出错。。。
18 
19 const int maxn=1e5+10;
20 
21 int tree[maxn+10];//树状数组。。。
22 int l[maxn+10],r[maxn+10];
23 
24 int lowbit(int x){//求解一个数二进制最后一个1的位置。。。
25     return x&(-x);
26 }
27 //树状数组求和不同于线段树每一次直接拿出来,树状数组的求和有可能每一次要进行加减的操作。。。
28 
29 int sum(int x){//注意x均是tree树状数组的下标。。。
30     int res=0;
31     while(x>0){//通过lowbit找只有最后一个1的数的值,我们只需要确定二进制存在1那么就继续遍历操作。。。
32         res+=tree[x];
33         x-=lowbit(x);//eg:x=7那么之后加上6,之后加上4,之后x为0,跳出循环。。。结束操作。。。
34     }
35     return res;//直接求出和。。
36 }
37 
38 void add(int x,int d){//这一步是增加操作。。。是从树根往上面进行操作。。。
39     while(x<maxn){
40         tree[x]+=d;//将当前的结点加上去。。。是从下往上加的。。。
41         x+=lowbit(x);//x是树的下标。。。
42     }
43 }
44 
45 //l[i],r[i]记录的都是比i位置数字要小的数字的个数。。。
46 
47 int main(){
48     int T;
49     cin>>T;
50     ll ans;
51     while(T--){
52         int a[maxn];
53         int n;
54         cin>>n;
55         for(int i=1;i<=n;i++){
56             cin>>a[i];
57         }
58         memset(tree,0,sizeof(tree));
59         memset(l,0,sizeof(l));
60         for(int i=1;i<=n;i++){
61             l[i]=sum(a[i]);
62             add(a[i],1);//个数均加一
63         }
64         memset(tree,0,sizeof(tree));
65         memset(r,0,sizeof(r));
66         for(int i=n;i>=1;i--){
67             r[i]=sum(a[i]);
68             add(a[i],1);
69         }
70         ans=0;
71         for(int i=2;i<n;i++){
72             ans=ans+l[i]*(n-r[i]-i)+r[i]*(i-1-l[i]);
73         }
74         cout<<ans<<endl;
75     }
76 
77     return 0;
78 }
View Code

 

以上是关于代码模板(new)的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段2——.vue文件的模板

Eclipse 中的通用代码片段或模板

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段

vscode代码片段生成vue模板

xml Eclipse模板(代码片段)检查参数并最终抛出IllegalArgumentException