-----------思维----------
TouchDreamer
这个作者很懒,什么都没留下…
展开
-
2016年CCPC合肥题解(hdu 5961, 5963, 5965,5968,5969)
写在前面 对于这次组队比赛感慨良多!!一开赛我们还在吃饭,边吃饭边看题,发现1008题是一个水题,直接暴力,然后因为手残错了2次!!!然后就是1009题,不明白这道题为啥比前面一道题过的人多!!这道题一开始的想法就是按位贪心,于是就开始写了,但是发现思维有漏洞,连样例都没有跑过,于是我发现从前到后搜索0的位置即可,如果找到了则把这个0前面的第一个1变成0,然后把从该从0位置到后面的所有数都变成1原创 2016-11-06 10:11:54 · 640 阅读 · 0 评论 -
HDU 5976 Detachment(逆元+二分优化+数学分析)
题目大意 给定一个数,让你分成互不相等的n个数(n为自然数),使这些数的乘积最大,输出最大乘积。 题目分析 我也不知道数论的一些东西怎么证明,但是拿到一个数的时候分配,肯定是要分配到的数越小越好,但是不能分配出1,因为分配出1相乘之后得到的结果不会增加,因为想法就是枚举2,3,4,5……知道不能枚举即可。这个可以预处理一下,当然肯定还有未分配完的数,这时候要分情况讨论: 情况1:枚原创 2016-11-08 12:29:51 · 1287 阅读 · 0 评论 -
2016弱校联盟十一专场10.5---As Easy As Possible(倍增)
题目分析 从没有用过倍增,但是感觉很巧妙,让我感受到了算法的魅力,主要就是一个思想dp[i][j]表示i前面(1 << j)对应的字母的位置,这样写过ST表的同学应该就差不多应该懂了,dp[i][j]=dp[dp[i][j−1]][j−1]dp[i][j] = dp[dp[i][j-1]][j-1],这样很容易就推出来了。 #include <cstdio> #include <cstring>原创 2016-10-28 13:13:01 · 366 阅读 · 0 评论 -
HDU 5971 Wrestling Match(染色+暴力)
题目分析 主要的策略就是如果有已经确定的点,那么很明显沿着这条边直接跑就可以了,判断其相连的所有点时good player 还是 bad player,如果所有已经明确了的所有已经明确了的点都没有相邻边,那么直接找一个没有被标记过的点跑一下就可以了。 #include <cstdio> #include <cstring> #include <iostream> #include <algori原创 2016-11-10 18:52:02 · 395 阅读 · 0 评论 -
三分查找
算法分析 二分查找是利用了函数的单调性,通过不停二分状态直到找到合适的值,但是如果遇到凸性或者凹性函数这种方法就不使用了,这时候就需要三分法了。 *hint:三分函数不仅适用于凸函数,还适用于所有单峰函数。所谓单峰函数就是先严格递增后严格递减(此时存在唯一的最大值),或者先严格递减后严格递增(此时存在唯一的最小值)。具体理解还是自己画一个抛物线理解一下,其实很简单,看了一会就理解了。 三分原创 2016-10-31 20:47:15 · 299 阅读 · 0 评论 -
Codeforces Round #380 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 2)
A. Interview with Oleg 这道题主要就是判断ogo,如果前一个ogo与后一个ogo相连(也就是说前一个ogo的最后一个o作为后一个ogo的最前面的o),那么可认为这些ogo是一个部分,用∗∗∗***代替即可。 #include <cstdio> #include <vector> #include <cstring> #include <iostream> #include原创 2016-11-21 11:47:26 · 335 阅读 · 0 评论 -
LightOJ-1058 Parallelogram Counting
题目分析 本题说明了不会四点共线,很明显如果2条直线的中点相同,那么这2条直线的4个端点可以组成平行四边形。处理一下排个序即可。 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 1e3+100;struct Nod原创 2017-01-03 20:19:39 · 288 阅读 · 0 评论