1 solutions

  • 0
    @ 2024-4-10 23:00:06

    解法一:

    搜索,每次枚举一组可行的点并染色,找最小组数,可得30分。

    解法二:

    当图为拓扑图时,首先求出图的最长链,由于链上任意两点均不可被同时染色,所以答案不会小于最长链的长度。

    接下来证明答案可以等于最长链长度:利用拓扑图dp,求出f[i]表示以点i为结尾的最长链的长度,将所有点按f[i]的数值分组,即每次同时将f[i]相同的点染色。对于f[x]==f[y]的一对x,y,一定不能从其中一点到达另一点,否则其中一个的f值会更大而不是相等,于是同一组的点一定是两两不可达的。

    可得另外30分。

    解法三:

    当图为一般图时,类似于解法二,将所有强连通分量缩点后形成DAG,求以强连通分量大小为DAG点权的带权最长链,即为答案。

    时间复杂度O(n+m),得分100分。

    具体的分组方法为:假设第i个强连通分量的大小为s[i],以其为结尾的带权最长链长度为f[i],则将其中的s[i]的点分别分到第f[i],f[i]-1,f[i]-2,…,f[i]-s[i]+1组即可。

    • @ 2025-12-30 17:52:04

      #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; } #include using namespace std; const long long INF=1e17; long long n,t[100114],f[100114]; long long dp[100114][3]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; dp[i][1]=INF; } for(int i=1;i<=n;i++) { cin>>f[i]; dp[i][2]=INF; } dp[1][1]=0; dp[1][2]=t[1]-f[1]; for(int i=2;i<=n;i++) { if(f[i]<=f[i-1]) dp[i][1]=dp[i-1][1]; if(t[i]>=t[i-1]) dp[i][2]=dp[i-1][2]; dp[i][1]=min(dp[i][1],dp[i][2]+t[i]-f[i]); dp[i][2]=min(dp[i][2],dp[i][1]+t[i]-f[i]); if(t[i-1]<=f[i] || f[i-1]>=t[i]) dp[i][1]=dp[i][2]=INF;//请注意这里的特判,会有彩虹猫被卡死的可能哦 } if(dp[n][1]==INF) cout<<"-1"; else cout<<dp[n][1]; return 0; }

  • 1

Information

ID
255
Time
1000ms
Memory
256MiB
Difficulty
10
Tags
(None)
# Submissions
6
Accepted
2
Uploaded By