自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法题常用的小函数

【代码】算法题常用的小函数。

2024-03-12 18:53:50 166 1

原创 chatgpt

gpt

2023-06-02 19:52:35 167

原创 解Base64编码

C++实现base64解码

2023-05-28 14:57:01 89

原创 C++实现base64编码

C++Base64编码

2022-06-26 00:55:26 531

原创 Java输出字符串数组

Java输出数组内容

2022-06-11 17:19:35 4287

原创 codeforces 1574 C. Slay the Dragon

屠龙,首先要派一个人攻击力至少等于龙防御力的,然后剩下的人所有攻击力要加起来小于龙攻击力来防御(因为你也不知道是不是你的屠龙勇士是不是去的路上自己家被偷了)看范围是1e5,那么坑定是排序二分什么的了。对于一条龙,我们可以选一个最接近它防御的人去斩它,其他剩下的人防御那么我们可以对数组排序,然后二分查找最接近的人。#include<bits/stdc++.h>#define int long long#define Endl '\n'#define endl '\n'#defin.

2021-09-24 17:44:26 232

原创 codeforces 1574 B. Combinatorics Homework

判断是否可以组成符合条件的串,即有a个A,b个B,c个C,是否可以正好组成m对相同的串。对于连续串AAA,由题目给出的条件是算2对相同的,所以我们判断他最多可以组成多少对,至少得要组成多少对,判断max>=m>=min,满足即可#include<bits/stdc++.h>#define int long long#define Endl '\n'#define endl '\n'#define x first#define y second#define pi p.

2021-09-23 20:59:10 136

原创 codeforces 1574 A. Regular Bracket Sequences

