给一组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