多校赛
hi_just_do_it
向上吧少年!
展开
-
2017 Multi-University Training Contest - Team 3 1003(hdu 6058) Kanade's sum(链表)(set)
题意: 给你一个全排列,要你求这个序列的所有区间的第k大的和题解:对于每个数字计算贡献值,对于a[i],求区间中第k大的数字是a[i]的数量。 那么我们就需要维护a[i]左边和右边的k个比a[i]大的数字的下标。 这时候需要用到set来找左右边第一个比a[i]大的数字下标,然后用链表连起来。我们从小到大遍历,那么对于当前数字只需要找一次左右边比a[i]大的数字。 ps:直接用set里面的迭代器原创 2017-08-02 10:48:57 · 275 阅读 · 0 评论 -
2017 Multi-University Training Contest 1003(hdu 6035) Colorful Tree
看了很多人的博客才弄懂这一道题目,感觉他们解释的还不够详细。题意: 一棵有n个点的树,树上每个点都有颜色c[i],保证每两个点之间的路径只有一条,定义每条路径的值为这条路径上经过的不同颜色数量和。求所有路径的值。题解: 主要思想就是对于每个颜色单独考虑。 先把所有的情况都算上,也就是对于n个点,一共有n*(n-1)条不同的路径。那么对于n种颜色,一共就是ans = n*n*(n-1)种情况。原创 2017-07-26 13:46:44 · 222 阅读 · 0 评论 -
2017 Multi-University Training Contest - Team 1 1008(hdu6040) Hints of sd0061
题意: 给你一个函数求出1e7个数字,然后对这1e7个数字有m次询问,每次问数字中第dx大的数字是多少。题解: 主要是要用到复杂度为O(n)的stl函数。 nth_element(num.start(),num.start()+n,num.end()); 可以把序列中比第n大的数小的放左边,比第n大的放右边。代码:#include <iostream> #include <cstdio> #原创 2017-07-26 15:56:19 · 293 阅读 · 0 评论 -
2017 Multi-University Training Contest - Team 4 1007(hdu 6073) Matching In Multiplication
题意: 定义一个二分图的完美匹配的值是当前匹配中所有的边值相乘,而一个图的完美匹配就是所有可能的完美匹配的值的和。题解: 首先考虑入度为1的点,这样的点肯定会被每一种完美匹配算上,先用拓扑排序的方法把所有的入度为1的点相应的边值乘上,得到rans接下来需要想到的一点就是,除去入度为1的点,剩下的点都在一个环内,然后对于每个环,匹配的方案都只有两种,那么我们就只要在乘上每个环的rans = ran原创 2017-08-06 16:14:48 · 417 阅读 · 0 评论 -
(hdu 6078)2017 Multi-University Training Contest - Team 4 Wavel Sequence
题意: 给出一个有n(<=2000)个数字的序列 a(ai <=2000) 再给出一个有m(m<=2000)个数字的序列 b (bi<=2000) ,定义波浪序列为:x1x3#include <algorithm> #include <bitset> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #转载 2017-08-07 10:57:16 · 237 阅读 · 0 评论