D - All Assign Point Add (atcoder.jp)
题意就不说了,很好懂
第一次wa是因为用memset和数组的话会超时,所以第二次选用map和map.clear(),然后又因为map里面没放long long 寄了qwq,改过来后就能AC了,哎好废物(指我自己)
代码附上
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
map<ll,ll>m;
ll n,q;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int a;
cin>>a;
m[i]=a;
}
cin>>q;
ll f = 0;
for(int i=0;i<q;i++){
ll t,x,y;
cin>>t;
if(t==1){
cin>>x;
// cout<<x;
f = x;
// fac();
// memset(a,0,n*sizeof(ll));
m.clear();
// for(int i=0;i<n;i++){
// cout<<a[i]<<" ";
// }
}
if(t==2){
cin>>x>>y;
m[x]+=y;
}
if(t==3){
cin>>x;
cout<<m[x]+f<<"\n";
}
}
return 0;
}
加个map操作吧,提醒一下自己
map的基本操作函数:
C++ maps是一种关联式容器,包含“关键字/值”对
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数, (帮助评论区理解: 因为key值不会重复,所以只能是1 or 0)
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
(借鉴一下qwq)
————————————————
版权声明:本文为CSDN博主「sevencheng798」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sevenjoin/article/details/81943864