题目链接:https://www.luogu.com.cn/problem/P1824 题目大意: 本题相当于在\(n\)个数中选\(c\)个数,使得这\(c\) 解题思路: 我们首先可以给\(a_1\sima_n\) 然后我们可以开始设计一个boolcheck(intx)函数,用来判断:在任意相邻两个数之差都\(\gex\)的情况下,是否能够选够\(c\) 接着咱们就来判断check(x)能否成立: 首先,最优解选\(a_1\) 假设有一个最优方案,第一个选的数是\(a_2\),第二个选的数是\(a_5\),即满足\(a_5a_2\gex\),那么\(a_5a_1\gex\) 在选择了\(a...

  t7gYRacb89cM   2023年12月19日   34   0   0 i++i++c++二分答案c++二分答案

题目链接:https://codeforces.com/problemset/problem/1784/C 题目大意: 你面前有\(n\) 操作1:选择任意一个血量大于\(0\)的怪兽,并将它的血量降低\(1\); 操作2:将所有存活的怪物的血量各自减去\(1\),如果存在怪物的血量恰好降为\(0\)(即这只怪物之前的血量为\(1\),现在变为\(0\)了),则操作2不会结束,而是继续将所有存活的怪兽的血量再各自减去\(1\),如果仍有怪物的血量恰好降为\(0\),则继续将所有存活的怪兽的血量再各自减去\(1\),……,如是操作,直至某次操作后不存在怪物的血量恰好降为\(0\),或者所有的怪...

题目链接:https://www.luogu.com.cn/problem/P3808 AC自动机模板题。 示例程序: include<bits/stdc.h> usingnamespacestd; constintmaxn=1e6+5; structNode{ intson[26],fail,id; Node(){} Node(int_id){ memset(son,0,sizeof(son)); fail=0; id=_id; } }tr[maxn]; intn,cnt,cc[maxn]; chars[maxn]; voidins(chars,intid){ intu=0...

题目链接:https://www.luogu.com.cn/problem/P2503 模拟退火+贪心。 include<bits/stdc.h> usingnamespacestd; intn,m,a[22],s[22],cnt[22]; doubleavga,ans=1e9; doublecal(){ memset(s,0,sizeof(int)m); memset(cnt,0,sizeof(int)m); for(inti=0;i<n;i){ intx=0; for(intj=1;j<m;j) if(s[j]<s[x]) x=j; s[x]+=a[i];...

题目描述 对于一个\(1\)到\(n\)的排列\(p_1,p_2,\ldots,p_n\)(即\(1\)到\(n\)中每一个数在数列\(p\)中出现了恰好一次),令\(q_i\)为第\(i\)个位置之后第一个比\(p_i\)值更大的位置,如果不存在这样的位置,则\(q_i=n+1\)。 举例来说,如果\(n=5\)且\(p\)为\(\{1,5,4,2,3\}\),则\(q\)为\(\{2,6,6,5,6\}\)。 现在给你排列\(p\),求出它对应的数列\(q\)。 输入格式 第一行,一个整数\(n(1\len\le10^5)\)。 第二行,\(n\)个整数\(p_1,p_2,\ldots,p...

题目链接:https://www.acwing.com/problem/content/description/395/ 解题思路: 差分约束。 为了方便起见,定义第\(i\)个时间段为\(i-1:00\)到\(i:00\) 首先,为了方便开一个额外的点,令\(R_i\)对应为题目中的\(R(i+1)\),即\(R_i\)表示\(i-1:00\)到\(i:00\)这个时间段的最小需求人数。即用\(R_i\)替代\(R(i+1)\)表示第\(i\) 然后,统计一下每个时间段能够供给的最大人数,用\(num_i\)表示第\(i\) 用\(x_i\)表示第\(i\) \(0\lex_i\lenum...

题目链接:https://hydro.ac/d/bzoj/p/3732 题目大意: 给定一个图,每次询问两个点\(u\)和\(v\),在\(u\)到\(v\) 解题思路: Kruskal重构树。 思路完全来自:寂静小屋大佬的博客 示例程序: include<bits/stdc.h> usingnamespacestd; constintmaxn=3e4+5,maxm=3e4+5; structEdge{ intu,v,w; booloperator<(constEdge&b)const{ returnw<b.w; } }e[maxm]; intn,m,q,f...

题目链接:https://www.luogu.com.cn/problem/P3038 题目大意: 一棵树维护两种操作: 一条路径上每条边边权\(+1\); 查询路径上的边权和。 解题思路: 树链剖分模板题。 示例程序: include<bits/stdc.h> usingnamespacestd; constintmaxn=1e5+5; intfa[maxn],dep[maxn],size[maxn],son[maxn],top[maxn],seg[maxn],rev[maxn]; intn,m,seg_cnt; vector<int>g[maxn]; voi...

题目链接:https://www.luogu.com.cn/problem/P2292 题目大意: 给定\(n(\le20)\)个模式串\(s_i(|s_i|\le20)\),有\(m(\le50)\)次询问,每次询问给出一个字符串\(t(|t|\le10^6)\)。 对于每次询问的字符串\(t\),你需要回答出它的由模式串拼成(模式串可以重复使用)的最长前缀的长度。 解题思路: 80分 用\(f_i\)表示能不能匹配到第\(i\)个位置,然后枚举\(t\) 时间复杂度\(O(mST)\)(其中\(S\)表示\(s_i\)的最大长度;\(T\)表示\(t\) include<bits/...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~