6 条题解

  • 8
    @ 2023-12-17 18:57:48

    100Accepted Code:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn=5e6+6;
    const int INF=1e9;
    int a[maxn],cf[maxn];
    int ans,sum;
    int main()
    {
    	int n,p;
    	scanf("%d%d",&n,&p);
    	for(int i=1;i<=n;i++)
    		scanf("%d",&a[i]);
    	while(p--)
    	{
    		int x,y,z;
    		scanf("%d%d%d",&x,&y,&z);
    		cf[x]+=z;
    		cf[y+1]-=z;
    	}
    	ans=INF;
    	for(int i=1;i<=n;i++)
    	{
    		a[i]=a[i]+sum+cf[i];
    		sum+=cf[i];
    		ans=min(ans,a[i]);
    	}
    	printf("%d\n",ans);
    	return 0;
    }
    
    
    • @ 2024-3-1 20:59:58

      冒昧的问一句这样开数组不会炸吗???

  • 6
    @ 2024-2-16 16:54:20

    千万要把cin和cout换成scanf和printf(9号点179ms左右)!!!,否则你会哭的!!! 要不就加上这个加速

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);//9号点800多毫秒
    
    • 2
      @ 2023-6-25 23:27:00
      #include<cstdio>
      #include<iostream>
      #include<cstring>
      #include<algorithm>
      using namespace std;
      long long sum,i,op[10000090],zop[10000090],cn,x,y,z,minn=300;
      int main()
      {
      	cin>>sum>>cn;
      	for(i=1;i<=sum;i++)
      	cin>>op[i];
      	for(i=1;i<=sum;i++)
      	zop[i]=op[i]-op[i-1];
      	for(i=0;i<cn;i++)
      	{
      		cin>>x>>y>>z;
      		zop[x]+=z;
      		zop[y+1]-=z;
      	}
      	for(i=1;i<=sum;i++)
      	{
      		op[i]=op[i-1]+zop[i];
      		if(op[i]<minn)
      		minn=op[i];
      	}
      	cout<<minn<<endl;
      	return 0;
      }
      
      • 0
        @ 2023-12-10 18:15:34

        不要抄题解,否则你会哭的😄 。

        #include <bits/stdc++.h>
        using namespace std;
        int a[5OOOOO1],b[5OOOOO1],n,p,minn=2OO;
        int main()
        {
            cin>>n>>p;//↓
            for(int i=1;i<=n;i++){
                cin>>a[i];
                b[i]=a[i]-a[i-1];
            }//↑输入数组a并初始化差分数组b.
            //↓
            for(int i=1;i<=p;i++){
                int x,y,z;
                cin>>x>>y>>z;
                b[x]+=z;
                b[y+1]-=z;
            }
            for(int i=1;i<=n;i++){
                a[i]=a[i-1]+b[i];//↑利用b数组把a_x~a_y增加z.
                minn=min(minn,a[i]);//求最小值.
            }
            cout<<minn;
            return O;
        }//hetao61O9326(zhang梓阳).
        
      • -3
        @ 2023-11-12 14:00:46
        解题思路
        这题
        老师上课讲过思路了
        下代码!
        #include<bits/stdc++.h>
        using namespace std;
        int n,p[5000010],j_j[5000010];
        int o_o,x,y,z,minn=300;
        int main(){
        cin>>n>>o_o;
        for(int i=1;i<=n;i++)
        cin>>p[i];
        for(int i=1;i<=n;i++)
        j_j[i]=p[i]-p[i-1];
        for(int i=0;i<o_o;i++){
        cin>>x>>y>>z;
        j_j[x]+=z;
        j_j[y+1]-=z;}
        for(int i=1;i<=n;i++){
        p[i]=p[i-1]+j_j[i];
        minn=min(p[i],minn);}
        cout<<minn<<endl;}
        
        • @ 2023-12-21 19:10:50

          (⊙﹏⊙)

          o_o和j_j

          雀氏十亿过钱奏德任。 { 确实是一个欠揍的人。 }

      • -4
        @ 2023-6-25 10:29:25
        思路 我们可以维护1个差分数组 。每一次修改时,就修改对应差分数组。
        代码
        
        #include<bits/stdc++.h>
        using namespace std;
        int d[5000001];
        int a[5000001];
        int main()
        {
        	int n,p,x,y,z,i,min=1e9;
        	cin>>n>>p;
        	for(i=1;i<=n;i++)
        	{
        		cin>>a[i];
        	}
        
        for(i=1;i<=n;i++)
        {
        	d[i]=a[i]-a[i-1];
        }
        for(i=0;i<p;i++)
        {
        	cin>>x>>y>>z;
        	d[x]+=z;
        	d[y+1]-=z;
        }
        for(i=1;i<=n;i++)
        {
        	a[i]=a[i-1]+d[i];
        	if(min>a[i])
        	{
        		min=a[i];
        	}
        }
        cout<<min;
        return 0;
        

        }

        </p>
        • 1

        信息

        ID
        228
        时间
        1000ms
        内存
        256MiB
        难度
        7
        标签
        (无)
        递交数
        2304
        已通过
        486
        上传者