Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <ctime>
- #include <iostream>
- #include <sstream>
- #include <string>
- #include <vector>
- #include <queue>
- #include <set>
- #include <map>
- #include <cstdio>
- #include <cstdlib>
- #include <cctype>
- #include <cmath>
- using namespace std;
- typedef unsigned long long LL;
- #define FOR(k,a,b) for(int k(a); k < (b); ++k)
- #define FORD(k,a,b) for(int k(a-1); k >= (b); --k)
- #define REP(k,a) for(int k=0; k < (a); ++k)
- #define ABS(a) ((a)>0?(a):-(a))
- class KiloManX {
- public:
- int leastShots(vector <string> damageChart, vector <int> bossHealth)
- {
- int n=damageChart.size();
- vector<vector<int> > dc(n,vector<int> (n));
- REP(i,n)
- REP(j,n)
- {
- dc[i][j]=damageChart[i][j]-'0';
- }
- vector<int> dp((1<<n),100000000);
- dp[0]=0;
- REP(i,1<<n)
- {
- REP(j,n)
- if((1<<j) & ~i)
- {
- int best=1;
- REP(k,n)
- if(((1<<k)&i) && (dc[k][j]>best))
- {
- best=dc[k][j];
- }
- dp[i|(1<<j)]=min(dp[i|(1<<j)],dp[i]+(bossHealth[j]+best-1)/best);
- }
- }
- return dp.back();
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment