
二分
没
a10.
这个作者很懒,什么都没留下…
展开
-
Atcoder Beginner 181 E
证明:这里 #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<string> #include<sstream> #include<queue> #include<list> #include<stack> #include<bitset> #include<cmath转载 2020-11-11 23:42:03 · 118 阅读 · 0 评论 -
hdu 6278
题目 题意:求区间中最大的x,满足大于等于x的数量大于等于x 区间数量必须大于等于x,那很明显x一定是小于等于区间长度嘛,二分区间长度就可以了,然后就是找第k大,第k大可以由第len-k+1小解决。 #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<vector> #include<cmath> #include<m原创 2020-09-26 10:48:31 · 130 阅读 · 0 评论 -
hdu 4614 线段树+二分
题目 这题我们的线段树储存的是区间内空的树有几个,这样就很好做了。如果区间内没有空的那肯定输出那个字符串,然后二分去找k=1的l和r,k=2就用区间长度减去区间询问就好了,其实也不难。 #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<vector> #include<cmath> #include<map>原创 2020-08-15 16:23:22 · 781 阅读 · 0 评论 -
2020520 PTA钻石争霸赛 T8
当时怎么就没想到这个做法呢? 首先我们枚举每一条边,作为三角形的第二条边,然后二分去找三角形的第三条边,由三角形两边之和大于第三边以及三角形两边之差小于第三边,我们可以确定一个取数范围,统计一下就可以了。 #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<vector> #include<cmath> #include&l原创 2020-08-08 11:26:07 · 307 阅读 · 0 评论 -
codeforces educational 88 C
题目 首先我们可以知道,倒入冷水之后温度一定是(h+c)/2,这是由题目给的式子算出来的。所以当t<=(h+c)/2,那就直接输出2(为什么等等说)。然后我们二分倒入热水的次数,温度函数为(hx+h+cx)/(2*x+1),这个函数当x>=0时,会在无穷处收敛,收敛值为(h+c)/2,然后再判断一下就可以了。 #include<bits/stdc++.h> #define ll long long using namespace std; long double h,c,t,sb;原创 2020-07-31 19:00:26 · 155 阅读 · 0 评论 -
codeforces 645 div2——D
题目 很明显我们要令到拥抱数最大,我们尽可能让假期在月尾开始且在月尾结束,天数不够我们尽可能让假期在月尾结束(代码好写),这个贪心是正确的是因为我们让假期在月尾结束,往前x天,也能保证假期尽量晚的开始,所以能保证取到的天数最大。所以大体思路是枚举我们在哪一个月结束,二分找我们要从哪里开始休假,然后取最大值就好了,具体实现看代码。 #include<cstdio> #include<algorithm> #include<iostream> #include<cstr原创 2020-06-26 13:29:52 · 128 阅读 · 0 评论 -
leetcode 162
https://leetcode-cn.com/problems/find-peak-element/ 这题有点牛,一开始觉得不可做,怎么都能hack。看了题解,觉得不大对,想hack,但弄着弄着好像知道为啥这么做了。 这题主要注意两个点,所有元素都是unique的以及数组两端都有一个无穷小,这两个有什么用呢? unique主要是防止这种:5 4 3 6 6 6,无穷小我们可以发现一个性质:我们从中间开始找,只要有数组一边是递增的,答案必在那边!为什么呢?数组一边递增只有两种可能,先增后减以及单调递增,前者原创 2020-05-23 00:09:07 · 120 阅读 · 0 评论