原题链接:https://vjudge.net/contest/148523#overview
B - Cow Multiplication
题目
分析
新定义一种乘法规则,然后给你两个数让你算。用字符串读入然后直接模拟过程就好。
ac代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
C - Treats for the Cows
题目
分析
给你一组数,只能从两边取,每次取得到的钱为数的value * (第几次的次数),然后让你求最大能得到多少钱。一开始想贪心,但并没有想到好的贪法,只能老老实实的动态规划做喽。
开一个(long long)n*n的数组记录dp状态。
dp[i][j] = max(dp[i][j], dp[i - 1][j] + (n - (j - i + 1)) * a[i - 1]);
dp[i][j] = max(dp[i][j], dp[i][j + 1] + (n - (j - i + 1)) * a[j + 1]);
ac代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
D - Silver Cow Party
题目
分析
给一个有向图,指定一个点,让求所有点到该点的最短路再回去的最短路花费的和的最大值。
一开始我直接floyd-warshall跑t了,改成两边dijkstra就好了,一边正的,一边反的,然后遍历求解。
这个题写的时候有点急,代码写的好丑。
ac代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
E - The Moronic Cowmpouter
题目
分析
把一个树转换成-2进制,刚看到题一脸懵逼,后来找找就发现可以找规律,用一个num[]数组去记录位数,
1 = 1
2 = -2 + 4
4 = 4
...
-1 = 1 - 2
-2 = -2
-4 = 4 - 8
...
然后num数组并不一定是个都是1和0的数组,需要进位,进位的标准是
if(num[i] > 1)
则num[i] -= 2; ++num[i+1]; ++num[i+2];
完美ac。
ac代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include