自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Acwing 867分解质因数

根据算术基本定理,不考虑排列顺序的情况下,每个正整数都能够以唯一的方式表示成它的质因数的乘积。n=p1^a1 * p2^a2 *p3a3…pnan比如一个数16 在分解时先找到2这个质因子,然后由于16/2后还可以/2,所以会在2这个质因子上产生次方不优化版本:从2~n 找到能整除的因子然后算次方提前不满意这个不优化版本这里有个性质:n中最多只含有一个大于sqrt(n)的因子。证明通过反证法:如果有两个大于sqrt(n)的因子,那么相乘会大于n,矛盾。证毕于是我们发现最多只有一个大于sqrt(n

2021-11-17 12:41:51 173

原创 Acwing 845. 八数码

题目描述在一个 3×3 的网格中,1∼8 这 8 个数字和一个 x 恰好不重不漏地分布在这 3×3的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让 x 先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:1 2 3 1 2 3 1 2 3 1 2

2021-11-02 16:54:44 139

原创 Ado.net总结

Ado.net组成:1.DataSet 非连接的核心组件。独立于任何数据源的数据访问,多种不同的数据源2.Data Provider(数据提供程序):用于连接数据库,执行命令,检索结果SQLServer数据提供程序:System.Data.SqlClient命名空间OLEDB的数据提供程序:System.Data.Olebd命名空间ODBC的数据提供程序: System.Data.Ddbc命名空间Oracle数据提供程序:System.Data.OracleClient命名空间Con

2021-10-18 16:38:37 248

原创 Acwing 429.奖学金(重载小于号和自定义比较函数)

429. 奖学金某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5名学生发奖学金。期末,每个学生都有 3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。任务:先根据输入的 3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名学生的学号和总分。输入格式输入文件包含 n+1行:第 1行为一个正整数 n,表示该校参加评选的学生人

2021-09-29 14:21:10 163

原创 AcWing 422. 校门外的树(区间合并)

422. 校门外的树某校大门外长度为 L的马路上有一排树,每两棵相邻的树之间的间隔都是 1米。我们可以把马路看成一个数轴,马路的一端在数轴 0的位置,另一端在 L 的位置;数轴上的每个整数点,即 0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。输入格式输入文件的第

2021-09-29 11:54:39 116

原创 Acwing1227. 分巧克力

1227. 分巧克力儿童节那天有 K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N块巧克力中切出 K块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数大小相同例如一块 6×5的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入格式第一行包含两个整数 N和 K。以下

2021-09-26 09:25:22 83

原创 Acwing680. 剪绳子

思路:使用浮点二分法,判断能否剪出要求的绳子数量,二分出来的就是绳子长度,当长度为x的时候可以剪出要求数量的绳子,那么小于x的都可以剪出来,此时再去看大于x的绳子长度。开始状态:l=0,r=1e9,mid=(l+r)/2。判断能总共剪出长度为 mid 的绳子多少根:总共能剪出的根数=每一根绳子能剪出的根数之和。如果能剪出长度为mid的绳子,则l=mid,如果不能,则r=mid。直到r−l<1e−4。详细代码:#include<iostream>using namespa.

2021-09-25 10:44:00 69

原创 ACWING 1346. 回文平方

1346. 回文平方回文数是指数字从前往后读和从后往前读都相同的数字。例如数字 12321就是典型的回文数字。现在给定你一个整数 B,请你判断 1∼300 之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B进制表示是回文数字。输入格式一个整数 B。输出格式每行包含两个在 B进制下表示的数字。第一个表示满足平方值转化为 B进制后是回文数字那个数,第二个数表示第一个数的平方。所有满足条件的数字按从小到大顺序依次输出。数据范围2≤B≤20,对于大于 9 的数字,用 A 表示 10,用

2021-09-21 09:18:55 96

原创 756. 蛇形矩阵

思路:一般来说暂时我想到的就两种思路.一种是运用坐标加上dx[]和dy[]数组来进行移动判断,dx[] = {-1,0,1,0},dy[] = {0,1,0,-1};第二种是模拟法,设置好上下左右的边界,每次换方向就改变边界的条件.详细代码:#include<iostream>using namespace std;const int N = 110;int n,m;int q[N][N];int main(){ cin >> n >&gt.

2021-09-14 11:13:00 54

原创 Acwing 848. 有向图的拓扑序列

代码详解:#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int N = 100010;int n,m;int h[N],e[N],ne[N],idx;int q[N],d[N];void add(int a,int b){ e[idx ] = b,ne[idx] = h[a],h[a] = idx++;}bool t.

2021-09-12 12:18:01 85

原创 Acwing 847图中点的层次

详细代码:#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 100010;int n,m;int h[N],e[N],ne[N],idx;int d[N];//存储每个节点离起点的距离 d[1]=0int q[N];//存储层次遍历序列 0号节点是编号为1的节点void add(int a,int b){ .

2021-09-12 11:40:51 78

转载 Acwing 846 树的重心

树的重心给定一颗树,树中包含 n 个结点(编号 1∼n)和 n−1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数 n,表示树的结点数。接下来 n−1行,每行包含两个整数 a 和 b,表示点 a 和点 b之间存在一条边。输出格式输出一个整数 m,表示将重心删除后,剩余各个连通块中点数的最大值。数据范围1≤n≤10的五次方

2021-09-12 11:23:27 107

原创 差分的题目

一维差分代码:#include<iostream>using namespace std;const int N = 100010;int n,m;int a[N],b[N];void insert(int l,int r ,int c){ b[l] += c; b[r+1] -= c;}int main(){ cin >> n >> m; for(int i = 1;i<=n;i++)cin >&g

2021-05-26 15:36:46 89

原创 leetcode51 N皇后问题

解决N皇后问题分为以下几个步骤:首先要定义出两个二维的数组,一个是attack数组用于表示当前皇后已经占住的攻击范围,0代表可以放置皇后,1代表此地方不能放置皇后一个是queen用于表示哪些点上皇后有皇后,当前位置为’.'代表此位置没有皇后,当前位置为’Q’代表有皇后,然后再进行初始化: queen全部初始化为'.' attack全部初始化为0下面写一下第一步的代码:vector<vector<int>>attack;vector<string&

2021-03-29 20:18:22 280

原创 452. 用最少数量的箭引爆气球

代码:#include<algorithm>#include<iostream>#include<vector>using namespace std;bool cmp( vector<int> &a, vector<int> &b){ return a[0] < b[0];}class Solution {public: int findMinArrowShots(vector&l.

2021-03-24 16:44:14 50

原创 括号匹配

代码:#include<iostream>using namespace std;#include<map>#include<stack>char s[1010];map<char, char>mp;int main(){ mp['<'] = '>'; mp['{'] = '}'; mp['('] = ')'; mp['['] = ']'; while (cin >> s) { stack<ch.

2021-03-23 23:19:46 50

原创 快速幂

long long binarypower(long long a,long long n,long long p){ if(n == 0)return 1; a %= p; long long c = binarypower(a,n >> 1,p); if(n & 1)return c * c % p * a %p; return c * c % p;}

2021-03-23 19:49:18 44

原创 IP地址判断,以及转化为16进制

代码:#include<iostream>using namespace std;int main(){ int a, b, c, d; char ch; scanf("%d.%d.%d.%d", &a, &b, &c, &d); if (a < 0 || a > 255 || b < 0 || b > 255 || c < 0 || c > 255 || d < 0 || d > 255).

2021-03-23 17:48:28 243

原创 二元组整数

代码:#include<iostream>using namespace std;#include<algorithm>int main(){ int n; int a[30] = { 0 }; int b[30] = { 0 }; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; b[i] = a[i]; } sort(a, a + n); sort(b, b.

2021-03-23 17:32:33 137

原创 P1605 迷宫(dfs)

详细代码:#include<iostream>using namespace std;int n, m, t, sx, sy, fx, fy,res;const int N = 100;int mp[N][N],vis[N][N];int xx[] = { 1,0,-1,0 };int yy[] = { 0,1,0,-1 };void dfs(int x, int y){ if (x == fx && y == fy) { res++; retur.

2021-03-22 16:38:39 79

原创 石子合并 区间DP

题目:详细过程:f[l,r]表示把l到r合并成一堆的最小代价1.先把区间[l,r]切分为两部分,[l,k]和[k+1,r],k是切分点2.再把两部分[l,k]和[k+1,r]合并在一起,并用前缀和来求区间和3转移方程:f[l,k] + f[k+1,r] + s[r] - s[l-1] -> f[l,r]4.计算f[l,r] = min(f[l,r],f[l,k] + f[k+1,r]+s[r] - s[l-1])5.初值 f[i,i] = 0(合并自己的代价为0),其余为正无穷,便于求

2021-03-22 01:16:08 93

原创 多重背包二进制优化

思想:将多重背包问题,全部一个个用二进制拆分出来,转为全部单独的小物品,再用01背包的思想来解决。题目:完整代码:#include<iostream>using namespace std;const int N = 10100;int n,m,v,w,s,vv[N],f[N],ww[N];int main(){ cin >> n >> m; int num =1; for(int i =1;i<=n;i++) {.

2021-03-22 00:39:46 63

原创 最短编辑距离(动态规划)

题目:思路:代码:#include<iostream>using namespace std;int f[1010][1010];int main(){ int n,m; string a,b; cin >> n >> a >> m >>b; for(int i =1;i<=n;i++)f[i][0] =i; for(int j =1;j<=m;j++)f[0][j] = j;

2021-03-21 23:23:33 104

原创 最长公共子串(动态规划)

题目:最长公共子串(动态规划)题目描述:给定两个字符串,输出其最长公共子串的长度。输入:ABACCBAACCAB输出:3解释:最长公共子串是ACC,其长度为3公共子串:字符必须是连续相等公共子序列:字符必须是相等的,可以不联系代码:#include<iostream>using namespace std;const int N = 1010;int f[N][N];string a, b;int main(){ cin >> a >&g

2021-03-21 22:30:43 75

原创 1022. 宠物小精灵之收服

1022. 宠物小精灵之收服宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事。一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物小精灵。小智也想收服其中的一些小精灵。然而,野生的小精灵并不那么容易被收服。对于每一个野生小精灵而言,小智可能需要使用很多个精灵球才能收服它,而在收服过程中,野生小精灵也会对皮卡丘造成一定的伤害(从而减少皮卡丘的体力)。当皮卡丘的体力小于等于0时,小智就必须结束狩猎(因为他需要给皮卡丘疗伤),而使得皮卡丘体力小于等于0的野生小精灵也不会被小智收服。当

2021-03-20 21:58:09 92

原创 727. 菱形------运用曼哈顿距离

727. 菱形输入一个奇数 n,输出一个由 * 构成的 n阶实心菱形。输入格式一个奇数 n输出格式输出一个由 * 构成的 n阶实心菱形。数据范围1≤n≤99输入样例:5输出样例: * *** ***** *** * 思路:运用到曼哈顿距离,开始的点取中心点,abs(x2-x1)+abs(y2-y1) >n/2则打印空格,否则打印*代码:#include<iostream>using namespace std;#include&lt

2021-03-18 20:24:42 151

原创 前缀和

代码:#include <iostream>using namespace std;const int N = 100010;int n,m;int a[N],s[N];int main(){ scanf("%d %d",&n,&m); for(int i =1;i<=n;i++)cin >>a[i]; for(int i =1;i<=n;i++)s[i] = s[i-1] + a[i];//前缀和的初始化 while(m--.

2021-03-16 18:46:20 60

原创 ACWing二分查找笔记

算法基础课3之二分:有单调性一定可以二分,没有单调性也有可能二分第一种: mid = (l+r+1)/2,判断中间值是不是满足性质if(check(mid))如果为真 [mid,r]; l = mid;如果为假 [l,mid-1]; r=mid-1;第二种:mid = (l+r)/2,判断中间值是不是满足性质if(check(mid))如果为真 [l,mid]; r = mid;如果为假 [mid+1,r]; l=mid+1;如何选择用哪一种?先写一个check函数

2021-03-15 22:39:16 179

原创 AcWing 788. 逆序对的数量

AcWing 788. 逆序对的数量给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样例:5代码:#include<iostream

2021-03-15 22:00:32 87

原创 归并排序记录

给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5代码:#include<iostream>using namespace std;const int N

2021-03-15 21:06:12 62

原创 快速排序

标准代码记录一下给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5代码:#include<iostream>using namespace std;#i

2021-03-15 20:21:02 59

原创 P1303 A*B Problem 高精度乘法

题目描述求两数的积。输入格式两行,两个整数。输出格式一行一个整数表示乘积。输入 #112输出 #12标题#include <iostream>using namespace std;#include<cstdio>#include<string>#include<queue>string x, y;int a[100005], b[100005], c[10005], la, lb, lc;int main() { c

2021-03-14 17:23:23 81

原创 P2142 高精度减法

题目描述高精度减法。输入格式两个整数 a,b(第二个可能比第一个大)。输出格式结果(是负数要输出负号)。输入 #121输出 #11代码:#include <iostream>using namespace std;#include<cstdio>#include<string>#include<queue>string x, y;int a[100005], b[100005], c[10005], la, lb, lc;

2021-03-14 16:54:14 127

原创 P1601 A+B Problem(高精)

题目描述高精度加法,相当于a+b problem,不用考虑负数.输入格式分两行输入。a,b≤10的500次方输出格式输出只有一行,代表a+b的值输入 #111输出 #12输入 #210019099输出 #210100代码:#include<iostream>#include<string.h>using namespace std;string x, y;int a[100000], b[100000], c[100000], la, lb,

2021-03-13 23:40:29 122

原创 P1803 凌乱的yyy / 线段覆盖

代码:#include<iostream>using namespace std;#include<cstdio>#include<algorithm>int n,cnt,cur;struct test{ int start, end;}a[1000010];bool cmp(test x, test y){ return x.end < y.end;}int main() { cin >> n; for (in.

2021-03-13 20:53:57 73

原创 P1208 [USACO1.3]混合牛奶 Mixing Milk

思路:直接贪心算法,先把输入进去的价格从小到大进行排序,然后一一进行购买就可以了代码:#include<iostream>using namespace std;#include<cstdio>#include<algorithm>struct milk { int price; int milk;}a[10000];int main() { int n, m; cin >> m >> n;//m表示需要牛奶的总数.

2021-03-13 18:21:43 177

原创 P1002 [NOIP2002 普及组] 过河卒

思路:首先是一个二维棋盘,最先定义的那么就是一个二维数组,然后可以把不能走到的点设置为-1,每次往下走的时候遇到-1就continue。然后关于马的九个点是走不到的,这样我们就需要手动的将马的九个点设置为-1,但是要考虑一个问题,就是马的点很可能会越界,如何处理这个问题呢,我们在外层加2层即可,这样即使马在最外侧,仍然能够保持不越界。代码:#include<iostream>using namespace std;const int Mn = 10010;long long a.

2021-03-13 11:49:37 371

原创 P1135 奇怪的电梯

代码:#include<iostream>using namespace std;#include<cstring>#include<queue>#include<cstdio>int main(){ int visit[1000] = { 0 }; int n, a, b; cin >>n >> a >> b; int num[1000]; for (int i = 1; i <= n;.

2021-03-10 22:04:48 72

原创 P1162 填涂颜色

题目描述由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6×6的方阵,涂色前和涂色后的方阵如下:0 0 0 0 0 00 0 1 1 1 10 1 1 0 0 11 1 0 0 0 11 0 0 0 0 11 1 1 1 1 10 0 0 0 0 00 0 1 1 1 10 1 1 2 2 11 1 2 2 2 11 2 2 2 2 11 1 1 1 1 1输入格式每组测试数据第一行一个整数n

2021-03-10 19:27:06 105

原创 P1217 [USACO1.5]回文质数 Prime Palindromes

题目描述因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。写一个程序来找出范围 [a,b]5≤a<b≤100,000,000( 一亿)间的所有回文质数。输入格式第 1 行: 二个整数 a 和 b .输出格式输出一个回文质数的列表,一行一个。输入 #15 500输出 #15711101131151181191313353373383思路1:下面是第一种判断方法,分别写出判断回文数和质数的函数,然后a循环到b,

2021-03-10 16:36:14 545 1

空空如也

空空如也

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

TA关注的人

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