Skip to content

Instantly share code, notes, and snippets.

@vitalii-komenda
Created June 9, 2021 10:46
Show Gist options
  • Save vitalii-komenda/dd59c36251f11e669927fd65ac8d6d96 to your computer and use it in GitHub Desktop.
Save vitalii-komenda/dd59c36251f11e669927fd65ac8d6d96 to your computer and use it in GitHub Desktop.
Magical cows
//C = 8;
//F = [1,3,2,1];
//V = [0,1,2,3];
//https://open.kattis.com/problems/magicalcows
const nf = (maxCowsOnFarm, farms, visits) => {
const dp = [];
const freq = {};
farms.forEach(f=>{
freq[f] = freq[f]+1 || 1;
})
for(let d=0; d<visits.length+1; d++) {
for(let c=0; c<maxCowsOnFarm; c++) {
if (!dp[d]) dp[d] = [];
dp[d][c] = 0;
}
}
for(let k in freq) {
dp[0][k-1] = freq[k];
}
for(let v=1; v<=visits.length; v++) {
for(let c=1; c<=maxCowsOnFarm; c++) {
if (c * 2 <= maxCowsOnFarm) {
dp[v][c*2-1] += dp[v-1][c-1];
} else {
dp[v][c-1] += dp[v-1][c-1] * 2
}
}
}
const sum = (d) => {
return dp[d].reduce((acc, v) => acc+v, 0);
}
// return dp;
return Array(visits.length+1).fill(0).map((i, d) => sum(d))
}
nf(C, F, V);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment