![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
贪心&&暴力
esay
scau_sleep(今天写bug了吗?
1.一个退役acmer,老年选手
2. 今天喝水了吗?
3. 会写暴力~比不会写强~比不会写优秀
4.不会三分,喜提铁牌。
5. 失败一次不算什么,胸针为了拯救真由里 和 助手。重来3000多次都可以,那我失败几次,又算什么。(命运石之门)
-------如果说这是命运石之门的意志的话
展开
-
Codeforces Global Round 23 C. Permutation Operations
差分,构造原创 2022-10-16 14:33:19 · 514 阅读 · 0 评论 -
Codeforces Round #628 (Div. 2) ABCD(C大胆猜测,D数学异或计算)
A EhAb AnD gCd题意:给你一个数x。要求你找到两个数,使得gcd(a,b)+lcm(a,b)=xgcd(a,b)+lcm(a,b)=xgcd(a,b)+lcm(a,b)=x思路:简单数学的构造。可以想到用1和x-1就好了。AC/*皮卡丘冲鸭!へ /| /\7 ∠_/ / │ / / │ Z _,< / /`ヽ │ ヽ / 〉 Y ` / / イ● 、 ● ⊂⊃〈 / () へ | \〈 >原创 2021-01-23 18:19:42 · 128 阅读 · 0 评论 -
AtCoder Beginner Contest 271 F - XOR on Grid Path(meet in the middle)
abc271 F - XOR on Grid Path, 暴搜原创 2022-10-01 21:59:49 · 395 阅读 · 0 评论 -
11091 最优自然数分解问题(优先做) 好像之前有道区域赛和这个贪心思路差不多。。。
题目:思路:AC代码:#include <cstdio>#include <cstring>#include <iostream>#include <vector>using namespace std;typedef long long ll;ll qpow(ll a, ll k){ ll res = 1; while(k){ if(k&1) res = res*a; a = a*原创 2021-12-13 13:05:55 · 880 阅读 · 0 评论 -
贴个代码2021 Hubei Provincial Collegiate Programming Contest 签到题F 两种实现
AC1(贪心1)#include <iostream>#include <cstdio>#include <vector>#include <map>#include <unordered_map>#include <set>#include <algorithm>#include <queue>#include <stack>#include <string>#in原创 2021-07-02 17:44:01 · 464 阅读 · 0 评论 -
edu109代码
dp做法#include <iostream>#include <cstdio>#include <vector>#include <map>#include <unordered_map>#include <set>#include <algorithm>#include <queue>#include <string>#include <cmath>#includ原创 2021-05-16 23:05:24 · 85 阅读 · 0 评论 -
SCAU2021春季个人排位赛第六场 Programming Contest
A Programming Contest tag: meet in the middle(这个思想可以很好的减少暴搜的时间复杂度)分出两个集合,来减少暴搜的时间复杂度。实现1:对于分出一个集合后,可以保存第一个的结果,之后二分去第二个集合中check。实现2:每个集合的计算,直接用双指针达到O(2n)O(2^n)O(2n),合并时候,也用双指针O(2n)O(2^n)O(2n)auto i = A.rbegin();//i++//这里的指针自增,是指向下一个,切记!!!!!!!!!!!实原创 2021-04-24 19:34:54 · 171 阅读 · 0 评论 -
D. Grime Zoo (accumulate的使用,累加函数的使用。) 贪心&&前缀
传送门题意:给你一个串,其中由 0,1,?0, 1,?0,1,?组成。对于01的贡献是x对于10的贡献是y思路:首先对于问号的位置,可以枚举一个位置,之后贪心的涂一个前缀即可。主要是遍历 时,怎么快速计算出(下面以计算10为eg)对于一个合法的10那么我们只要找到所有的0的位置。cnt = p0[i]p_0[i]p0[i] - (i−1)(i-1)(i−1)(减去前面是1的位置)那么总结一下就是 (∑i=1totp0[i])−(tot−1)∗(tot)2(\sum_{i=1}原创 2021-03-12 10:55:19 · 143 阅读 · 0 评论 -
Q - Little Girl and Maximum Sum CodeForces - 276C
AC(暴力瞎搞)/*皮卡丘冲鸭!へ /| /\7 ∠_/ / │ / / │ Z _,< / /`ヽ │ ヽ / 〉 Y ` / / イ● 、 ● ⊂⊃〈 / () へ | \〈 >ー 、_ ィ │ // / へ / ノ<| \\ ヽ_ノ (_/ │// 7 |/ >―r ̄ ̄`ー―_*/#include <iostream>#include <bit原创 2021-03-01 22:34:01 · 113 阅读 · 0 评论 -
D. Zookeeper and The Infinite Zoo(进制)
D. Zookeeper and The Infinite Zoo题意:一个点 uuu 和点 u+vu+vu+v 之间有边,当且仅当 vvv & uuu = vvv;先在给你点u和点v,问:是否能从uuu出发到vvv。思路:转换题目条件:每次的增量 ddd(二进制表示下)的1只能出现 在当前 u二进制表示下 出现1 的位置。 换句话说:从一个点uuu 到vvv, 可以使得uuu二进制下的数有以下变化。uuu 的一个1 右移。uuu:100100ddd:000100vv原创 2021-03-01 20:49:33 · 214 阅读 · 1 评论 -
Good Sequences 唯一分解&&dp&&贪心
Good Sequences 题意:给你一个数列。满足以下条件递增即a[i]<a[i+1]a[i] < a[i+1]a[i]<a[i+1]求:找到一个最长的子序列,使得长度最长,但是有下面的限制:gcd(b[i],b[i+1])>1gcd(b[i],b[i+1]) > 1gcd(b[i],b[i+1])>1, 即任意相邻的元素(在子序列中)都要有公因子。思路:(局部最优解→\to→ 全局最优解)数据n=105{10}^5105 , a ∈[1,10原创 2021-02-24 22:29:56 · 134 阅读 · 0 评论 -
E. Almost Fault-Tolerant Database(构造||枚举答案)alan-yyds--学习了写alan的代码
E. Almost Fault-Tolerant Database题意:给你n份长度为m的数组的拷贝。(这n份是事先存储在计算机中的)可是发生了error,对于每一份导致有些位置的元素变化了。最多有两个位置变化。问:是否可以还原出原数组。思路:以第一份a【1】a【1】a【1】为基准,去考虑其他的。对于i∈[2,n]i\in[2,n]i∈[2,n] 的 a【i】a【i】a【i】 与a【1】a【1】a【1】进行比较case1:上面的比较中当所有拷贝(i∈[2,n]i\in[2,n]i∈[原创 2021-02-24 00:25:49 · 484 阅读 · 3 评论 -
2021牛客寒假算法基础集训营5(暴力的G,没写出来qwq)
转载一个牛客题解原文地址 添加链接描述赛时,写歪了AC#include <bits/stdc++.h>#define endl '\n'typedef long long ll;typedef long double ld;#define endl '\n'#define inf std::numeric_limits<ld>::max()using namespace std;#define Please return#define AC 0struct转载 2021-02-22 22:56:57 · 58 阅读 · 0 评论 -
日后学习。。。。。
AC(博主的纯数学做法)/*皮卡丘冲鸭!へ /| /\7 ∠_/ / │ / / │ Z _,< / /`ヽ │ ヽ / 〉 Y ` / / イ● 、 ● ⊂⊃〈 / () へ | \〈 >ー 、_ ィ │ // / へ / ノ<| \\ ヽ_ノ (_/ │// 7 |/ >―r ̄ ̄`ー―_*/#include <iostream>#include <原创 2021-01-31 20:21:03 · 167 阅读 · 0 评论 -
AtCoder Beginner Contest 190 C Bowls and Dishes(暴搜)
Bowls and Dishes题意:给你n个dish。有m个条件。一个条件要成立,那么它要两个给定的dish中有球。现在又k个人。每个人可以选择一个dish然后放球,且每个人有两个选择。问:怎样可以使得 m个条件尽量成立。思路:数据小,可以考虑直接暴搜。AC#include <iostream>#include <bits/stdc++.h>#define For(i,x,y) for(int i=(x); i<=(y); i++)#define原创 2021-01-30 23:51:06 · 1225 阅读 · 8 评论 -
牛客IOI周赛22-普及组 (被自己菜到了)
后话,一个261026^{10}2610会爆longlong吗??????????我真的qwqwqw…qwq(赛中走上了高精度,一直wa到哭qwq)A战争尾声题意:有n个点(x,y)且范围都是(1,200)(1,200)(1,200),现在要你找到一个点,使得它到所有其他点的距离最小。n的范围也只有200。输出:最小的点思路:由于n小,直接暴力枚举答案即可。(根据横纵坐标即可)AC# include <bits/stdc++.h># define fi first#原创 2021-01-23 00:22:45 · 175 阅读 · 1 评论 -
寒假每日一题Week2 day14 AcWing 1432. 棋盘挑战(N皇后问题)
AcWing 1432. 棋盘挑战题意:N皇后问题。每行只可以放一个,每列也只可以放一个。还要保证对角线不冲突。输出:按字典序输出前3组答案。最后输出总方案数。思路:首先对于摆放问题暴力dfs就好,因为行不冲突,所以每行只可以放一个棋子,所以从这里入手。判断冲突的时候要注意一下优化:暴力查看每一行的每一列,假如当前列col[i]col[i]col[i]没有放元素,那么可能可以放。之后看是否对角线冲突,可以观察得到对于每个对左对角线上的值,都是x−yx-yx−y,那么就可以用一原创 2021-01-22 16:13:23 · 146 阅读 · 1 评论 -
寒假每日一题Week2 day13 AcWing 754. 平方矩阵 II(暴力&&肉眼观察法)
AcWing 754. 平方矩阵 II 题意:本题要你输出满足题意的n阶矩阵。思路:观察很重要。AC(抽风大佬)# include <bits/stdc++.h>using namespace std;int main(){ int n; while(cin>>n,n){ for(int i = 1; i <= n; i ++ ){ for(int j = 1; j <= n; j ++ )cout&原创 2021-01-21 12:05:55 · 119 阅读 · 0 评论 -
寒假每日一题Week2 day12 AcWing 1341. 十三号星期五(暴力&&数学)
1341. 十三号星期五题意:从1900/1/1开始往后n年,统计13号出现在一周内的天数。AC(榜1的AC代码)# include <bits/stdc++.h>using namespace std;int m[]={31,28,31,30,31,30,31,31,30,31,30,31};int ans[9], n, days;int main(){ cin>>n; for(int i = 1900; i < 1900+n; i ++ ){原创 2021-01-20 18:53:40 · 145 阅读 · 0 评论 -
寒假每日一题Week2 day11 AcWing 1532. 找硬币(哈希表)
AcWing 1532. 找硬币题意:给你n种面值的硬币,问是否可以找到两个硬币的面值之和等于m如果找得到,输出第一个v1最小的解。反之输出无解。思路:边读数据,边记录即可。假如有两个硬币的话,更新最小值就行了。AC# include <bits/stdc++.h>using namespace std;int main(){ unordered_map<int,int>ma; int n, m, x, mi=1e9+10; cin&g原创 2021-01-19 12:00:42 · 122 阅读 · 0 评论 -
寒假每日一题day10 AcWing 1208. 翻硬币(贪心,扫雷问题)
AcWing 1208. 翻硬币题意:给你一个起始串和目标串。进行最小的操作,变为目标串。每次操作,可以改变两个相邻的值。思路:贪心修改,一发现不等,就改变前后。AC# include <iostream>using namespace std;int main(){ string a,b; cin>>a>>b; int n = a.size(), res=0; for(int i= 0; i < n-1; i原创 2021-01-18 12:48:25 · 141 阅读 · 0 评论 -
寒假每日一题day9 AcWing 429. 奖学金(结构体排序)
AcWing 429. 奖学金题意:按照总分先排序;若相等,按照语文排序。若相等, 按照学号升序排序。思路:结构体sort一下就好了。注意要不等时,才到下个ifAC# include <bits/stdc++.h>using namespace std;struct stu{ int m, c, e; int id, tot; bool operator < (const stu x)const{ if(tot!=x.tot原创 2021-01-17 12:36:28 · 955 阅读 · 2 评论 -
寒假每日一题day8 AcWing 422. 校门外的树(三种写法的区间合并)线段树写法待补
422. 校门外的树题意:给你一个数轴,在轴上都有点,原本每个点上都有树。现在给你m个区间,在这些区间覆盖的点上没有树。问:最后剩下多少树。思路1(直接暴力)复杂度:O(nm) ,m为区间长度题目的数据小可以直接暴力。每读入一个区间暴力标记即可。AC1# include <bits/stdc++.h>using namespace std;const int N = 1e4+10;int x[N];int main(){ int l, m;原创 2021-01-16 16:49:25 · 164 阅读 · 0 评论 -
寒假每日一题day6 680. 剪绳子(浮点数二分答案,最大的最小值)
680. 剪绳子题意:给你n个绳子,要求你分割处m个长度相同的原创 2021-01-14 11:15:05 · 164 阅读 · 0 评论 -
寒假每日一题day5 1346. 回文平方(无脑暴力判断回文) + 我爱喝水qwq + 回文还是写string的reverse好
1346. 回文平方题意:给你一个k进制,要求你判断10进制下的1-300之间的数,哪个数的平方在k进制表示下是回文串。思路:直接暴力就好。先除k取余接着判断是否是回文即可。反思一开始想都没想直接暴力了,但是还是可以运用string函数,少码好多qwqrend是一个string的起始位置。rebegin是最后一个字符的位置。AC1(string)# include <bits/stdc++.h>using namespace std;int b;strin原创 2021-01-13 21:29:04 · 115 阅读 · 0 评论 -
寒假每日一题 1113. 红与黑 喝水系列
1113. 红与黑题意:从@出发,问能走多少次“.”。每次只能走点。思路:简单走迷宫。AC(抽风大佬的dfs)# include <bits/stdc++.h>using namespace std;int ans=0, sx, sy;char g[30][30];int dx[]={0,0,1,-1};int dy[]={1,-1,0,0};void dfs(int x, int y){ ans++; for(int i = 0; i < 4;原创 2021-01-12 18:51:25 · 101 阅读 · 0 评论 -
寒假每日一题day3 756. 蛇形矩阵(暴力模拟)我爱喝水,天天健康
756. 蛇形矩阵题意;就是回形填矩阵。思路:模拟就可以了,根据四个方向(有不同种写法,但是本质是一样的)AC(抽风大佬%%%,好像之前紫薯也介绍过这种写法,qwq)# include <bits/stdc++.h>using namespace std;int g[110][110];int main(){ int n, m; cin>>n>>m; for(int x=1,y=1,i=1; i<=n*m;){原创 2021-01-11 18:39:47 · 101 阅读 · 0 评论 -
寒假每日一题 104. 货仓选址(中位数 + 抽风大佬的思路orz)
104. 货仓选址题意:给你n个点,要求你找到一个点,使得这个点到所有点的距离之和最小。思路:先排序。找到所有点的中位数。AC# include <bits/stdc++.h>using namespace std;const int N = 1E5+10;int a[N];typedef long long ll;int main(){ ios::sync_with_stdio(0); int n; cin>>n;原创 2021-01-09 12:03:05 · 160 阅读 · 0 评论 -
City Game UVA - 1330(最大子矩阵DP,很经典的一道题目)
City Game UVA - 1330 题意:给你一个矩阵有F(空地)和R(障碍)。现要你求一个由F组成的最大的子矩阵。输出其乘以3的结果。思路:我们把每个格子向上延伸的连线空格看成一条悬线,并且用up(i,j),left(i,j),right(i,j) 表示格子(i,j)的悬线长度以及悬线向左、向右运动的“运动极限”。之后更新过程具体看代码。AC#include <bits/stdc++.h>#define fori(i,x,y) for(int i=(x); i<(y原创 2020-12-18 16:28:51 · 102 阅读 · 1 评论 -
Subsequence UVA - 1121(双指针&&单调前缀和)
Subsequence UVA - 1121 题意:有n个正整数组成一个序列。给定整数s,求长度最短的连续序列,使得它们的和大于或等于s。思路:考虑前缀和pre【n】。prei−1<=prej−spre_{i-1}<=pre_{j}-sprei−1<=prej−s。由于j是递增的,pre【j】也是递增的,所以prej−spre_{j}-sprej−s也是递增的。换句话说,满足条件的iii的位置也是递增的。因此我们可以写出这样的程序。(这里感觉是:我的感觉和lrj的感觉总是不原创 2020-12-18 16:21:30 · 105 阅读 · 1 评论 -
Meteor UVA - 1398(一道挺经典的题目,关于区间的操作)
Meteor UVA - 1398 题意:给你一个矩形框框。有n个点,它们有起始位置(x,y),速度(a,b)。问:是否存在一个时刻,有几个点在一个矩形框框里。求最大值。思路(简化):先简化下问题,首先可以考虑,那么假如有多个开区间,现在要你求:找到一个点,使得这个点被最多的开区间覆盖。那么可以把区间的左右端点抽象成事件。按照时间的先后排序。假如有两个事件的发生时间一样,那么右端点优先(因为是开区间)之后遍历事件,当遇到一个左端点时,cnt++;当遇到一个右端点时cnt–。ans=原创 2020-12-18 16:07:29 · 113 阅读 · 2 评论 -
Calculator Conundrum UVA - 11549(floyd判圈)
Calculator Conundrum UVA - 11549题意:给你一个n和k。每次操作可以把k平方,之后取k*k的前n位 为 k。思路:首先可以想到,经过有限次操作后,会出现循环。那么可以想到一种暴力的方法是,用map去记录答案。(但是总时间复杂度是带一个log的)。可以用Floyd判圈算法去做。Floyd判圈算法(蓝书原话)想象一下,假设有两个小孩子在一个"可以无限向前跑"的跑道上赛跑,同时出发,但其中一个小孩的速度是另外一个小孩速度的两倍。如果跑跑道是直的,跑得快的小孩永远原创 2020-12-18 15:50:50 · 107 阅读 · 0 评论 -
Open Credit System UVA - 11078(暴力维护一个前缀最大值)
Open Credit System UVA - 11078题意:给你一个长度为n的整数序列,找出两个整数AiA_iAi和AjA_jAj (i<j)(i<j)(i<j),使得 Ai−AjA_i-A_jAi−Aj尽量大。思路:暴力遍历,遍历时,维护AiA_iAi的最大值即可。顺便更新答案。AC#include <iostream>#include <bits/stdc++.h>#define For(i,x,y) for(int i=(原创 2020-12-18 15:36:26 · 73 阅读 · 1 评论 -
Age Sort UVA - 11462(空间优化&&水题) 计数排序||桶排序
Age Sort UVA - 11462题意:给定若干居民的年龄(都是1~100之间的整数),把它们按照从小到大的顺序输出。思路:首先想到的是,把数据排序之后输出,但是数据量有2e6,有点大,所以要想办法优化时间和空间上的开销。内存限制太紧(甚至不能把它们全读入内存),因此无法使用快速排序方法,但整数范围很小,可以使用计数排序方法。AC#include <iostream>#include <bits/stdc++.h>#define For(i,x,y) fo原创 2020-12-18 15:31:54 · 261 阅读 · 2 评论 -
Watering Grass UVA - 10382(贪心&&模拟)区间覆盖
Watering Grass UVA - 10382题意:给出每个喷水装置的位置,和喷水半径。给你一个长方形区域,要求你装最少的喷水装置,使得这个区域都可以被喷到水。思路:首先可以想到先把喷水装置 抽象成线段。(但是这一步要小心一下,每个喷水点在竖轴的中心)之后把问题转换为了区间覆盖。反思:本题要考虑假如半径不够w2\frac{w}{2}2w的情况,那么肯定不采用这个装置。qwq。。。。还要考虑,假如更新到了超过长度lll,那么可以不用更新了,直接break出循环。一开始没考虑浮原创 2020-12-16 21:06:43 · 90 阅读 · 0 评论 -
Beijing Guards UVA - 1335(二分答案+思维&&贪心)
Beijing Guards UVA - 1335 题意:给你n个人,每个人有要rir_iri种礼物,假如两个相邻的人,有礼物相同,那么他们就不会满足。问:现在需要多少个礼物。找到一种分配,可以使得所有人都满足。思路:首先可以想到的是二分,答案,即需要的礼物数。(先排除n为偶数的情况,因为n为偶数,肯定ans=max(ri+ri+1r_i+r_{i+1}ri+ri+1),之后问题的关键是,奇数的情况)问题是,如何写check。首先可以知道要贪心地取奇数位置和偶数位置。对于奇数位置原创 2020-12-15 18:28:28 · 76 阅读 · 0 评论 -
Network UVA - 1267(两次dfs)树上贪心
Network UVA - 1267题意:给你一棵无根树,树的叶子都为客户端,其它结点为服务器。现在s结点放了一个VOD播放器,其覆盖的范围为k。要求:最少再放多少个VOD来使得,所有客户端都有信号。思路:把无根树->转换为有根树,以s为根即可。之后把s能覆盖到的结点先不看。重点考察覆盖不到的叶子结点。对于这些叶子结点按深度排序,去贪心地放VOD。放完后,已覆盖的点标记即可。AC#include <iostream>#include <bits/stdc+原创 2020-12-10 20:10:18 · 73 阅读 · 0 评论 -
Fill the Square UVA - 11520(暴力枚举,水题)
Fill the Square UVA - 11520 题意:在一个n x n的网络中填写一些大写字母,你的任务是把剩下的格子中也填满大写字母。要求每个格子相邻之间不能相同。思路:暴力即可。AC#include <iostream>#include <bits/stdc++.h>#define For(i,x,y) for(int i=(x); i<=(y); i++)#define fori(i,x,y) for(int i=(x); i<(y);原创 2020-12-10 19:26:52 · 76 阅读 · 0 评论 -
A Different Task UVA - 10795(dfs&&汉诺塔变式)
A Different Task UVA - 10795 题意:汉诺塔的变式,给你一个初态,要求你达到终态。思路:先找到一个编号最大的,且不能在目标柱子上的k。代码如下ans = f(start, k-1, 6-start[k]-finish[k]) + f(finish, k-1, 6-start[k]-finish[k]) +1;大于k的可以当作不存在。那么小于k的先借助中转移动,之后移动k,最后再移成终态(对称性)。f里的写法。if(i==0)return 0;if(原创 2020-12-09 23:08:57 · 99 阅读 · 0 评论 -
Help is needed for Dexter UVA - 11384(dfs简单分析)
Help is needed for Dexter UVA - 11384 题意:给你一个整数序列,每次你可以选择一个或者多个整数同时减去一个相同的整数。求:最小的操作步数。思路:可以想到把元素对半分来减少规模,f【n】=f【n/2】+1.边界f【1】=1;AC#include <iostream>#include <bits/stdc++.h>#define For(i,x,y) for(int i=(x); i<=(y); i++)#define原创 2020-12-09 23:03:08 · 85 阅读 · 0 评论