- 博客(39)
- 收藏
- 关注
原创 第7章 函数——C++的编程模块
1.C++不可以直接返回数组 但是可以间接返回2.第一条返回语句结束3.函数返回是复制到指定的CPU寄存器或内存单元 4.不提供变量名我怎么使用这个变量呢???5.参数类型不对应的处理方法6.创建新的变量 不影响原先的值7.cin 跳过空格和换行符8.数组名代表第一个元素的地址9.只有在函数定义时 含义相同10.两个恒等式11.优点:节省复制数组需要的时间和内存 缺点:增加了破坏数据的风险12.一个是数组的长度 一个是指针变量的长度13.要这样使用
2023-06-21 13:11:24
136
原创 第5章 循环和关系表达式 第6章 分支语句和逻辑运算符
1.cin 忽略空格和换行符 只有按下回车符 字符序列才会被发送给程序2.cin.get()可以读入空格 cin.getline()也可以读入空格 只是对于换行符的处理不一样3.这里是只需要修改函数定义时的参数声明就可以 在使用时可以直接用名字4.同一个函数有多种使用方法5.文件尾EOF6.再次调用也不管用???7.可以的8.检查字符的函数9.成立为第一个 不成立为第二个10.cin的一些读取策略 我觉得这个有用11.两者的对比 cout ofstream 多了
2023-06-20 23:48:25
129
原创 第四章 复合类型
1.这里数组可以越界2.sizeof 可以求数组的长度(单位:字节) 也可以求单个的长度3.剩余的将会被初始化为04.会自动计算元素个数5.注意这个转换的6.遇到空字符停止7.字符用单引号 空字符自动加8.注意字符串双引号的问题9.sizeof strlen 区别 strlen不计算空字符10.cin遇到空格就结束11.cin可能会出现这种错误 无法判断是否超出范围12.面向行输入 getline() get() get()将换行符保留在输入序列中13.c
2023-06-19 00:01:50
131
原创 影分身 已知字符串str。字符串str包含字符’x’,’y’。 如果相邻的两个字符不同,消除两个字符,优先从左边进行消除。 xyyx - > yx ->
已知字符串str。字符串str包含字符’x’,’y’。 如果相邻的两个字符不同,消除两个字符,优先从左边进行消除。 xyyx - > yx ->
2023-03-23 15:11:40
251
原创 Codeforces Round 859 (Div. 4)
当时是用前缀和处理了一下 但是用前缀和会漏掉 前缀和只能表示连续序列相加 这个条件限制很大 本题的肯定不是都是连续的 所以做法不对。第一次做交互题目 当时代码其实写对了 只是有一些输入的地方漏掉了 离谱。n都漏掉了 r-l+1也漏掉了。服了 感觉被降维打击了。和二进制优化分组背包很像。这题官方题解用的动态规划。
2023-03-21 16:54:54
202
原创 第十八届西南科技大学ACM程序设计竞赛
1题目链接马拉车算法+差分#include<bits/stdc++.h>using namespace std;const int N=2e6+10;int a[N],b[N];int p[N],c[N],n;void insert(int x,int y,int z){ c[x]+=z; c[y+1]-=z;}int manacher(int l){ int r=0,mid=0,ans=0; for(int i=1;i<=l
2022-05-16 15:49:31
309
原创 求逆序对数量
求逆序对#include<bits/stdc++.h>using namespace std;const int N=1e5+10;typedef long long ll;int a[N];int n,t;ll merge_sort(int l,int r){ if(l>=r) return 0; int mid=r+l>>1; ll k=merge_sort(l,mid)+merge_sort(mid+1,r);
2022-05-11 22:12:49
122
原创 5.7个人赛
题目链接题意:自己读题解决方法:构造当s/n>1时 取k=1则无法构造出来当s/n=1时,1~s中的每一个数都可以被构造出来,所以此时必输证明:但是个人赛时结论猜出来的,有点模糊#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+10;ll a[N],b[N];int n,s;int main(){ scanf("%d%d",&n,&a
2022-05-07 20:29:15
345
原创 cf我要变绿
B. Getting ZeroEducational Codeforces Round 126 (Rated for Div. 2) B. Getting Zero#include<bits/stdc++.h>using namespace std;const int N=4e5+10,M=32768;int dis[N];void dfs(int k){ //if(dis[k]==15) return; if(k<1) return; int
2022-04-13 21:38:54
140
原创 resre
#include <bits/stdc++.h>using namespace std;int ans;void proc(vector<int>& a) { if (a.empty()) return; int n = a.size(); int last = 0; /*for (int i = 0; i < n; ++i) { if (a[i] == a[0]) last = i;
2022-04-09 20:50:03
269
原创 2022年上学期程序设计实践练习-1(数学,枚举)
B.求最小公倍数lcm(a,b)=a*b/gcd(a,b)ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}错误代码:if(res%ans==0||ans%res==0) ans=max(ans,res);else ans=res*ans;lcm(6,28)
2022-03-24 00:00:49
854
原创 L2-2 病毒溯源 (25 分)
输出路径题目链接记录每个点的前一个点记录最长路径的最后一个点便可以从后往前得到最长路径#include<iostream>#include<cstdio>#include<algorithm>#include<cstring> #include<queue>using namespace std;const int N=1e4+10; //int a[N],h[N],cnt[N];int e[N],ne[N],idx,
2022-03-22 20:51:13
602
原创 make_pair vector<pair<int,pair<int,int>>> p;
Codeforces Round #486 (Div. 3) C. Equal Sums#include <bits/stdc++.h>using namespace std;const int N=2e5+10;int a[N],k,n; //int k,n;vector<pair<int,pair<int,int>>> p;int main(){ scanf("%d",&n); for(int i=1;i&l
2022-03-07 11:43:53
255
转载 时间复杂度分析
作者:yxc链接:https://www.acwing.com/blog/content/32/来源:AcWing著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2022-02-15 09:02:15
108
原创 差分 一维差分 差分矩阵
一维差分b[i]=a[i]-a[i-1]b[i]的前缀和为a[i]作用:帮助我们把原序列上的区间操作转化为差分序列上的单点操作,降低求解难度不用管差分序列怎么构造,只考虑如何插入#include<iostream>using namespace std;const int N =100010;int a[N],b[N];int n,m;void chai(int q,int l,int r){ b[q]+=r; b[l+1]-=r;}int main
2022-02-12 10:42:20
335
原创 遇到过的错误
#include<iostream>#include<algorithm>#include <cstring>#include<cstdio>using namespace std;const int N=50100;int s[N][N];int main(){ int n,x,y,d,i=0,j=0,r; scanf("%d%d",&n,&r); while(n--) { ...
2022-02-11 22:48:35
1031
原创 数论 逆元
逆元定义:若整数 b,m 互质,并且b|a,则存在一个整数 x,使得 a/b≡a×x(mod m),则称 x 为 b 的模 m 乘法逆元,记为 b−1(mod m)。最后两步:a≡a mod (m) 推出 bx≡1(mod m) 如果不为1,则矛盾所以最后即解同余方程bx≡1(mod m)求法:m为质数时:快速幂 b的m-2次方m不是质数:利用扩展欧几里得定理求解同余方程bx≡1(mod m) 等价于 bx+my=1逆元作用:不希望做除法 用逆元来替代分母,求逆元的过程中也只用到分母,与分子
2022-02-10 17:51:47
1078
原创 数据结构实际用法
1.mapunordered_map<int, int> primes; while (n -- ) { int x; cin >> x; for (int i = 2; i <= x / i; i ++ ) while (x % i == 0) { x /= i; primes[i] ++ ;
2022-02-09 16:11:02
686
原创 Codeforces Round #767 (Div. 2) D. Peculiar Movie Preferences
//#include<iostream>//#include<cstring>#include<bits/stdc++.h>using namespace std;map<string,int> a,b;//1.map的用法void solve(){ a.clear(),b.clear();//2.清除 int n;string s; bool st=0; scanf("%d",&n); for(
2022-01-25 20:12:23
616
原创 背包问题 01背包 完全背包 多重背包 分组背包
01背包问题描述:给定N个物品,每个只有一件,每个物品都有相应的价值w与体积v,给定体积为M的背包,求背包所能装的最大物品价值。分析:每个物品分为选和不选两种方案,所以一共有2的n次方种方案,方案数量特别多,暴力做法不可取。解决方法:用 f[ i ][ j ] 表示在前i个物品中选择方案,且选择方案总体积不超过j时的最大价值。那么 f[N][M] 就表示在前N个物品中选择,且体积不超过M的最大价值,也即我们要求的最大价值。...
2022-01-22 12:10:32
846
原创 导弹防御系统 dfs 为什么不用回溯
#include <iostream>#include <algorithm>using namespace std;const int N = 55;int n;int h[N];int up[N], down[N];int ans;void dfs(int u, int su, int sd){ if (su + sd >= ans) return; if (u == n) { ans = min(ans,.
2022-01-20 18:35:58
489
原创 Codeforces Round #762 (Div. 3) Problem-D New Year‘s Problem
题意有m个商店和n个朋友,每个商店中都有n个礼物,每个礼物都有一个快乐值,礼物标号为1~n,为朋友挑选的礼物的标号必须与朋友的标号对应(为第x个朋友挑选的礼物必须是某个商店中的第x个礼物)。要求:只能访问n-1个商店,并且礼物的快乐值应该尽可能大。求所有挑选出的礼物快乐值的最小值。分析题目要求n个朋友的礼物只能在n-1个商店中挑选,所以我们必须在某个商店中买不止一个礼物。如果我们找到了买了2个礼物的商店,那么剩下的n-2个礼物可以在m个商店中任意选择(因为无论如何选择,最多不会超过n-2个商店)思路
2022-01-18 14:18:54
238
原创 图的存储与遍历
存储核心代码void add(int a, int b){ e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;}其中idx作用是充当数组的下标,可以理解为一个位置h[a]数组:a代表点,代表图中所有的点.h[a]的值为a这个点指向的位置,与ne[idx]数组的作用类似插入时采用头部插入插入过程:首先插入的是一条边,一条由a指向b的边,点a为图中所有点中的一个,即h[a]中a所代表的一个点.b是我们需要插入的.插入位置为idx,ne[idx] =
2021-08-04 15:19:22
402
2
原创 strlen函数原理
原理为while(*s++!=’\0’) cnt++;首先需要了解一些基础知识:1.数组内的存储形式为对应元素的ASCII码2.\0代表无字符 ,注意无字符并不是数字0也不是空格‘\0’ 单引号即代表了\0的ASCII码,而\0的ASCII码刚好为0{容易混淆的几个:\0的ASCII码:0空格的ASCII码:320的ASCII码:48}也就是说 也就是说strlen函数在遇到\0时就停止计数(即遇到ASCII码为0时),由于存储形式为ASCII码,0的ASCII码为48,所以遇到数字0
2021-08-02 18:08:25
3894
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人