
二分
_WAWA鱼_
郑州大学退役ACMer,目前在小米做浏览器内核(WebKit)开发,曾在科大讯飞实习做大模型SDK,努力成长中,欢迎大家一起学习和交流~
展开
-
D. For Gamers. By Gamers---二分+倍数遍历
题目链接#include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;#define int long longvoid solve(){ int n,c; cin>>n>>c; vector<int>val(c+1); for(int i=1,cos原创 2022-03-23 10:56:34 · 790 阅读 · 0 评论 -
合适数对---树状数组+二分
题目链接#include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;#define int long longconst int N = 400010;int s[N];int tr[N];int n,m;vector<int>nums;int lowbit(int x){ return.原创 2022-03-20 18:55:04 · 278 阅读 · 0 评论 -
周周的泡泡---二分
题目链接自己二分写挂了,得了90分,不知道哪里错了,参考大佬简洁代码#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <functional>#include <set>using namespace std;typedef pair<int,int> PII;#define int lo原创 2022-03-19 18:28:55 · 249 阅读 · 0 评论 -
疫苗小孩---二分
这题傻了,用dp写了俩多小时没写出来。。。#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define int long longconst int N = 1000010,INF=0x3f3f3f3f;char s[N];int n,k,w,q;signed main(){ scanf("%lld",&n); sca..原创 2022-02-10 21:00:18 · 100 阅读 · 0 评论 -
R---双指针/二分
这题双指针没想出来,用二分+前缀和写出来了,写的巨复杂,下面是两种写法二分+前缀和写法#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <map>using namespace std;#define int long longconst int N = 200010;char s[N];int n,k;in.原创 2022-02-08 20:40:14 · 391 阅读 · 0 评论 -
Codeforces Round #764 (Div. 3) D详细题解
D.Palindromes Coloring思路:题意是在一个字符串中选出k个子序列,将子序列任意排序,使每个子序列是回文的,求子序列中长度最小值的最大值。一道贪心题,要想回文,至多有一个字母出现奇数次,其余字母均出现偶数次,因此答案只与字母出现次数有关,跟字母是谁没关系。统计出现偶数次字母的总次数,即sum+=x/2答案 ans满足ans/2*k<=sum可以二分来写。。但是小写字母只有26个,因此字符串很长的话,答案一定很大,所以遍历也能过。。。#include <iostr原创 2022-01-11 11:24:35 · 485 阅读 · 6 评论 -
背包-----前缀和+二分+堆
题目链接#include <iostream>#include <cstring>#include <algorithm>#include <queue>#include <map>using namespace std;const int N = 100010;#define int long longtypedef pair<int,int>PII;int v,n,m;PII a[N];int s1[N]原创 2022-01-06 14:57:52 · 81 阅读 · 0 评论 -
Brownie Slicing----二分+二维前缀和+双指针+分块
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 510;//#define int long longint n,m,A,B;int s[N][N],a[N][N];bool check(int x){ int cnta=0,cntb=0,fa=1,fb=1,sum=0; for(int i原创 2022-01-05 15:44:40 · 195 阅读 · 0 评论 -
[HEOI2014]南园满地堆轻絮----二分
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 5000010;#define int long longint n,sa,sb,sc,sd,a1,mod;int a[N]={0},b[N];int f(int x){ return sa*x%mod*x%mod*x%mod+sb*x%mod*x%mo原创 2022-01-05 11:39:34 · 279 阅读 · 0 评论 -
位数差----分治+二分(难)
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;#define int long longint w[10]={10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};int n,a[N];int cal(int l,int原创 2022-01-05 09:21:21 · 136 阅读 · 0 评论 -
小咪买东西----01分数规划+二分
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;#define int long longint a[N],b[N],c[N];int n,k;int check(int mid){ for(int i=1;i<=n;i++)c[i]=b[i]-a[i]*mid; sort(c原创 2022-01-04 22:59:35 · 115 阅读 · 0 评论 -
[NOIP2011]聪明的质监员----二分+前缀和
题目链接这道二分题特别之处在于评判标准比较特殊,是求范围最接近的值#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 200010;#define int long longint n,m,s;int L[N],R[N],w[N],v[N];int check(int mid){ int cnt1[N]={0},c原创 2022-01-04 20:43:20 · 112 阅读 · 0 评论 -
K-th Number----二分+尺取法(难)
K-th Number题意:从长度为n的区间中,找出长度大于等于k的区间的第k大值,把这些值放在B数组中,求B中第m大值思路:容易往树状数组和线段树那里思考,但其实是二分设 mid ⩽\leqslant⩽ ans有在B中,mid为第>=m的值,即在B中比mid大的值数量>=m,即在A的长度大于k的子区间中,比mid大的第k大的值的个数>=m个,即有>=m个子区间,每个区间中,比mid大的值的个数大于k个所以有for(int i=1;i<=n;i++)s[i]原创 2022-01-04 18:23:56 · 888 阅读 · 4 评论 -
[NOIP2012]借教室----二分+差分
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1000010;#define int long longint n,m;int d[N],s[N],t[N],a[N],b[N];bool check(int mid){ for(int i=1;i<=n;i++)b[i]=a[i]-a[i-1]原创 2022-01-04 16:05:10 · 94 阅读 · 0 评论 -
[CQOI2010]扑克牌----二分
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 55;#define int long longint n,m;int a[N];bool check(int mid){ if(mid>a[2]+a[1])return false; int sum=0; for(int i=1;原创 2022-01-04 16:03:41 · 131 阅读 · 0 评论 -
[USACO 2010 Feb S]Chocolate Eating----二分
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;#define int long longint a[N],id[N];int n,d;bool check(int mid){ int sum=0,cnt=0; for(int i=1;i<=d;i++) {原创 2022-01-04 11:34:54 · 381 阅读 · 0 评论 -
[USACO 2017 Dec P]Greedy Gift Takers-----二分+推理
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;int a[N];int n;bool check(int mid){ int s[N]={0},sum=0; for(int i=1;i<mid;i++)s[a[i]]++; for(int i=1;i<mid;原创 2022-01-04 10:53:59 · 788 阅读 · 1 评论