思维
Bug原产地
这个作者很懒,什么都没留下…
展开
-
ZOJ 4120 Tokens on the Segments ( 优先队列 + 思维 )
题目链接大致题意:在一个平面上给你 nnn 条线段的左右端点的横坐标(可重叠),纵坐标为当前是第几条,即两点坐标为 (l,i)(l,i)(l,i) 和 (r,i)(r,i)(r,i) ,你可以在平面的任意整数坐标位置放置一个标记,标记的横坐标不可相同.问最给定的线段最多会被标记多少条。解题报告:贪心 ,对于某位置 xxx 的标记,我们肯定会左端点小于等于xxx 且右端点大于等于 xxx,满足这样的线段可能有很多条,根据贪心性质肯定优先选择右端点较小的(优先队列维护),这样做能让右端点较大的在更右位原创 2020-10-22 21:31:51 · 217 阅读 · 0 评论 -
ZOJ 3872 Beauty of Array ( 规律+ 思维 : 连续区间不同数得和)
题目链接大致题意:n个数,求所有连续区间不同数的和的总和。n个数,求所有连续区间不同数的和的总和。n个数,求所有连续区间不同数的和的总和。解题报告:考虑不包含重复数 −>->−> 对当前位置而言,它的贡献为 a[x]∗i∗(n−i+1):即该位置在所有包含它的连续区间的贡献a[x] *i* (n-i+1):即该位置在所有包含它的连续区间的贡献a[x]∗i∗(n−i+1):即该位置在所有包含它的连续区间的贡献。考虑重复数 −>->−> pos[i]pos[i]原创 2020-10-15 10:58:54 · 94 阅读 · 0 评论 -
ZOJ 3781 Paint the Grid Reloaded ( 缩点建图 + dfs + bfs )
题目链接大致题意:给你一个大小 n∗mn*mn∗m 且只有元素 O/XO/XO/X 的矩阵,有这样一种操作每次你点一个元素的时候,这个元素所在的联通块(颜色相同)就会翻转,问你最少经过几次操作可以将所有的元素变成颜色统一解题报告:1.1.1.对同一连通块区域的点进行缩点2.2.2.建图,在新点中相邻的点建立一条有向图3.3.3.对每个点进行深搜求最大深度(最大深度=最小反转次数)再取 minminmin,代码展示:#include<bits/stdc++.h>#define原创 2020-10-09 22:30:49 · 119 阅读 · 0 评论 -
点权和 (思维+树形结构+倍增)
题目链接解题报告:代码展示:#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define all(x) x.begin(),x.end()#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e6+5;const int MOD=19260817;inline int read原创 2020-10-06 17:14:38 · 173 阅读 · 0 评论 -
edu90 - D. Maximum Sum on Even Positions ( 策略 : 子数组的反转)
题目链接大致题意:给你一个大小为 n 的数组,最多执行操作一次:反转任意一个连续的子数组。最后求 所有偶数位上的最大和。解题报告:#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e6+5;const int inf=0x3f3原创 2020-06-26 16:58:02 · 387 阅读 · 0 评论 -
斑羚飞渡(思维)
题目链接解题报告:原创 2020-05-02 17:10:26 · 1974 阅读 · 0 评论 -
BAPC K.Knapsack Packing ( STL + 思维 )
题目链接大致题意:给你 n 件物品和它们的重量的所有组合 (空组合也算),问你是否存在这样的 n 件物品。解题报告:不存在的情况:最小重量 >0 || 构成集合的最少重量书 >n首先对这些重量排序,次小的一定是答案集合里的,在之后每找到一个数(答案集合里存在的),用它来更新之前找到的合法重量的所有组合,然后再后面的扫面过程中,直接判断是否存在更新的组合情况中。#defin...原创 2020-04-02 19:42:34 · 180 阅读 · 0 评论 -
BAPC E.Exits in Excess ( 有向图 + 思维 )
题目链接大致题意:n点m条边,最多删除 m/2 条边使得有向图中无环。解题报告:解法非常巧妙。将所有的边分成两个集合,1)u>v ; 2) u<=v 那么只要删除小的集合一定能满足,因为小的集合边数最多就 m/2。#define first f#define second s#define ll long long#define mp make_pair#defin...原创 2020-04-02 12:58:12 · 157 阅读 · 0 评论 -
D. Recommendations(思维+优先队列+经典)
题目链接题意:给你n组数量书刊和数量+1的操作代价,问你使他们各不相同的最小代价。解题报告:对于相同的数量我们尽量让代价大的不变,代价小的数量++;再利用优先队列去贪心(pop 代价最大值 )即可#define first f#define second s#define ll long long#define mp make_pair#define pb push_back...原创 2020-03-12 10:23:13 · 219 阅读 · 0 评论 -
最大GCD ( 思维 + 数学 )
题目链接解题报告:显然,最优策略是我们只在区间{l,r}中找出一个元素与{ai(l<=i<=r)}使得gcd(ai,x)最大化。对于数组中的每个数我们可以用其因子记录出现的位置;询问时对 x 因子记录的位置中查找是是否存在在区间[ l, r ]内的。对于每个数的因子我们可以预处理出来。#define first f#define second s#define ll l...原创 2020-03-11 21:14:33 · 533 阅读 · 0 评论 -
2020 蓝桥杯大学 B 组省赛模拟赛(一)E方阵
题目链接题目描述: 广场上的小朋友们排成了整齐的方阵。具体来说,我们可以把每个小朋友看做是一个点,那么小朋友们就形成了 n×n 的点阵。方阵中,小朋友 A 和小朋友 B 互相可以看见,当且仅当二人之间的连线不经过别的小朋友,且他们之间的距离不超过 k(因为太远就看不见了)。我们想知道有多少对小朋友互相可以看见。(A,B)与 (B,A) 算同一对。解题报告:不妨设 A(x1,y1),B(x2,...原创 2020-03-01 19:57:36 · 700 阅读 · 0 评论