摘要:
【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 cpp include using namespace std; const int N = 1e5; int ans[N + 10]; int main() { for (int i = 1; i i)) ans[temp] 阅读全文
摘要:
【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 这里出现了没有在相同位置的只能唯一配对。 就是说 3322 2234 这种情况。 只有3个weak pair. 即key[1]=a[3]==3 以及key[3]=a[1]=2 以及key[4]=a[2]=2 那么我们for一遍。 阅读全文
摘要:
【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 如果一个字符没有对应的镜像,那么它对应的是一个空格。 然后注意 aba这种情况。 这种情况下b也要查一下它的镜像是不是和b一样。 【错的次数】 在这里输入错的次数 【反思】 在这里输入反思 【代码】 cpp include us 阅读全文
摘要:
【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 用一个字符数组,用数组的下标相邻来代表相邻的关系。 【错的次数】 在这里输入错的次数 【反思】 int i; for (i = 0;s[i] && s[i]!=c;i++) 这样能定位到字符数组里面的字符c 在不知道字符串长度的 阅读全文
摘要:
【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 设f[i]表示把第i个士兵放在最后一段的最后一个的最大值。 s[i] = x[1] + x[2]+..+x[i]; 则有 $f[i] = max(f[j] + a {s[i] s[j]}^2+b (s[i] s[j])+c)$ 阅读全文
摘要:
【链接】 "链接" 【题意】 在这里输入题意 【题解】 把a倒过来 设f[i]表示在i放一个防御塔的最小花费; 我们如果从j转移过来 就表示j+1..i 1这一段放人偶。 s[i] = 1 + 2 + ... + i; 则 $f[i] = fj + (s[i 1] s[j]) (i 1 j) j + 阅读全文
摘要:
【链接】 "链接" 【题意】 在这里输入题意 【题解】 模拟一下样例。 会发现。切的顺序不影响最后的答案。 只要切点确定了。 答案就确定了。 则设f[i][j]表示前i段,第i段保留到j的最大值。 $f[i][j] = max(f[i 1][x] + (s[j] s[x]) (s[n] s[j])) 阅读全文
摘要:
【链接】 链接 【题意】 在这里输入题意 【题解】 设f[i]表示在第i个地方设立一个仓库,且前面符合要求的最小花费。 则 $f[i] = min(f[j] + c[i] + dis[i]*(sump[i] - sump[j])-(sumdp[i]-sumdp[j]));$ 其中 sump[]是p[ 阅读全文
摘要:
【链接】 "链接" 【题意】 在这里输入题意 【题解】 DP+斜率优化; $D(x) = E(x^2) E(x)^2$ 其中$E(x)^2$这一部分是确定的。 因为总长是确定的,分成的段数又是确定的。 所以我们只要维护$E(x^2)$这一部分最小就可以了。 而最后答案又要乘上m^2 把E(X^2)的 阅读全文
摘要:
【链接】 链接 【题意】 有n座山,m只猫。 每只猫都在其中的一些山上玩。 第i只猫在h[i]山上玩,且会在t[i]时刻出现在山脚下(然后就一直在那里等) 然后有p个人。 它们听从你的安排。 在某个时刻从1号山出发,依次经过每座山,如果有猫在山脚。那么它会顺便把它们带走。 (山与山之间有距离,然后人 阅读全文