自己做TLE:奈何想不出怎么用差分
- #include
- using namespace std;
- //3279 改变数组元素(超时)
- const int N=2e5+10;
- vector<int>a;
- int t,n;
- int main()
- {
- cin>>t;
- while(t--)
- {
- cin>>n;
- for(int i=0;i
- {
- int b;
- cin>>b;
- a.push_back(0);
- int idx=a.size()-1;
- while(idx>=0&&b--)
- {
- a[idx--]=1;
- }
- }
- cout<
- a.clear();
- }
- }
y的做法:根据本题特点,不去纠结中间具体加了多少,利用差分,只关心左右边界;最后巧妙地用!!来进行强制类型转换,输出0,1;(太厉害了)
- #include
- using 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<=n;i++)
- {
- //i有一层意思:i为几,数组上就有几个数
- int m;
- cin>>m;
- m=min(m,i);
- //确定要在(l,r)区间上加数
- int r=i,l=i-m+1;
- a[r+1]--,a[l]++;
- }
- for(int i=1;i<=n;i++)a[i]+=a[i-1];
- for(int i=1;i<=n;i++)cout<" ";
- cout<
-
-
-
- }
- }
//797. 差分
开始自己写的时候,把a看成差分了(不该犯)
- #include
- using 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<=n;i++)
- {
- cin>>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<=n;i++)b[i]+=b[i-1],cout<" ";
-
- }
//798差分矩阵
((^-^)V一次做对)
做的时候还是差点忘了差分,一定要分清a数组和s数组的关系,a是s的差分,s是a的前缀和
在矩阵中:给出p二维数组,求其差分数组f;可以反着理解,f数组进行求前缀和之后是p数组。
也就是p数组是s数组,s数组是由(i-1,j)(i,j-1)(i-1,j-1)计算得到的。减去就好啦。
- #include
- using namespace std;
- //789 差分矩阵
- const int N=1e3+10;
- int f[N][N];
- int p[N][N];
- int n,m,q;
- int main()
- {
- cin >>n>>m>>q;
- //原始数组
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=m;j++)
- {
- cin>>p[i][j];
- }
- }
- //求解差分数组
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=m;j++)
- {
- f[i][j]=p[i][j]-p[i][j-1]-p[i-1][j]+p[i-1][j-1];
- }
- }
- while(q--)
- {
- int x1,x2,y1,y2,c;
- cin>>x1>>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<=n;i++)
- {
- for(int j=1;j<=m;j++)
- {
- f[i][j]+=f[i][j-1]+f[i-1][j]-f[i-1][j-1];
- cout<
" "; - }
- cout<
- }
-
- }
-
相关阅读:
私域引流宝PHP源码 以及搭建教程
【C语言】【数据结构】【环形链表判断是否带环并返回进环节点】有数学推导加图解
计算机网络---万维网(WWW)
批发商/分销商会有一波向B2B转型的浪潮
docker搭建本地私有仓库
C#面:C#面向对象的思想主要包括什么?
全网最全!!Qt实现图片旋转及图片旋转动画的几种方式
帐号授权助力软件产业打造独有商业优势
springboot载入配置文件
发布者Publisher的编程实现——小乌龟实现匀速跑圈案例
-
原文地址:https://blog.csdn.net/qq_61369552/article/details/136431255
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU