自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 机器学习1

2022-10-20 17:32:01 1066 1

原创 面向对象

Cstring Find作用在一个较大的字符串中查找单个字符或者子串(连续)返回值返回要找到字符或者子串的第一个位置。CString s( "abcdef" );int n = s.Find( 'c' ); // 结果 n = 2int f = s.Find( "de" ) ; // 结果 f = 3CString GetLine作用返回字符串中字符计数返回值CString s( "abcdef" );ASSERT( s.GetLength() == 6 );CString

2021-10-08 21:24:23 145

原创 序列的美观度

题目思路&代码#include<cmath>#include<vector>#include<string>#include<cstring>#include<iostream>#include<algorithm>#define endl '\n'#define BUFF ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)using namespace

2021-10-07 19:51:36 121

原创 数字串

题目传送门思路先把所有的可以拆的字母全都拆成两个,判断是否相同;再把所有能合并的字母全都合并,判断是否相同;如果都相同,直接输出-1注意一些特殊的字母,如:j代码#include<cmath>#include<vector>#include<string>#include<cstring>#include<iostream>#include<algorithm>#define endl '\n'#def

2021-10-07 15:28:18 521

转载 数字与字符串之间的转换

使用系统提供的库函数1.字符串传数字(1)、使用stoi()string s("12345");long long a = stoi(s);cout << a << endl;(2)、使用atoi()char str3[10] = "3245345";//数字简单,所以转数字一个参数 long long a = atoi(str3); cout << a << endl;(3)、使用 sscanf() 映射long long c

2021-10-07 15:17:11 527

原创 [NOIP1999]拦截导弹

题目思路就是求最长不上升子序列和最长不上升子序列的最少数量根据dilworth定理我们知道可划分的最少不上升子序列的数目就是其最长下降子序列的长度。代码#include<cmath>#include<vector>#include<string>#include<cstring>#include<iostream>#include<algorithm>#define BUFF ios::sync_with_std

2021-10-03 15:54:10 129

原创 1581 A. CQXYM Count Permutations

题目思路如果一个长度为2n2n2n的数组中存在至少nnn对pi<pi+1p_i<p_{i+1}pi​<pi+1​数,那么他就符合要求。因为全排列是对称的,所以当1 2 3 4符合要求的是后,把他倒过来4 3 2 1肯定不符合条件,因此答案就是2n2n2n的全排列再除222,即!(2n)/2!(2n)/2!(2n)/2注意在除2的时候要使用逆元=代码#include<cmath>#include<vector>#include<string&

2021-10-03 13:49:49 199

原创 D money

题目思路题目要求的是最小的交易次数和最大的利润,所以例如1351 3 5135就只能交易一次,即从1的时候买,5的时候买。首先我们发现,其实无论买卖几次,最大利润都是一样的,因此我们在计算利润的时候就可以直接计算:for(int i=2;i<=n;i++) if (a[i] > a[i - 1]) ans1 += (a[i] - a[i - 1]);说白了就是只要有利润就赚,管他买几次。接下来我们再在得到最大利润的基础上寻找最小买卖次数。我们先设in是买入的标志,那么第一个

2021-10-02 20:04:10 177

原创 J 加法和乘法

题目思路首先需要明确,每一次操作都会减少一张卡片,因此在最后一次操作时还剩两张卡片,这两张卡片有三种情况:全是偶数、全是奇数、一奇一偶。如果最后一次是NiuMeiNiuMeiNiuMei,她需要偶数,有三种方法可以获得:奇数+奇数,偶数+偶数,偶数∗奇数奇数+奇数 ,偶数+偶数 ,偶数*奇数奇数+奇数,偶数+偶数,偶数∗奇数,因此无论剩下什么,牛妹都可以赢。如果最后一次是NiuNiuNiuNiuNiuNiu,他需要奇数,有两种方法可以获得:奇数∗奇数,奇数+偶数奇数*奇数,奇数+偶数奇数∗奇

2021-10-02 14:41:22 309

原创 G 糖果

题目思路并查集放上一篇写的比较好的博客:链接: https://blog.csdn.net/the_ZED/article/details/105126583.注意findfindfind函数要进行路径压缩代码#include<cmath>#include<vector>#include<string>#include<cstring>#include<iostream>#include<algorithm>

2021-10-02 13:25:16 67

原创 D Happy New Year!

题目代码#include<iostream>#include<string>#include<cmath>#include<cstring>#include<algorithm>#include<vector>#define BUFF ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)using namespace std;const int MOD = 2333;

2021-10-02 09:23:09 89

原创 1574 B. Combinatorics Homework

题目题意给出aaa个A,bbb个B,ccc个C,问是否有mmm对相邻位置相等的字母(即第iii个位置上和第i+1i+1i+1个位置上字母相同)思路先找最大值,很简单的就可以找到是a−1+b−1+c−1a-1+b-1+c-1a−1+b−1+c−1,就是把相同的字母放到一起。求最小值时,我们先假设a<b<ca<b<ca<b<c,然后先放C,把A和B放到C中间(就是C_C_C…这种形式),最小值就是c−1−a−bc-1-a-bc−1−a−b代码#include&l

2021-09-29 20:47:29 95

原创 1574 A.Regular Bracket Sequences

题目题意给出一个nnn,构造出nnn个合法的长度为2n2n2n的括号串思路这样构造就行了,具体我也不知道咋说????代码#include<iostream>#include<string>#include<cmath>#include<cstring>#include<algorithm>#include<vector>#define BUFF ios::sync_with_stdio(false),cin.

2021-09-29 18:56:58 96

原创 饥饿的牛

题目解题思路最长上升子序列状态转移方程dp[i] = max(dp[i], dp[j] + 1);代码#include<iostream>#include<string>#include<cmath>#include<cstring>#include<algorithm>#include<vector>#define BUFF ios::sync_with_stdio(false),cin.tie(0),co

2021-09-28 21:46:18 105

原创 「木」迷雾森林

题目解题思路状态转移方程dp[i][j] = max((dp[i + 1][j] + dp[i][j - 1]) % MOD, dp[i][j] % MOD);其他的没啥好说的,记得初始化还有一定要用题目给的快读,要不连样例都过不了代码#include<iostream>#include<string>#include<cmath>#include<cstring>#include<algorithm>#include

2021-09-28 21:27:01 94

原创 1573 B. Swaps

题目题意数组a是111到2n2n2n的所有奇数,数组b是111到2n2n2n的所有偶数,找出使数组a在字典序上小于数组b的最小操作数对于长度n相同的两个数组x和y,我们说x按字典顺序小于y如果在x和y不同的第一个位置,数组x的元素比y中相应的元素小。解题思路用pair记录a数组的每个元素及其初始位置,然后对a从小到大排序,然后枚举a的每一个元素aia_iai​,当aia_iai​作为第一个元素时要进行多少次操作。答案时i+j−2i+j-2i+j−2代码#include<iostre

2021-09-28 20:51:25 171

原创 1573 A.Countdown

题目解题思路每次将一个不为零的数放到最后然后减一,直到这个数变成0。因此将这个数交换一次操作数加一,然后把n减到零操作数加n。代码#include<iostream>#include<string>#include<cmath>#include<cstring>#include<algorithm>#include<vector>#define BUFF ios::sync_with_stdio(false),c

2021-09-28 19:03:05 74

原创 滑雪

题目解题思路这个题可以用dp,也可以用记忆化搜索,在这里我用的是记忆化搜索。基本就是枚举所有点,然后再用搜索每个点最远可以到达多远的地方,搜索到达的最远距离的时候有点像dfs,就是加上了如果这个点已经搜过了,就直接返回这个点的值:if (dis[x][y] > 1) return dis[x][y];如果没搜过,就基本上和dfs一样了代码#include<iostream>#include<string>#include<cmath>#in

2021-09-26 21:43:32 57

原创 1569 B.Chess Tournament

题目解题思路如果玩家的希望为类型1,那么就令他与其他棋手的比赛全为平局如果棋手的希望为类型2,这时候需要先考虑有几个希望为类型2的棋手,如果只有1个或者2个,那不可能满足条件(可以自己写写)。当个数大于 2的时候,我们可以让第iii个棋手战胜第i+1i+1i+1个棋手,最后一个棋手战胜第一个棋手(注意,这里说的棋手都是类型2的)。让所有人都是平局。代码#include<iostream>#include<string>#include<cmath>#i

2021-09-26 20:57:06 115

原创 1569 A.Balanced Substring

