这样抽象的马蜂你们喜欢吗
  • 板块灌水区
  • 楼主Inv_day_in_R
  • 当前回复35
  • 已保存回复36
  • 发布时间2024/8/21 15:13
  • 上次更新2024/8/21 17:02:25
查看原帖
这样抽象的马蜂你们喜欢吗
774202
Inv_day_in_R楼主2024/8/21 15:13

代码1:

#include<bits/stdc++.h>
using namespace std;
long long n,m,p,d[1<<17],t[1<<17],a[1<<17],s[1<<17],f[128][1<<17],H,T,i=1,j,h,q[1<<17];
auto g(int k,int j){return f[j-1][k]+s[k];}
main(){
    for(cin>>n>>m>>p;i++<n;d[i]+=d[i-1])cin>>d[i];
    for(i=0;i++<m;a[i]=t[i]-d[h])cin>>h>>t[i];
    for(sort(a+1,a+m+1),i=0;i++<m;s[i]=s[i-1]+a[i]);
    for(memset(f,63,1<<27),i=0;i<=p;)f[i++][0]=0;
    for(j=0;j++<p;)for(T=q[H=0]=i=0;i++<m;q[++T]=i){
        for(;H<T&&(g(q[H+1],j)-g(q[H],j))<=a[i]*(q[H+1]-q[H]);H++);
        for(f[j][i]=f[j-1][q[H]]-a[i]*q[H]+s[q[H]]+a[i]*i-s[i];H<T&&(g(q[T],j)-g(q[T-1],j))*(i-q[T])>=(g(i,j)-g(q[T],j))*(q[T]-q[T-1]);T--);
    }
    cout<<f[p][m];
}

代码2:


#include<bits/stdc++.h>
using namespace std;
int n,mx=-1e9,a[222],g[222][222],i,s,k,r;
main(){
    for(cin>>n;i++<n;a[i+n]=a[i])cin>>a[i];
    for(s=2;s++<=n;)for(i=0;s+i++<=n*2;)for(r=(k=i)+s-1;k++<r-1;)g[i][r]=max(g[i][r],g[i][k]+g[k][r]+a[i]*a[k]*a[r]);
    for(i=0;i++<n;mx=max(g[i][i+n],mx));
    cout<<mx;
}

代码3:


#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,S,a[1<<15],d[1<<15],V[1<<15],u,v,w;
vector<array<int,2>>g[1<<15];
main(){
    for(cin>>n>>m>>S>>S;m--&&cin>>u>>v>>w;)g[u].push_back({v,w}),g[v].push_back({u,w});
    for(;cin>>u>>v>>w;)g[u].push_back({v,w});
    deque<int>q; 
    for(q.push_back(S),memset(d,0x3f,sizeof d),d[S]=0,V[S]=1;q.size();){
        int v=q.front();
        q.pop_front(),V[v]=0;
        for(auto[u,w]:g[v])if(d[u]>d[v]+w){
            d[u]=d[v]+w;
            if(!V[u])V[u]=1,(q.size()&&d[u]<d[q.front()])?q.push_front(u):q.push_back(u);
        }
    }
    for(int i=1;i<=n;i++)d[i]>5e8?cout<<"NO PATH\n":cout<<d[i]<<endl;
}

代码写成这样我还有救吗

2024/8/21 15:13
加载中...