本文主要是介绍AGC002 C - Knot Puzzle(思维,构造),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:
解法:
最后一次操作一定是两个相邻绳子拆开,
因此我们找到长度和最大的相邻绳子,
如果<L,那么无解,否则可以利用这段>=L的,去将其他绳结全部解开.
code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=2e6+5;
int a[maxm];
int n,L;
signed main(){ios::sync_with_stdio(0);cin>>n>>L;for(int i=1;i<=n;i++){cin>>a[i];}int pos=1;for(int i=1;i<n;i++){if(a[i]+a[i+1]>a[pos]+a[pos+1]){pos=i;}}if(a[pos]+a[pos+1]<L){cout<<"Impossible"<<endl;}else{cout<<"Possible"<<endl;for(int i=1;i<pos;i++){cout<<i<<endl;}for(int i=n-1;i>pos;i--){cout<<i<<endl;}cout<<pos<<endl;}return 0;
}
这篇关于AGC002 C - Knot Puzzle(思维,构造)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!