自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 从0开始的计算几何(二)———点与线 练习题题解

前排提示,本文章内容来源于牛客进阶课程计算几何。(本人仅转述加总结,想要了解更多请点击牛客竞赛课程专栏购买) 本博客为菜鸡转述,如有错误请轻喷,大佬请点击右上角离开。 本次为题目讲解,由于是做题不是搞研究,所以那些比较难证明但是又可以感觉出来的性质,我们都是直接掏出来用的,请原谅本菜鸡,因为证明实在过分繁琐困难了,我就不证直接用了。 首先是题目链接 首先A题,还记得我们前面讲的非数NaN吗,当NaN与任何数字比较的时候,只有不等于操作返回true,所以该题需要我们凑出一个NaN,怎么整出NaN可以百度,这里

2022-02-14 20:02:22 341

原创 从0开始的计算几何(一)———点与线

前排提示,本文章内容来源于牛客进阶课程计算几何。(本人仅转述加总结,想要了解更多请点击牛客竞赛课程专栏购买) 本博客为菜鸡转述,如有错误请轻喷,大佬请点击右上角离开。 本文章较长,概念性知识较多,请各位看官做好反复观看准备,以及准备好纸笔进行画图。 一、关于浮点数与精度 这一部分,我们要明确c++的三种浮点类型,以及为什么会有精度误差,怎么降低精度误差。 float double 以及long double 随着计算机的发展,我们基本以及淘汰了float,所以我们只讲double 和 long double

2022-01-17 22:09:37 385 1

原创 CF1601C Optimal Insertion

题解的做法,先把bi从小到大排序,因为pi随bi递增,因此对于当前的一段b[L,R],先求bL+R2的最优位置,再递归到左右子区间求解。这样左右子区间扫描的长度之和就只有当前区间的长度。又因为递归了logn层,因此时间复杂度也是O(nlogn)的。 #include<bits/stdc++.h> using namespace std; const int N=1e6+4; int a[N],b[N],bb[N],aa[N<<1]; #define ll long long ll s

2021-11-30 20:57:25 176

原创 CF873 B

Balanced Substring 前缀和思想下的暴力优化,正解应该是个DP 我们直接统计1的个数,进行前缀和,然后依次枚举区间长度,如果该区间的1的个数等于区间长度的一半,我们就记录这个值。 优化: 如果1的个数或者0的个数少于区间长度的一半,那么必然不成,直接退出循环。 通过观测可知,如果sum[r]-sum[l-1]满足条件要求,那么当l-1成为r的时候必然不存在新的l-1满足题目条件,若满足,这之前的sum[r]-sum[l-1]的最大长度会上升。所以开个vis数组记录用于加速。 #include

2021-10-25 13:31:49 90

原创 CF776 C

https://codeforces.com/problemset/problem/776/C 前缀和的应用 先计算出前缀和,然后对每个前缀和查找它加上k的非负幂次后面有没有这个数值的前缀和后,然后计算总和。 时间复制度nlogn。 #include<bits/stdc++.h> using namespace std; #define ll long long const int N=1e5+10; ll a[N],sum[N]; int main() { ios::sync_with

2021-10-25 12:43:23 88

原创 牛客OJ NC13251 模

题目描述 给定四个正整数a,b,c,k,回答是否存在一个正整数n,使得a*n在k进制表示下的各位的数值之和模b为c。 解法 一个数a在进制k下数位和损失的数字为(k-1)*k1。k1为未知非负整数 即 a-(k-1)*k1≡c(mod b) 变成 a-(k-1)k1+bk2=c。 运用裴蜀定理就可知,如果gcd(a,b,k-1)|c,那么有解,否则无解 ...

2021-10-18 14:25:36 211

原创 算法学习笔记——尺取法

尺取法,又名双指针算法。顾名思义,是像尺子一样取一段。通常是保存数组左右端点的下标,然后根据题目要求推进左右下标,最终得出答案。 例如 POJ2739 题目大意:求出一个数字能拆分成几种连续的质数序列。 例如41可以拆分成 2+3+5+7+11+13, 11+13+17, 41三种方式。 如果题目数据比较小,所以我们可以采取暴力的方式,从第一个质数开始枚举 ,一直加到和大于或者等于n的时候,然后继续从下一个质数开始枚举。时间复杂度为O(n2)。在这题里是超时,所以我们要用尺取法。 尺取法的做法是,使用L,R

2021-09-26 20:36:13 285

原创 CF149D Coloring Brackets

先上代码(来源于bbb) #include <algorithm> #include <iostream> #include <string> #include <vector> #include <cstdlib> #include <cstring> using namespace std; typedef long long ll; const int mod = 1000000007; struct sta_cnt {

2021-09-12 20:50:08 76

原创 2021-04-24

浙江省省赛J题公平分配 题意如下,给定机器人和能量棒数,摧毁一机器人花费1美元,生存能量棒花费一美元(摧毁一机器人才能生产一能量棒),问最低花费多少美元使得剩下的机器人能平分能量棒。 首先,我们要理解 a*b=m+k;即,m花费k美元变成m+k,那么剩下的机器人数就应该是a,b的其中一个。所以我们要让i变成a或者i变成b。因为机器人只能摧毁,所以我们要判断i是否大于a或b。因此,想得出最低美元的花费,只要枚举a即可。 #include <bits/stdc++.h> using namespac

2021-04-24 22:06:48 109

原创 分数拆分

原题链接:http://www.tzcoder.cn/acmhome/problemdetail.do?method=contestProblemDetail&contestId=2549&id=D 代码如下 #include<bits/stdc++.h> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { int t=n*n;

2021-03-31 23:47:42 185 1

原创 atcoder Median Sum题解

原题链接:https://atcoder.jp/contests/agc020/tasks/agc020_c 上来先给AC代码 #include<bits/stdc++.h> using namespace std; const int N=2e6+5; bitset<N>V; int main() { int n,s=0; scanf("%d",&n); V[0]=1; for(int i=0,x; i<n; i++)scanf("%d

2021-03-26 22:11:56 246

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除