SRM 512 div2 512point
2011-07-14 12:38
399 查看
Problem Statement | ||||||||||||
A mysterious new restaurant is open in the city for only N days. Happy to hear that, Ash and Elsh would like to have lunch at the restaurant on as many days as possible. The restaurant sells M types of dishes. Being a mysterious restaurant, it has mysterious rules for the customers: They can only buy one single dish per day. If they buy a dish of type j on the i-th day, then on the same day next week, i.e., on the (i+7)-th day, they can only buy a dish of type j. If they don't buy any dishes on any day, then they can't buy any dishes again from the restaurant. Mysteriously, the price of each type of dish varies every day. You are given a vector <string> prices consisting of N elements, each containing M characters.prices[i][j] represents the price of the j-th type of dish on the i-th day, encoded as follows: '0' - '9': denotes the price of 0 - 9 dollars. 'A' - 'Z': denotes the price of 10 - 35 dollars. 'a' - 'z': denotes the price of 36 - 61 dollars. Ash and Elsh have only budget dollars allocated for having lunch in the restaurant. Return the maximum number of days they could have lunch in the restaurant. | ||||||||||||
Definition | ||||||||||||
| ||||||||||||
Constraints | ||||||||||||
- | prices will contain between 1 and 50 elements, inclusive. | |||||||||||
- | Each element of prices will contain the same number of characters, between 1 and 50 characters, inclusive. | |||||||||||
- | Each character in prices will be '0'-'9', 'a'-'z', or 'A'-'Z'. | |||||||||||
- | budget will be between 0 and 10,000, inclusive. | |||||||||||
Examples | ||||||||||||
0) | ||||||||||||
| ||||||||||||
1) | ||||||||||||
| ||||||||||||
2) | ||||||||||||
| ||||||||||||
3) | ||||||||||||
|
#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> using namespace std; #define sz(a) int((a).size()) class MysteriousRestaurant { public: int maxDays(vector <string>, int); int cal(char c); }; int MysteriousRestaurant::maxDays(vector <string> prices, int budget) { int n=prices.size(); int m=prices[0].size(); int b=budget; int i,j,k,s; for(s=n;s>0;s--){ //从后向前查找,妙! int a[7][60]; memset(a,0,sizeof(a)); for(i=0;i<s;i++) for(j=0;j<m;j++) a[i%7][j]+=cal(prices[i][j]); int sum=0; for(i=0;i<7;i++) { int p=a[i][0]; for(j=0;j<m;j++) p=min(p,a[i][j]); sum+=p; } if(sum<=b) return s; } return 0; } int MysteriousRestaurant::cal(char c){ if(c>='0' && c<='9') return c-'0'; if(c>='A' && c<='Z') return c-'A'+10; if(c>='a' && c<='z') return c-'a'+36; return -1; }
wa代码:
#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> using namespace std; class MysteriousRestaurant { public: int cal(char c) { if(c>='0' && c<='9') return c-'0'; if(c>='A' && c<='Z') return c-'A'+10; if(c>='a' && c<='z') return c-'a'+36; } int maxDays(vector<string>prices,int budget){ int choice[100]={0}; int i,j,k; for(i=0;i<prices.size();i++){ int mn=999999999,idx=0; for(j=0;j<prices[0].size();j++){ int sum=0; for(k=i;k<prices.size();k+=7){ sum+=cal(prices[k][j]);// } if(sum<mn) mn=sum,idx=j; } choice[i]=idx; } for(i=0;i<prices.size();i++){ if(budget < cal(prices[i][choice[i%7]])) return i; budget-=cal(prices[i][choice[i%7]]); } return prices.size(); } };//错误数据:{"97","97","97","97","97","97","97","19","19","19","19","19","19","19"} 15
相关文章推荐
- SRM 512 div2
- TopCoder SRM 512 DIV1 PickAndDelete
- TopCoder SRM 512 DIV1 MysteriousRestaurant
- TOP CODER SRM 611 DIV2
- SRM DIV2 577 EllysRoomAssignmentsDiv2
- SRM 649 div2 500(dp)
- SRM 622 div1 250
- Top Coder SRM 614 DIV 2
- SRM585 div2
- SRM536-div1-2-RollingDiceDivOne
- TopCoder 300 points 26-SRM 156 DIV 2 78.06/300 26.02%
- SRM 451 DIV 1 总结
- SRM538-div2-3-SkewedPerspectives
- SRM 658 div1 850 DancingForever [二分图匹配]
- TC SRM 570 div2 1000【Tree,树上统计】
- TopCoder SRM 543 DIV2
- srm 302 div2 1000(简单题,bfs,dp)
- SRM 611 DIV2 1000 ElephantDrinkingEasy
- SRM 590 DIV1 B题 XorCards ---- 高斯消元法
- srm 592 div 2