每周不定期刷题规则:
1.题目:5道选择题(CSP真题)+2道编程题(洛谷原题)φ(゜▽゜*)♪
2.认真做题,限时40分钟,不允许抄答案🧡
选择题
1. 在数据压缩编码中的哈夫曼编码方法,在本质是一种()的策略。
A. 枚举
B. 贪心
C. 递归
D. 动态规划
2. 若某算法的计算时间表示为递推关系式: T(N) = 2T(N / 2) + N log N T(1) = 1 则该算法的时间复杂度为( )。
A. O(N)
B. O(N log N)
C. O()
D. O()
3.链表不具有的特点是()
A.插入删除不需要移动元素
B.不必事先估计存储空间
C.所需空间与线性表长度成正比
D.可随机访问任一元素
4.将(2, 6, 10, 17)分别存储到某个地址区间为 0~10 的哈希表中,如果哈希函数 h(x) = ( ),将不会产生冲突,其中 a mod b 表示 a 除以 b 的余数。
A. x mod 11
B. x 2 mod 11
C. 2x mod 11
D. ⌊根号x⌋ mod 11,其中⌊根号x ⌋表示 根号x下取整
5.摩尔定律(Moore's law)是由英特尔创始人之一戈登·摩尔(Gordon Moore)提 出来的。根据摩尔定律,在过去几十年以及在可预测的未来几年,单块集成电路的集成度大 约每( )个月翻一番。
A. 1
B. 6
C. 18
D. 36
答案
BCDCC
编程题
1.https://www.luogu.com.cn/problem/P1908
2.P3374 【模板】树状数组 1 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
答案
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int tree[500010],ranks[500010],n;
long long ans;
struct point
{
int num,val;
}a[500010];
inline bool cmp(point q,point w)
{
if(q.val==w.val)
return q.num<w.num;
return q.val<w.val;
}
inline void insert(int p,int d)
{
for(;p<=n;p+=p&-p)
tree[p]+=d;
}
inline int query(int p)
{
int sum=0;
for(;p;p-=p&-p)
sum+=tree[p];
return sum;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i].val),a[i].num=i;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
ranks[a[i].num]=i;
for(int i=1;i<=n;i++)
{
insert(ranks[i],1);
ans+=i-query(ranks[i]);
}
printf("%lld",ans);
return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int n,m,tree[2000010];
int lowbit(int k)
{
return k & -k;
}
void add(int x,int k)
{
while(x<=n)
{
tree[x]+=k;
x+=lowbit(x);
}
}
int sum(int x)
{
int ans=0;
while(x!=0)
{
ans+=tree[x];
x-=lowbit(x);
}
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int a;
scanf("%d",&a);
add(i,a);
}
for(int i=1;i<=m;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==1)
add(b,c);
if(a==2)
cout<<sum(c)-sum(b-1)<<endl;
}
}
大家点个赞关个注呗
1369

被折叠的 条评论
为什么被折叠?



