usaco-cowcycle

来源:互联网 发布:c语言如何清屏 编辑:程序博客网 时间:2024/06/05 06:19
#include<iostream>#include<fstream>#include<cstring>#include<cstdio>#define maxn 11#define zout foutusing namespace std;ifstream fin("cowcycle.in");ofstream fout("cowcycle.out");int n,m;int a[maxn],b[maxn];int f1,f2,r1,r2;int s1[maxn],s2[maxn];double ans;void init(){fin>>n>>m;fin>>f1>>f2;f2++;fin>>r1>>r2;r2++;}void get_ans(){double r[1000],sum=0,sumf=0;double tr,ave,temp;int ic=n*m;int l,k=0,p;for(int i=0;i<n;i++){for(int j=0;j<m;j++){tr=(double)a[i]/b[j];l=++k;while(r[l-1]>=tr){r[l]=r[l-1];l--;}r[l]=tr;}}for(int i=1;i<ic;i++){r[i]=r[i+1]-r[i];sum+=r[i];sumf+=r[i]*r[i];}ic--;ave=sum/(ic*1.0);temp=sumf/(ic*1.0)-ave*ave;if (temp<ans){ans=temp;memcpy(s1,a,sizeof(a[0])*n);memcpy(s2,b,sizeof(b[0])*m);}}void dfs2(int cut,int r){if(cut==m){//cout<<"~";if(a[n-1]*b[m-1]<3*a[0]*b[0])return;get_ans();return;}for(int i=r;i<r2;i++){b[cut]=i;dfs2(cut+1,i+1);}}void dfs1(int cut,int f){if(cut==n){dfs2(0,r1);return;}for(int i=f;i<f2;i++){a[cut]=i;dfs1(cut+1,i+1);}}void slove(){ans=100000;dfs1(0,f1);for(int i=0;i<n-1;i++)zout<<s1[i]<<" ";zout<<s1[n-1]<<endl;for(int i=0;i<m-1;i++)zout<<s2[i]<<" ";zout<<s2[m-1]<<endl;}int main(){init();slove();return 0;}

原创粉丝点击