【全WA】萌新妹子刚学dp,在线求调教(悬2关)

P1912 [NOI2009] 诗人小G

给一组hack我自己调也行
by DANNNsth @ 2024-03-22 22:16:54


修改后代码如下,仍0分 ```cpp #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <cmath> #define fo(i,l,r) for(int i=(l);i<=(r);++i) #define of(i,l,r) for(int i=(l);i>=(r);--i) #define filein(f) freopen(f,"r",stdin) #define fileout(f) freopen(f,"w",stdout) #define debug(...) cout<<__VA_ARGS__<<'\n' #define fdbg(...) cout<<__VA_ARGS__<<' ' #define endl '\n' #define pb push_back #define fr q.front() using namespace std; typedef long double ll; constexpr int inf=0x3f3f3f3f; constexpr ll INF=0x7fffffff; constexpr int N=1e5+5; constexpr ll Lim=1e18; int n,L,P; ll qpow(ll a,int k=P) { ll res=1; for(;k;k>>=1,a*=a) if(k&1) res*=a; return res; } int s[N];ll f[N]; ll calc(int i,int j) {return f[j]+qpow(abs(s[i]-s[j]-L));} int bound(int x,int y,int l,int r) { while(l<r) { int mid=(l+r)>>1; calc(mid,x)<calc(mid,y)?l=mid+1:r=mid; } return l; } struct Node {int j,l,r;}; string se[N];bool fl[N]; int main() { ios::sync_with_stdio(0);cin.tie(0); int T;cin>>T; while(T--) { cin>>n>>L>>P;L++; fo(i,1,n) {cin>>se[i];s[i]=se[i].size()+s[i-1]+1;f[i]=fl[i]=0;} deque<Node>q;q.pb({0,1,n}); fo(i,1,n) { if(fr.r<i) {q.pop_front();fl[i-1]=1;} else fr.l=i; f[i]=calc(i,fr.j); //debug("*"<<i<<"bitch"<<fr.j<<"fuck"<<f[i]); Node bc=q.back();q.pop_back();int p=n+1; while(calc(bc.l,i)<=calc(bc.l,bc.j)&&!q.empty()) {p=bc.l;bc=q.back();q.pop_back();}//全是i优 if(calc(bc.r,i)>=calc(bc.r,bc.j)) {q.pb({bc.j,bc.l,p-1});if(p<=n)q.pb({i,p,n});continue;}//没有i优 p=bound(bc.j,i,bc.l,bc.r);if(p>bc.l) q.pb({bc.j,bc.l,p-1});q.pb({i,p,n});//部分i优 //debug(i<<"dick"<<p); } if(f[n]>Lim) {cout<<"Too hard to arrange\n--------------------\n";continue;} cout<<(long long)f[n]<<endl; for(int i=1;i<=n;i++) cout<<se[i]<<" \n"[fl[i]|i==n]; cout<<"--------------------\n"; } return 0; } ```
by DANNNsth @ 2024-03-22 23:56:43


好的标题使我的小脑旋转
by AniuKarry @ 2024-03-23 13:59:29


|