小工具知识网

当前位置: 首页 > 行业知识 > 蓝桥每日一题 (差分)3月3号

行业知识

蓝桥每日一题 (差分)3月3号

2026-11-04 08:05:43 来源:互联网转载

//3279改变数组元素

���己做TLE:奈何想不出怎么用差分

()
#includeusing namespace std;//3279 改变数组元素(超时)const int N=2e5+10;vectora;int t,n;int main(){   cin>>t;   while(t--)   {       cin>>n;       for(int i=0;i>b;           a.push_back(0);           int idx=a.size()-1;           while(idx>=0&&b--)           {               a[idx--]=1;           }       }       for(int i=0;i

y的做法:根据本题特点,不去纠结中间具体加了多少,利用差分,只关心左右边界;最后巧妙地用!!来进行强制类型转换,输出0,1;(太厉害了)

#includeusing namespace std;//3279 改变数组元素const int N=2e5+10;int a[N];int t,n;int main(){   cin>>t;   while(t--)   {       cin>>n;       memset(a,0,(n+1)*4);       //看来差分普遍用1开头       for(int i=1;i>m;           m=min(m,i);           //确定要在(l,r)区间上加数           int r=i,l=i-m+1;           a[r+1]--,a[l]++;       }       for(int i=1;i开始自己写的时候,把a看成差分了(不该犯)() 
#includeusing namespace std;//797 差分(自己做最开始把a看做差分数组了)const int N=1e5+10;int a[N];int n,m;int b[N];//我们最后求的还是a的状态,所以一定不要直接对a进行操作//要先求差分数组int main(){   cin >>n>>m;   for(int i=1;i>a[i];       b[i]=a[i]-a[i-1];   }   while(m--)   {       int l,r,c;       cin>>l>>r>>c;       b[l]+=c;       b[r+1]-=c;   }   for(int i=1;i>q;   //原始数组   for(int i=1;ip[i][j];       }   }  //求解差分数组   for(int i=1;ix1>>y1>>x2>>y2>>c;       f[x1][y1]+=c;       f[x1][y2+1]-=c;       f[x2+1][y1]-=c;       f[x2+1][y2+1]+=c;   }   //求前缀和   for(int i=1;i

上一篇:服务器链接很久怎么办?

下一篇:外贸平台怎么引流?