23
December
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<functional>
#include<climits>
using namespace std;
class ORSolitaireDiv2{
public:
int getMinimum(vector <int> numbers, int goal){
int cnt=INT_MAX;
for(int i=0;i < (1<<numbers.size());i++){
int num=0;
for(int j=0; j < numbers.size();j++){
if(!(i & 1<<j) && (goal|numbers[j]) == goal)
num = num | numbers[j];
}
if(num != goal){
int cnt1=0;
for(int j=1; j < (1<<numbers.size());j=j<<1)
if((i & j)) cnt1++;
cnt = std::min(cnt,cnt1);
}
}
return cnt;
}
};
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
class TheShuttles{
public:
int getLeastCost(vector<int> cnt,int baseCost,int seatCost){
int max_bus=0;
for(int i=0;i<cnt.size();i++){
if(i==0)max_bus = cnt[i];
else max_bus = std::max(max_bus,cnt[i]);
}
int mc=0;
for(int i=1;i<=max_bus;i++){
int cost = 0;
for(int j=0; j<cnt.size(); j++){
cost += (int)(1.*cnt[j]/i+0.99) * baseCost + i * seatCost * (int)(1.*cnt[j]/i+0.99);
}
if(i==1) mc = cost;
else mc = std::min(mc,cost);
}
return mc;
}
};