就是构造能相匹配的括号串,即每一个左括号都能找到对应的右括号匹配)( 像这样的就不行很快啊,我就一个搜索写了上去,不出意料T了#include<bits/stdc++.h>#define int long longusing namespace std;int n;inline int read(){ int s=0,w=1; char ch=cin.get(); while(!isalnum(ch)){if(ch=='-')w=-1;ch=cin.get(.

2021-09-23 20:32:48 124

原创 随机数求圆周率pi

蒙德卡罗算法随机数求面积还是挺好用的发现半径不能取太大太小,太大会丢精度,太小会误差大…高中学的数学还是挺管用的吧#include<bits/stdc++.h>using namespace std;struct Point{ int x; int y;};struct Circle{ Point p;//圆心坐标 int r;};double dis(Point a,Point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.

2021-07-01 17:42:29 958

原创 codeforces 1541 C. Great Graphs

给你数组,nums[i]表示第i个点与第一个点的距离,我们可以在点之间添加有向路,使所有边权值达到最小,例如0 2 3这情况对于次数,我们可以找下规律于是乎,就有规律了,我们每条边要少算一次,因为要和原来的正向边抵消了;代码如下#include<bits/stdc++.h>#define int long long#define Endl '\n'#define endl '\n'#define x first#define y second#define pi pair.

2021-06-29 15:40:12 244

原创 codeforces 1541B. Pleasant Pairs

要找出ai⋅aj=i+j (i<j)的数对,那么我们很容易想到遍历的O(n²)方法。但是数据有10的五次方,肯定会超时,交了一发果然t了,所有我们需要简化方法。我们可以知道,对应{ a[i] i};他的数对是固定的倍数,比如a[1]=3,那么与他成对的只可能是{a[2] 1} ,{ a[5] 6} ,{ a[8] 9} (分别对应i+j=3,6,9)我们可以计算值的倍数,设k倍,则对应的下标idex=k* a[i]-i;只需检查对应的a[idex]是不是等于对应的k*a[i]即可类似于欧拉筛#

2021-06-29 13:44:02 266

原创 codeforces 1541A. Pretty Permutations

很容易想到,两个两个一组挨着的换位置,每一只要移动1距离就行,若是奇数个数,那么就最后三个换一下,abc换成bca什么的都是4距离#include<bits/stdc++.h>#define int long long#define Endl '\n'#define endl '\n'#define x first#define y second#define pi pair<int ,int>using namespace std;int a[105];s

2021-06-29 13:34:37 229

原创 关于除法的取模

除法不能直接取模,不然会出问题,应该转化为费马小定理乘法,在p为质数的情况下,1/a=ksm(a,p-2)mod p;pow 太慢用快速幂inline long long ksm(long x,long y){ long long ans=1; while(y) { if(y&1) ans=ans*x%p; x=x*x%p; y>>=1; } return ans

2021-06-19 10:38:44 375

原创 codeforces 1538C Number of Pairs

对于一个数,我们要找与他相加<=r&&>=l的对的个数,我们设要ll为确保其>=l的最小数,rr为确保其<=r的最大数,显然,我们对数组排序后,这两个中间的数都满足条件。学习lower_bound和upper_bound二分搜索就使码量非常小。对于一个x,要查找他后面的序列,否则则会(1,3)(3,1)这样造成重复。#include<bits/stdc++.h>#define int long long#define Endl '\n'#de

2021-06-11 10:22:17 307 1

原创 codeforces 1538B. Friends and Candies

题目是使序列的值全部相等,所以如果总和不能整除n就不可以,然后他可以选择k个人把他的糖果给别人,所以我们选大于k的人就可以了。#include<bits/stdc++.h>#define int long long#define Endl '\n'#define endl '\n'#define x first#define y second#define pi pair<int ,int>using namespace std;int a[200005];

2021-06-11 10:15:19 230 2

原创 codeforces 1538A Stone Game

我们找出最大值最小值,删掉两个的方式有两个从左边,两个从右边,最小值左边,最大值右边和最大值左边和最小值右边四种方式,取min即可#include<bits/stdc++.h>#define int long long#define Endl '\n'#define endl '\n'#define x first#define y second#define pi pair<int ,int>using namespace std;int a[105];s

2021-06-11 10:10:05 379 1

原创 最近点对 洛谷P1257

题目链接最小点对是经典分治问题,可以通过分治法将O(n²) 复杂度降到O(nlogn);

2021-05-31 22:11:58 573

原创 平方拆分 蓝桥杯

题目链接因为根本不知道可以由几个数组成,所以深度优先搜索。0不算。#include<bits/stdc++.h>using namespace std;const int total=2019;int ans=0;//记录有几个解void dfs(int n,int val)//n为当前最大数,使组成数递增,val为当前的总和{ if(val>=total)//如果当前大于等于2019当然结束递归 { if(val==total) ans++; re

2021-05-22 18:42:46 168

原创 十进制数的二进制位数

int len=log2(n)+1;//这样就行了//如果不知道log2这个函数就用换底公式len =floor(log(n)/log(2))+1;//一定要加floor,我也不知道为什么,可能丢精度,血的教训...

2021-05-21 18:39:32 660

原创 仙岛寻药 BFS,A*(Astar)算法

题目地址(推荐acwing)从题目可简单看出,这是个典型的搜索题,可以直接用BFS暴力搜索。代码如下:#include<iostream>#include<stdio.h>#include<queue>#include<cstring>using namespace std;int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}},r,l;//二维数组存方向char map[305][305];bool j[305

2021-05-04 22:11:23 175

原创 C++字符串最后一个字符

我们知道,字符串是有一个end函数的end()函数返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置)所以我们要获得字符串最后一个字符,只需要输出*(–s.end())即可因为迭代器是支持–和++的,最后一个字符前一个字符的下一个位置便是字符串最后一个字符。直接输出注意不要写成 *(s.end()–)因为这样是输出–之前的值(具体查看–和++前边和后边的区别)代码如下:#include<bits/stdc++.h>#define ll long longusing nam

2020-10-11 16:02:12 7435

原创 洛谷P1553 数字反转

很久之前没解决的问题…给你一个百分数,整数,小数或者分数,要你给他反转过来做这个题目,要知道stl函数,reverse(反转函数),erase(删除字符),substr(复制字符串)我是把长字符串分成俩部分做的#include<iostream>#include<stdio.h>#include<string>#include<algorith...

2020-04-22 11:50:34 217

原创 Hdu 1002 A+B Problem Ⅱ

题目链接大数相加,主要小心几点;1.数据前导02.输出格式(巨奇怪)我的思路:俩个数相加,我们可以把长的作为模板,然后把短的数不断从低位往高位加,注意进位,至于如果相加多出最长的一位,前边只要加个1,因为就算是9+9也只进1。伪代码(整理思路)输入A,B;把最长的赋值给A把A,B前边的0去掉;把B每一位加到A上;输出;AC代码:1+‘0’会变成字符1,‘1’-...

2020-03-17 15:04:49 86

原创 codeforces 363B - Fence

k代表长度,可以看作一个k长度的连续格子,你需要找出他的最小和,并且输出这个格子开始的地方#include<stdio.h>#include<iostream>using namespace std;int a[150005],b[150005];int main(){ int n,t,mi=0x3f3f3f3f;//mi赋值无穷大 scanf("%d%d...

2020-03-12 15:59:40 170

原创 codeforces 467B - Fedor and New Game

看懂题目,反正我半天没看懂。。。题目要求找出能和fedor成为朋友的人数,即差异<=k给你三个数nmk,n是士兵种类,忽略也没问题,m是选手个数(不包括fedor),k是能存在的最大差异,根据题目要求,我们只需要把选手的那个数和fedor那个数转化为2进制,再求出他们对应位不同数的个数,判断是不是<=k就行了,输出最大人数#include<stdio.h>#incl...

2020-03-12 13:16:08 271

原创 codeforces 456A laptops

alex是认为每一个贵的笔记本电脑都比便宜的质量要好,如果要排序来做也可以,但是看ab范围,我们知道,ab都是从1取到n,只有时时刻刻a=b时,那么alex才是对的#include<iostream>#include<cstdio>using namespace std;int main(){ int t; scanf("%d",&t); while...

2020-03-10 13:16:56 163

原创 Codeforces 313B Ilya and Queries

他是给了我们一个字符串,要我们找出串里边a[i]=a[i+1]的数的个数,因为字符串是不变的,而暴力肯定会超时,所以我们用一个数组来存储数的个数,再用范围规定的边界减去即可#include<iostream>#include<string>using namespace std;int dp[100005];int main(){ string a; cin...

2020-02-26 20:17:21 110

原创 Codeforces 327A - Flipping Game

题目给了我们一组数,要我们求一次变换(即对一个范围内的数字,0变1,1变0)之后,能得到的最大的1的个数。因为数据<=100,所以暴力是能过的,但是同样我们可以动态规划,找出更优秀的解法。暴力#include<iostream>using namespace std;int main(){ int t,num[105];//用数组存储数据 cin>&g...

2020-02-26 16:10:14 169

原创 Codeforces 519B A and B and Compilation Errors

很明显,给我们三行,第一个输入的是第一行的数字个数,我们只要找出每行少的那个数就行了,因为这是数组,所以我们可以直接算总和,然后分别减去他下面那行即可#include<iostream>using namespace std;int main(){ long long int sum[3];//三行用数组计总和 int n;cin>>n; for(int ...

2020-02-26 15:14:02 134

原创 Codeforces 492B Vanya and Lanterns

看完题目,我们可以知道他给了我们一条x轴,n代表灯笼数量,l代表了x轴长度,下边的是路灯的坐标,我们需要把俩个路灯间的最长距离求出来,不要忘记开头和结尾的灯,比较共三段段距离。(保留十位小数)#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int mai...

2020-02-25 18:35:52 183

空空如也

空空如也

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

TA关注的人

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