题目基本题意给出一个只含a和b的字符串S,输出其中a的个数和b的个数相等的字串的左边界和右边界。解题思路使用na和nb两个数组将第iii个字符之前有多少个a或b存起来 for (int i = 1; i <= n; i++) { if (s[i] == 'a') aa++; else bb++; na[i] = aa; nb[i] = bb; }然后两个for循环,查找出第一个符合条件的区间,输出 for (int i = 1; i <= n; i++) {

2021-09-26 19:17:08 99

原创 花店橱窗

题目解题思路状态转移方程:dp[i][j] = max(dp[i - 1][k] + mp[i][j], dp[i][j]);注意,本题需要回溯代码#include<iostream>#include<string>#include<cmath>#include<algorithm>#include<vector>#define BUFF ios::sync_with_stdio(false),cin.tie(0),co

2021-09-24 21:48:58 82

原创 C. Carrying Conundrum

题目题意(原题链接+翻译软件)大礼包[https://codeforces.com/problemset/problem/1567/C]解题思路首先,因为Alice的错误,奇数位的进位会进到前面的奇数位上,偶数位上同理。So,奇数位和偶数位互不影响,我们直接把这两种分开来做: string s; cin >> s; string s1, s2; for (int i = 0; i < s.size(); i++) { if (i % 2 == 0) s1 += s[

2021-09-24 19:36:57 80

原创 B 括号

题目解题思路根据题目,最多有10510^5105个括号,但是最多要输出10910^9109个括号,因此先输出5∗1045*10^45∗104个左括号,每次在最右边加上一个右括号就多了5∗1045*10^45∗104对括号,然后剩下不足5∗1045*10^45∗104对括号就插在左括号中间。代码#include<iostream>#include<string>#include<cmath>#define BUFF ios::sync_with_stdi

2021-09-24 09:24:28 191

原创 F 对答案一时爽

签到题#include<iostream>using namespace std;char NN[109], NM[109];int main() { int cnt = 0; int n; cin >> n; for (int i = 1; i <= n; i++) cin >> NN[i]; for (int i = 1; i <= n; i++) cin >> NM[i]; for (int i = 1; i &l...

2021-09-24 09:08:48 53

原创 D 牛牛与整除分块

解题思路:上图是1到50的打表结果从结果中我们可以看出,从1到N\sqrt{N}N​每一个数都有,而且是从小到大排列,所以:if(N / x <= sqrt(N)) cout << 总数 - N / x + 1 << endl;但是当x>Nx>\sqrt{N}x>N​时,这个时候不一定每个数都存在,但是每个N/xN/xN/x都不一样,此时else cout << x << endl;下面我们还需求出有多少个不同..

2021-09-24 09:04:05 81

原创 cin/cout关闭同步

ios::sync_with_stdio(false);

2021-09-22 20:57:59 890

原创 H 牛牛与棋盘

#include<iostream>#include<string>using namespace std;int main() { int n; cin >> n; string s1, s2; for (int i = 0; i < n; i++) { s1 += (i % 2 == 0 ? '0' : '1'); s2 += (i % 2 == 1 ? '0' : '1'); } for (int i = 0; i < n /.

2021-09-22 20:40:25 99

原创 三目运算符

#include<iostream>using namespace std;int main() { int a, b; cin >> a >> b; int maxn1, maxn2; //if else语句 if (a > b) maxn1 = a; else maxn1 = b; //?:三目运算符 maxn2 = a > b ? a : b; cout << "maxn1 = " << maxn1

2021-09-22 20:26:11 42

原创 stoi函数

作用:将n进制的字符串转化为十进制的整数头文件#include <string>用法stoi(字符串, 起始位置, n进制) //将n进制字符串转化为十进制整数//将一串二进制字符串从第0位开始转化为十进制数string str = 0101010101;stoi(str, 0, 2);//十进制数可以直接转化string s = 12345;stoi(s);...

2021-09-22 20:19:42 1955 2

原创 NC16650 采药

2021-04-26 21:19:59 59

原创 实验五BF算法

#include<iostream>#include<string>using namespace std;string s,s1,s2,t;int lens,lent;int BF(string a,string b,int pos){ int i=pos,j=0; while(i<lens&&j<lent) { if(a[i]==b[j]) i++,j++; else {i=i-j

2021-04-20 09:51:53 1444

原创 实验三

实验三:求两个集合(用单链表表示)的并、交和差运算实验要求:在实验二的基础上,使用单链表表示集合,编写三个算法(求交算法、求并算法、集合求差),并输出最终的结果。例如:集合A为(3、4、1、6),集合B为(2、3、6、7)交集为:(3、6)并集为:(1、2、3、4、6、7)差集为:(1、4)(注意:差集C=A-B,即属于A但不属于B的元素的集合)#include<iostream>#include<cstdio>using namespace std;typede

2021-04-06 09:36:45 152

原创 NC14291 Cut

要用 long long ,一开始WA了一发#include<iostream>#include<algorithm>using namespace std;const int maxn = 1e5 + 5;int a[maxn], b[maxn];int main() { int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; sort(a + 1, a + 1..

2021-03-31 17:55:11 41

原创 NC15136 迷宫

一开始把题意理解错了,结果样例都没过总而言之,这道题要分情况讨论1.直接从S走到E2.先从S走到K,再从K走到E#include<iostream>#include<queue>#include<cstring>using namespace std;const int maxn = 505;bool key;int dis[maxn][maxn];char map[maxn][maxn];int dir[4][2] = { {1,0},{...

2021-03-30 21:52:21 101

原创 NC15291幸运数字Ⅱ

dfs打表,再用二分#include<iostream>#include<algorithm>using namespace std;typedef long long ll;ll a[10000009];ll cnt = 0;void dfs(ll x) { if (x > 1000000000) return; a[cnt++] = x; dfs(x * 10 + 7); dfs(x * 10 + 4);}int main() { ll..

2021-03-30 18:52:22 65

原创 数据结构实验二:单链表

上课没听,现学现卖????实验二:实现单链表各种基本运算的算法内容:编写程序实现单链表各种基本运算,并编写main方法测试程序可行性。主要完成以下功能:1、 初始化单链表;2、 一次采用尾插法插入a、b、c、d、e元素;3、 输出单链表;4、 输出单链表长度;5、 判断单链表是否为空;6、 输出单链表的第3个元素;7、 输出元素d的位置;8、 在第4个元素位置上插入f元素;9、 输出插入后的单链表;10、 删除单链表中的第2个元素;11、 输出删除后的单链表;12、 (选做)单

2021-03-30 09:54:33 818

原创 POJ0321棋盘问题

这是一道dfs的题,下面是两个版本#include<iostream>#include<cstring>using namespace std;char map[10][10];int vis[10];int n, k, ans;void dfs(int dep, int cnt) { if (cnt == k) { ans++; return; } if (dep > n) return; for (int i = 1; i <= n; i+..

2021-03-29 19:49:03 52

原创 NC53680「金」点石成金

这是一道dfs的题,第一眼看到还以为是一道贪心比赛时的提示:初始魔法值和初始财富值都为0注意这道题的数据范围,有两点需要注意:1.n比较小,可以使用dfs直接搜2.a,b,c,d的值较大,所以要开long long对于每件物品 ,我们直接暴搜,枚举他要不要把这块石头变成金子#include<iostream>#include<cmath>using namespace std;const int maxn = 1e2;typedef long long ll;..

2021-03-28 16:15:54 87

原创 NC14698 模拟战役

一开始看了半天也没看明白是要干啥,后来才发现就是求齐齐和司机的阵地中有多少块连通块和每个连通块中有几个大炮,用vector来储存每个连通块中有多少大炮,v,size()就是有多少连通块PS:写代码的时候不小心把qq和sj弄混了,WA了十几发#include<vector>#include<iostream>#include<algorithm>using namespace std;const int maxn = 109;int dir[8][2]...

2021-03-28 15:19:06 77

原创 NC14572走出迷宫

这应该是一道入门级的题目了,用bfs和dfs都行先写一下bfs一开始本来想省点事,不写结构体了,坐标(i,j)直接用tmp=i*n+j代替,然后x=tmp/n,y=tmp%n,结果忘了j可能会大于等于n,debug一晚上#include<iostream>#include<queue>#include<cstring>using namespace std;const int maxn = 5e2 + 2;char map[maxn][maxn];..

2021-03-26 19:03:39 92

空空如也

空空如也

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

TA关注的人

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