Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
RE????达人帮忙看看吧#include <cstdio> #include <vector> using namespace std; int n; float maxans=0; vector<int> ans; int task[12][3]={0}; void MJ(int times,int mask,vector<int>& seq,int exp,float probability) { float p = probability; if(times==n) { if(probability>maxans) { maxans=probability; ans = seq; } return; } for(int i=0;i<n;i++) { if(!(mask&(1<<i))) { seq.push_back(i); if(exp<task[i][0])p=0; else if(exp>task[i][1])p=1; else{ if(task[i][1]-task[i][0]==0) while(1); p = float((float)exp-(float)task[i][0])/float((float)task[i][1]-(float)task[i][0]); } if(probability*p>maxans) MJ(times+1,mask|(1<<i),seq,exp+task[i][2],probability*p); seq.pop_back(); } } } int main() { scanf("%d",&n); int beginexp=0; scanf("%d",&beginexp); for(int i=0;i<n;i++) { scanf("%d%d%d",&task[i][0],&task[i][1],&task[i][2]); } vector<int> temp; MJ(0,0,temp,beginexp,1.0); printf("%.3f\n",maxans); for(int i=0;i<n;i++) { if(i==0) printf("%d",ans[i]+1); else printf(" %d",ans[i]+1); } printf("\n"); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator