
算法解题代码
记录自己做完题的代码
ai_moe
寄言燕雀莫相啅,自有云霄万里高。
展开
-
Codeforces Round #799 (Div. 4)
codeforce原创 2022-06-15 22:22:39 · 291 阅读 · 0 评论 -
leetcode第 295 场周赛
文章目录前言6078. 重排字符形成目标字符串题目详情解题代码6079. 价格减免题目描述解题代码6080. 使数组按非递减顺序排列题目详情6081. 到达角落需要移除障碍物的最小数目题目详情解题代码前言这一次卡在了第二题上了w_w6078. 重排字符形成目标字符串题目详情解题代码短板效应class Solution {public: int st[100],cnt[100]; int rearrangeCharacters(string s, string targe原创 2022-05-29 20:20:43 · 1083 阅读 · 0 评论 -
c++ stl的set总结
关于set的些常用操作记录#include <bits/stdc++.h>#define pt2(x,y) cout <<(x)<<"--"<<(y)<<endl;#define pt1(x) cout <<"#"<<(x)<<"#"<<endl;#define hh cout << "\n"#define rep(i,a,n) for(int i = (a); i <=原创 2022-05-29 17:03:53 · 86 阅读 · 0 评论 -
算法之计算贡献
文章目录计算贡献介绍例题题目解析解题代码计算贡献介绍计算贡献是一种数学思维,把要求所有方案数种每一个方案总和的总和 转换成每一个元素i的贡献值乘以总方案数的总和例题题目解析∑w=方案∑i=1n在w方案下i天的快乐值\sum_{w=方案} {\sum_{i=1}^n在w方案下i天的快乐值 \quad}\quadw=方案∑i=1∑n在w方案下i天的快乐值可以转化成∑i=1ni天的贡献值(每一种方案的快乐值总和)∗总方案数\sum_{i=1}^n {i天的贡献值(每一种方案的快乐值总和)} *原创 2022-05-24 22:58:44 · 1158 阅读 · 0 评论 -
图论基本算法打卡
文章目录KruskalPrimbellman-fordDijkstra优先队列优化DijkstraKruskal#include<iostream>#include<algorithm>using namespace std;const int N =1e5+10,M = 2e5+10,INF=0x3f3f3f3f;int n,m;int p[N],dist[N];struct Edge{ int a,b,w; bool operat原创 2022-05-04 21:08:43 · 87 阅读 · 0 评论 -
c++树的重心
文章目录题目详情代码打卡题目详情代码打卡#include<iostream>#include<cstring>using namespace std;const int N =1e5+10;int h[N],e[2*N],ne[2*N],idx;bool st[N];int n,ans=N;void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}int dfs(int u){原创 2022-05-04 12:02:19 · 855 阅读 · 0 评论 -
Codeforces Round #786 (Div. 3)总结
文章目录前言A. Number Transformation题目描述代码打卡B. Dictionary题目描述代码打卡C. Infinite Replacement题目描述代码打卡D. A-B-C Sort问题描述解题代码E - Breaking the Wall问题描述解题代码总结前言记录一下这次遇到的问题以及代码打卡A. Number Tr原创 2022-05-03 13:20:59 · 490 阅读 · 0 评论 -
c++区间合并
题目描述解题代码#include<iostream>#include<algorithm>using namespace std;typedef pair<int,int> PII;const int N=1e5+10;vector<PII> a,b;int n;void merge(){ int st=-2e9,ed=-2e9; for(auto t:a) { //结尾小于下一个段的原创 2022-05-03 12:59:27 · 725 阅读 · 0 评论 -
Educational Codeforces Round 127 (Rated for Div. 2)代码打卡
文章目录A. String BuildingB. Consecutive Points SegmentA. String Building#include<iostream>#include<cstring>#include<algorithm>#include<cstring>using namespace std;const int N =1e5+10;int t;string a; int main(){ cin &g原创 2022-04-23 10:03:02 · 272 阅读 · 0 评论 -
Codeforces Round #784 (Div. 4)代码打卡
文章目录前言A. Division?B. TripleC. Odd/Even IncrementsD - Colorful Stamp前言记录一下第一次参加cf的代码A. Division?#include<iostream> using namespace std; int T; int main(){ cin >> T; while(T--) { int ra; cin >>原创 2022-04-22 09:26:47 · 200 阅读 · 0 评论 -
NOIP2016普及组 回文日期
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;int date1,date2;int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(int data){ int year = data/10000; int month = data%10000/100; int day原创 2022-03-31 00:29:41 · 330 阅读 · 0 评论 -
树状数组-动态求连续区间和
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;const int N =1e5+10;int n,m;int a[N];int st[N],k,x,y;int lowbit(int a){ return a & -a;}void add(int x,int v){ for(int i=x;i<=n;i+=lowbit(i)) st[i]+=v;}int原创 2022-03-30 21:58:48 · 163 阅读 · 0 评论 -
蓝桥杯- 错误票据
文章目录题目详情解题代码题目详情解题代码#include<iostream>#include<algorithm>using namespace std;const int N=1e5+10;int a[N];int main(){ int n; cin >> n; int i=0; while(scanf("%d",&a[i])!=EOF) i++; sort(a,a+i);原创 2022-03-30 18:34:47 · 133 阅读 · 0 评论 -
蓝桥杯-特别数的和
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;int n;bool check(int a){ while(a) { int b=a%10; if(b==2 || b==0 || b==1 || b==9) return true; a/=10; } return false; }int main()原创 2022-03-30 17:56:54 · 85 阅读 · 0 评论 -
蓝桥杯-递增三元组
文章目录题目详情解题代码题目详情解题代码#include<iostream>#include<cstring>using namespace std;const int N =1e5+10;int n;int a[N],b[N],c[N];int sa[N],sc[N],cnt[N],s[N];int main(){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&原创 2022-03-30 17:37:23 · 130 阅读 · 0 评论 -
蓝桥杯-连号区间数
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;int n,res;int a[10010];int main(){ cin >> n; for(int i=0;i<n;i++) cin >> a[i]; for(int i=0;i<n;i++) { int minv=1e9,maxv=-1e9;原创 2022-03-30 16:51:18 · 322 阅读 · 0 评论 -
蓝桥杯-地宫取宝
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;const int N =55,MOD=1000000007;int n,m,k;int f[N][N][13][14],w[N][N];int main(){ cin >> n >> m >> k; for(int i=1;i<=n;i++) for(int j=1;原创 2022-03-30 12:14:22 · 191 阅读 · 0 评论 -
蓝桥杯-K倍区间
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;typedef long long ll;const int N =1e6+10;int n,k;ll res,s[N],cnt[N];int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) { scanf("%d",&am原创 2022-03-29 16:54:01 · 307 阅读 · 0 评论 -
HNOI2003-激光炸弹
文章目录题目详情解题代码题目详情解题代码#include<iostream>#include<algorithm>using namespace std;const int N =5010;int n,m,cnt,r;int s[N][N];int main(){ scanf("%d %d",&cnt,&r); r=min(r,5001); m=n=r; while(cnt --)原创 2022-03-29 11:18:19 · 93 阅读 · 0 评论 -
蓝桥杯-二分-分巧克力
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;const int N = 1e5+10;int n,k;int h[N],w[N];bool check(int mid){ int m=0; for(int i=0;i<n;i++) { m=m+(h[i]/mid)*(w[i]/mid); if(m>=k) return原创 2022-03-28 18:43:01 · 127 阅读 · 0 评论 -
蓝桥杯-四平方和
文章目录题目详情解题代码题目详情解题代码#include<iostream>#include<cmath>#include<algorithm>using namespace std;const int N = 2.5e7+10;struct Sum{ int s,c,d; bool operator< (const Sum &t)const { if(s!=t.s) return原创 2022-03-28 15:36:56 · 78 阅读 · 0 评论 -
二分-机器人跳跃问题
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;const int N =1e5+10;int h[N];int n;bool check(int mid){ for(int i=1;i<=n;i++) { mid=mid*2-h[i]; if (mid >= 1e5) return true; if(mid<0) r原创 2022-03-28 11:42:05 · 124 阅读 · 0 评论 -
蓝桥杯-省赛-翻硬币
文章目录题目详情解题代码题目详情解题代码#include<bits/stdc++.h>using namespace std;char s[100],e[100];void turn(int i){ if(s[i]=='*') s[i]='o'; else s[i]='*';}int main(){ cin >> s >> e; int n=strlen(s); int res=0; for(i原创 2022-03-20 13:56:12 · 212 阅读 · 0 评论 -
acwing-飞行员兄弟
文章目录题目详情解题代码题目详情解题代码#include<iostream>#include<vector>#include<cstring>using namespace std;typedef pair<int,int> PII;char g[10][10],backup[10][10];int get(int i,int j){ return i*4+j;}void turn_one(int x,int y)原创 2022-03-20 13:08:04 · 153 阅读 · 0 评论 -
蓝桥杯-省赛-带分数
文章目录题目详情解题代码题目详情解题代码#include<iostream>#include<cstring>using namespace std;int n;bool st[20],backup[20];int ans;bool check(int a,int c){ long long b = n * (long long) c-a*c; if(!a || !b || !c) return false; memcpy原创 2022-03-20 10:36:49 · 152 阅读 · 0 评论 -
acwing-费解的开关
文章目录题目详情解题代码题目详情解题代码#include<iostream>#include<cstring>using namespace std;const int N = 10;char g[N][N],backup[N][N];int dx[5]={1,0,-1,0,0},dy[5]={0,-1,0,1,0};int n;void turn(int x,int y){ for(int i=0;i<5;i++) {原创 2022-03-19 18:22:55 · 137 阅读 · 0 评论 -
蓝桥杯-算法训练-车的放置
文章目录前言题目详情解题代码前言用dfs枚举每一个方格题目详情解题代码#include<iostream>using namespace std;const int N =10;int n,ans;bool row[N],col[N];void dfs(int x, int y, int s){ if (s > n) return; if (y == n) y = 0, x ++ ; if (x == n) {原创 2022-03-16 11:17:39 · 272 阅读 · 0 评论 -
蓝桥杯-算法训练-粘木棍
文章目录题目详情解题代码题目详情解题代码#include<iostream>using namespace std;int m,n;int a[10];int ans=1e9;void dfs(int u){ if(u==m) { int ma=-1e9,mi=1e9; for(int i=0;i<m;i++) { ma=max(ma,a[i]);原创 2022-03-16 10:11:05 · 193 阅读 · 0 评论 -
试题 算法训练 娜神平衡
文章目录前言一、题目详情二、解题代码前言这道题有一个数据超时了,暂时没找到问题出在哪。一、题目详情二、解题代码#include<iostream>#include<algorithm>#include<vector>#include<cmath>using namespace std;const int N = 1e6;int n,h;int s[N],j[N];vector<int> l,r;int a[N],原创 2022-03-14 10:07:36 · 497 阅读 · 0 评论 -
蓝桥杯-算法训练-数的潜能
文章目录前言题目详情解题代码前言本题用快速幂 与数论中正整数分解使得乘积最大问题。快速幂模板:LL qmi(LL a,LL k,int q) // a和 k记得用long long 不然数据大会超时{ LL res=1%q; while(k) { if(k&1) res=res*a%q; a = (LL)a*a%q; k=k>>1; } return res;}正整数分解使得乘积最大原创 2022-03-13 00:13:50 · 782 阅读 · 2 评论 -
蓝桥杯-算法训练-跳马
文章目录前言题目详情解题代码前言类似八皇后的一道题目,可以用DFS题目详情解题代码#include<iostream>using namespace std;const int N = 10;int a,b,c,d;int x[8]={1,1,2,2,-1,-1,-2,-2};int y[8]={2,-2,1,-1,2,-2,1,-1};bool g[N][N];int ans=-1; void dfs(int aa,int bb,int step){原创 2022-03-11 23:52:40 · 362 阅读 · 0 评论 -
试题 算法训练 礼物
文章目录前言题目详情解题代码前言本题运用二分法与前缀和解决思路:用二分法在k取值范围找到满足条件和不满足条件k的边界二分模板bool check(int x) // 检查x是否满足某种性质{ /* ... */} // 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:int bsearch_1(int l, int r){ while (l < r) { int mid = l + r >> 1;原创 2022-03-11 17:19:38 · 1023 阅读 · 0 评论 -
蓝桥杯 算法训练 无聊的逗
文章目录前言一、题目详情二、解题代码前言这是一道状态压缩的例题状态压缩:用二进制的0和1表示2种状态for(int i=0;i< (1<<n);i++) // 遍历每一种状态 for(int j=0;j<n;j++) if(i&(1<<j)) //1每一次向左移动再&i得到i的每一位1对应的值全集的补集:bu = (1<<n)-1-i;列举所有没有被用的状态:遍历集合的子集:f原创 2022-03-11 13:47:41 · 523 阅读 · 0 评论 -
蓝桥杯-算法训练-数字游戏
文章目录一、题目详情二、解题代码一、题目详情二、解题代码#include<iostream>#include<cstring>using namespace std;const int N=1010;int p[N],a[N];int n,m,sum;bool st[N];bool h;void dfs(int u){ if(n+1==u ) { memcpy(a,p,sizeof p);原创 2022-03-01 23:21:05 · 3099 阅读 · 0 评论 -
蓝桥杯-算法训练-印章
文章目录一、题目详情二、解题代码一、题目详情二、解题代码#include<iostream>#include<cmath>using namespace std;const int N=25;int m,n;double f[N][N];int main(){ scanf("%d%d",&n,&m); double p =1.0/n; for(int i=1;i<=m;i++)原创 2022-03-01 19:38:36 · 149 阅读 · 0 评论 -
蓝桥杯-数字三角形
文章目录前言一、题目题目描述输入描述输出描述输入输出样例二、解答前言记录一下一个很精巧的解法一、题目题目描述上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。输入描述输入的第一行包含一个整数 N ( 1 ≤ N ≤ 100 ),表示三角形的行数。下面的 N 行给原创 2022-02-28 23:57:21 · 276 阅读 · 0 评论 -
c++组合数的输出
文章目录前言一、代码展示前言关键点在于 把前面那个数限制成小于后面那个数即可 就不会再出现输出1 5 3 和1 3 5 这种情况了一、代码展示#include<iostream>using namespace std;const int N=25;int p[N]; //记录int n,r;bool bk[N]; //标记void dfs(int dep,int pre){ if(dep==r+1) { for(int i=1;i<=r;i++)原创 2022-02-25 10:03:57 · 1465 阅读 · 0 评论