本文整理汇总了C++中VPII::insert方法的典型用法代码示例。如果您正苦于以下问题:C++ VPII::insert方法的具体用法?C++ VPII::insert怎么用?C++ VPII::insert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VPII
的用法示例。
在下文中一共展示了VPII::insert方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: back
void back(int mask){
if(printed)return;
VPII cpy=ar;
int topleft, p=ar.size(), maxh=0, dist=0;
for(int i=0; i<p; i++){
if(ar[i].S>maxh)
maxh=ar[i].S, topleft=i;
}
for(int i=0; i<topleft; i++)
dist += ar[i].F;
if(maxh==0){
if(mask==(1<<N)-1)
print();
return ;
}
for(int i=0; i<N; i++)
if(not (mask&(1<<i))){
if(ar[topleft].F>=rect[i].F and ar[topleft].S>=rect[i].S){
ans.pb(node(dist, ar[topleft].S-rect[i].S, dist + rect[i].F, ar[topleft].S));
int oldwidth = ar[topleft].F;
ar[topleft].F = rect[i].F;
ar[topleft].S -= rect[i].S;
if(oldwidth!=rect[i].F)
ar.insert(ar.begin() + topleft + 1, {oldwidth-rect[i].F, maxh});
merge(ar);
back(mask|(1<<i));
ans.pop_back();
ar = cpy;
}
swap(rect[i].F, rect[i].S);
if(ar[topleft].F>=rect[i].F and ar[topleft].S>=rect[i].S){
ans.pb(node(dist, ar[topleft].S-rect[i].S, dist + rect[i].F, ar[topleft].S));
int oldwidth = ar[topleft].F;
ar[topleft].F = rect[i].F;
ar[topleft].S -= rect[i].S;
if(oldwidth!=rect[i].F)
ar.insert(ar.begin() + topleft + 1, {oldwidth-rect[i].F, maxh});
merge(ar);
back(mask|(1<<i));
ans.pop_back();
ar = cpy;
}
swap(rect[i].F, rect[i].S);
}
}