acm
文章平均质量分 60
无
csdn_ggboy
这个作者很勤快,但是什么都没有留下
展开
-
周测题目解析2
文章目录A-POJ - 1661(dp)B - 刷子的故事C - Lego BuildingD - 自动刷题机E - 数列分段 IIA-POJ - 1661(dp)题意场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。J勇士在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当勇士落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当勇士跑到平台的边缘时,开始继续下落。勇士每次下落的高度不能超过MAX米,不然就会摔死,游戏也会结束。原创 2021-07-18 20:47:48 · 127 阅读 · 0 评论 -
c++数据结构和算法
reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数没有返回值string a;vector<int> b;reverse(a.begin(), a.end());reverse(b.begin(), b.end());原创 2022-02-04 11:01:22 · 743 阅读 · 0 评论 -
vscode使用记录
安装下载下载新版的vscode以及MinGW压缩包配置环境将MinGW的bin文件夹加入path环境变量中配置.vscode文件夹中的三个文件c_cpp_properties.json{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ],原创 2021-12-20 10:29:23 · 469 阅读 · 0 评论 -
数论gcd
gcd基本运算gcd(a,b)=gcd(a%b,b)gcd\left( a,b \right) =gcd\left( a\%b,b \right)gcd(a,b)=gcd(a%b,b)裴蜀定理对于给定的正整数a,b,方程 a∗x+b∗y=ca * x+b * y=ca∗x+b∗y=c有解的充要条件为ccc是gcd(a,b)gcd(a,b)gcd(a,b)的整数倍。根据逆元定义aa∗≡1(mod b)a a^{*}\equiv 1(mod\ b)aa∗≡1(mod b),则aa∗−原创 2021-07-18 20:49:58 · 123 阅读 · 0 评论 -
状压dp、数位dp、概率dp
裁玻璃#include<bits/stdc++.h>#define intn long longusing namespace std;int dp[1100][1100],a[1100],s[1100];int getsum(int s){ int res=0; while(s) { if(s&1) res++; s>>=1; } return res;}int judge1(int s1,int sd){ if((s1&s原创 2021-07-18 20:49:23 · 93 阅读 · 0 评论 -
dp时间复杂度优化
P1107 [BJWC2008]雷涛的小猫设f[i][j]f[i][j]f[i][j]为当前爬的树为第iii棵树,在jjj高度得到的柿子,可以得到递推式dp[i][j]=max(dp[i][j−1],dp[k][j−del])dp[i][j]=max(dp[i][j-1],dp[k][j-del])dp[i][j]=max(dp[i][j−1],dp[k][j−del])因此可以写出代码for(int j=1;j<=h;j++) for(int i=1;i<=n;i++){原创 2021-07-18 20:48:54 · 496 阅读 · 0 评论 -
算法打印2021-11-14
头文件#include<bits/stdc++.h>#define intn long long#define ls(k) (k)<<1#define inf 2147483647#define re register#define rs(k) (k)<<1|1#define _0for(i, a) for(int i = 0; i < (a); ++i)#define _1for(i, a) for(int i = 1; i <=(a); +原创 2020-09-20 11:58:04 · 321 阅读 · 1 评论 -
Codeforces Round #617 (Div. 3)
C. Yet Another Walking Robot题意给一个字符串,每种字符都代表一个坐标变换,让求删除一个最短的子串(不为空)使得删除这个子串后最终坐标点位置不变,找到了输出子串的起始位置和结束位置,若找不出这样一个子串,那么输出-1,字符串下标从1~n。分析用到了差分的思想,如果,截掉l∽rl\backsim rl∽r,这部分的话,要求x[l−1]=x[r]x[l-1]=x[r]x[l−1]=x[r]、y[l−1]=y[r]y[l-1]=y[r]y[l−1]=y[r]。代码map&l原创 2020-08-31 21:39:23 · 115 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2)
A. Display The Number按照贪心的原则,只有 1 和 7 是可选择的B. Infinite Prefixes题意重复字符串s,使0的个数减去1的个数等于x,问几种情况。分析因为有周期,所以考虑用取余的方法,记录一个周期每个位置的d[i]=cnt0−cnt1d[i]=cnt0-cnt1d[i]=cnt0−cnt1,并记录一个周期的T=cnt0−cnt1T=cnt0-cnt1T=cnt0−cnt1。遍历一个周期字符串后,发现有(x−d)(x-d)%T=0(x−d)时ansansa原创 2020-08-30 20:22:57 · 91 阅读 · 0 评论 -
求解lca问题
倍增法一篇博客最常用,也是最简单的算法,实质就是直接对暴力使用倍增优化将复杂度降低达到需求。depth[]depth[]depth[]为每个节点的深度,fa[i][j]fa[i][j]fa[i][j],i节点的2j2^j2j的父亲。lg[i]=log2i+1lg[i]=log_2{i}+1lg[i]=log2i+1const int maxn=5000001;int depth[maxn],fa[maxn][22],lg[maxn];vector<int >g[maxn];voi原创 2021-07-18 20:48:04 · 96 阅读 · 0 评论 -
周测题目解析
文章目录C - hollowknightD - 格林团长的烦恼E - ksm走迷宫F - 果果玩数独 (经典dfs)G - 探月与魔王H - 魔王的宝藏J - 纯粹容器C - hollowknight题意在空洞骑士中,小骑士封印了最终boss辐光。圣巢又一次迎来了和平。但是经历了辐光的感染后,圣巢的很多设施都报废掉了。小姐姐大黄蜂作为圣巢之子,担负着重建圣巢的使命。其中一个任务,就是修复一些连接各个村庄的坍塌的双向鹿角虫通道。小姐姐希望用最少的人力(即修复最短的通道距离),使圣巢的各个村庄之间再次互相原创 2020-06-23 23:29:02 · 481 阅读 · 0 评论 -
图论学习
文章目录dfs和bfs(这好像属于搜索)最短路拓扑排序树以及树的应用并查集种类并查集带权并查集缩点与割点dfs和bfs(这好像属于搜索)bfs是浪费空间节省时间,dfs是浪费时间节省空间。dfs模板// 数独 sudoku #include <iostream>using namespace std;int P[9][9];bool flag = false;// 处理输入 void input(){ char t; cout << "输入棋盘,空用原创 2020-06-22 15:13:24 · 287 阅读 · 0 评论 -
数论例题
233333原创 2020-06-20 00:10:59 · 272 阅读 · 0 评论 -
滑动窗口,dp, 前缀和
滑动窗口leetcode双周赛T3 5423 找两个和为目标值且不重叠的子数组 DP, 前缀和int minSumOfLengths(vector<int>& arr, int target) { int n = arr.size(); map<int,int>mp; const int maxn = 0x3f3f3f3f; vector<int> dp(n+1,maxn);原创 2020-06-14 21:12:30 · 378 阅读 · 0 评论 -
快速幂、逆元、阶乘预处理
快速幂,b是一个二进制数,i位代表着ai a^ {i}aiinf是一个要用于取余的质数int qpow(int a,int b){ int ans=1,base=a; while(b>0) { if(b&1) { ans=ans*base; } base=base*base; b>>=1; } return ans;}阶乘预处理void init(){ int i; fac[0]=1; inv[0]=1;原创 2021-07-18 20:47:30 · 233 阅读 · 0 评论 -
状压dp学习
文章目录例题[CF1042B Vitamins](https://www.luogu.com.cn/problem/CF1042B)思路代码[P2704 炮兵阵地](https://www.luogu.com.cn/problem/P2704)思路代码[1038: 裁玻璃](http://acm.xidian.edu.cn/problem.php?id=1038)思路代码状压DP是一种非常暴力的做法,枚举所有可能的状态,找到要求的最佳状态,与一般dp不同,前一项与后一项有一些复杂的状态关系。dp的参数:原创 2020-05-09 23:57:35 · 422 阅读 · 0 评论 -
动态规划
文章目录分类背包问题1、01背包2.完全背包动态规划是把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,解决这类过程优化问题的方法。分类解决动态思路规划问题有两种思路:一种是得到一个阶段的答案后推出所有与之直接相关的阶段的答案、另一种时由上一个阶段不断得到下一个阶段的答案。背包问题背包问题是最基础的动态规划问题,分为01背包、完全背包、多重背包等。1、01背包1....原创 2020-04-13 10:53:51 · 343 阅读 · 0 评论 -
高精度算法
有时候处理非常大的数字运算时会超出2632^{63}263,怎么办呢?这个时候就需要高精度算法,用字符串模拟整数运算。1 高精度加法string add(string str1,string str2){ string str; int len1=str1.length(); int len2=str2.length();//得到长度 if(len1<len2)//短的补0...转载 2020-02-16 11:29:35 · 1347 阅读 · 2 评论 -
差分和前缀和
差分就是将数列中的每一项分别与前一项数做差,例如:一个序列1 2 5 4 7 3,差分后得到1 1 3 -1 3 -4 -3这里注意得到的差分序列第一个数和原来的第一个数一样(相当于第一个数减0)差分序列最后比原序列多一个数(相当于0减最后一个数)性质:1、差分序列求前缀和可得原序列2、将原序列区间[L,R]中的元素全部+1,可以转化操作为差分序列L处+1,R+1处-13、按照性质2...原创 2020-02-16 10:22:24 · 309 阅读 · 0 评论