200天1000题 (DAY 4) 目前总题数: 17 目前CF分数: 1325 T1 (CF . Edu 121) B - Minor Reduction /* 给你一个数字n 你可以进行一次操作: 将这个数字n相邻的两个数位相加并且放回原来的字符串 例如:10057 对 1 和 0 相加 得到 1057 例如: 998 对 9和8相加 得到 917 问,你必须操作一
https://www.acwing.com/problem/content/1075/ 输出树的中心(该点到树中其他结点的最远距离最近)。 时间复杂度 \(O(n)\)。 #include <bits/stdc++.h> using namespace std; #define LL long long int main(){ ios::sync_with_stdio(false);cin.tie(0); int n; cin >> n; vecto
base_sm4.h #pragma once #include <vector> #include <iostream> /*32位以内的循环左移*/ #define SM4_Rotl32(buf,n) (((buf)<<(n))|((buf)>>(32-(n)))) class base_sm4 { public: base_sm4() {}; /* * 函数SM4_SelfCheck是SM4自检函数,它用标准数据作为输入,
base_sm4类参考: 实现SM4算法(16字节版) sm4.h #pragma once #include <algorithm> #include <iostream> #include "D:\C++\实现SM4算法(16字节版)\base_sm4.h" constexpr bool SM4_ENCRYPT = 1; //进行加密运算 constexpr bool SM4_DECRYPT = 0;
一百五十天一千题 (DAY 1) 目前总题数: 0 目前CF分数: 1325 T1: (ABC 268)C - Chinese Restaurant // 题解 const int N = 1e6 + 10; /* 模拟即可 但是纯暴力是N^2的 会TLE 考虑到要把 A[I] 移动到 p=I-1 需要操作 a[i] - p % N 或者 (a[i]-p+1)%N 或者 (a[i]-p-1)%N; 用一个东西储
1.最长回文子串 class Solution { public: string isPalindrome(string& s, int left, int right) { while (left >= 0 && right <= s.length() - 1 && s[left] == s[right]) { left --; right ++; }
vector的原理特点 vector是一个线性顺序结构,相当于数组,但是大小可以不预先指定,并且自动扩展。所以完全可以将vector看作动态数组。 在创建一个vector后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector默认指定,这个大小就是capacity(
链接:https://ac.nowcoder.com/acm/problem/16638来源:牛客网 题目描述 White Cloud has a rectangle carpet of n∗mn*mn∗m. Grid(i,j)Grid (i,j)Grid(i,j) has a color colorA[i][j]colorA[i][j]colorA[i][j] and a cost costA[i][j]costA[i][j]costA[
目录为人熟知的pair类型再谈STL迭代器的使用常用的STL容器顺序容器vector(向量)构造方式拥有的常用的成员函数(java人称方法)string构造方式成员函数dequelist关联容器set/multiset优点成员函数集合的交集,并集,差集map/multimapmap/multimap的区别主要的成员函数适配器容器概述stackq
给定一个可包含重复数字的序列 nums ,按序列内字典升序返回所有不重复的全排列。 其中序列内字典升序指的是, 序列内从左到右的非降序排列,例如 nums=[1,2,3], 则因为[1,2,3] < [1,3,2], [3,1,2] < [3,2,1], [1,2,3]要先于[1,3,2]输出,[3,1,2]要先于[3,2,1]输出 输入例子1: [3,3,4]
STL学习笔记 参考文档: https://cplusplus.com/reference/ https://zh.cppreference.com/w/首页 https://docs.microsoft.com/en-us/cpp/standard-library/cpp-standard-library-reference?view=msvc-170 https://github.com/huihut/interview 总体总结 容器分类 容器复合
使用 const_iterator 类型时,我们可以得到一个迭代器,它自身的值可以 改变,但不能用来改变其所指向的元素的值。可以对迭代器进行自增以及使用解 引用操作符来读取值,但不能对该元素赋值。 不要把 const_iterator 对象与 const 的 iterator 对象混淆起来。声明 一个 const 迭代器时,必
\(\textbf{F.}\) 设 \(f(i, x, y)\) 表示考虑前 \(i\) 维, 当前和 \(P\) 的曼哈顿距离为 \(x\), 和 \(Q\) 的曼哈顿距离为 \(y\) 的方案数. 则 \(f(i, x, y) = \sum _ {s = -2000} ^ {2000} f(i - 1, x - |s - p _ i|, y - |s - q _ i|)\). 按照 \(s < \min(p _ i, q _ i)\), \(s
面试算法题 dfs相关 全排列 #include<bits/stdc++.h> using namespace std; const int N = 10; //用一个path数组来存储每次到底层的路径 int path[N]; //用一个布尔数组来存储每次已经遍历的点,默认是false bool st[N]; int n; //u表示当前的层数 void dfs(int u) {
\(\textbf{G.}\) 设 \(f(l,r),g(l,r)\) 分别表示区间 \([l,r]\) 对应的树的数量及森林的数量. 则: \(f(l,r)=\sum\limits_{k=l+1}^{r}[k=r\text{ or }p_{k+1}>p_{l+1}]f(l+1,k)*g(k+1,r)\), \(g(l,r)=\sum\limits_{k=l}^{r}[k=r\text{ or }p_{k+1}>p_l]f(l,k)g(k+1,r)\). 解释
mycode: class Solution { public: vector<int> sortedSquares(vector<int>& nums) { int n = 100000; int x = 0; for(int i=0;i<nums.size();i++){ if(abs(nums[i])<n){
快速排序 912. 排序数组 class Solution { public: void quick_sort(vector<int>& q, int l, int r) { if(l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while(i < j) { while(q[++ i]
比赛链接: https://vjudge.net/contest/513012 C - Express Mail Taking 题意: 有 \(n\) 个箱子,分别在 \(a_1, a_2, ..., a_n\) 的位置,钥匙在 \(k\) 的位置,每去打开一个箱子前都要去拿一次钥匙,刚开始在 1 的位置,问最少花几步打开所有箱子后回到 1。 思路: 位置比 \(k\) 远的箱子所花
对于一段数组,当满足以下两个条件时,他就是每一段相同数的首个数字 是数组的第一个元素 s[i] != s[i - 1] 可以以1 1 2 2 2 3 4 5 5 5 6进行模拟 vector<int>::iterator unique(vector<int> &a) { int j = 0; for(int i = 0; i < a.size(); i++) if(!i || a[i] != a[i -
class Solution { public: vector<vector<int>> res; vector<int> path; int num = -101; void dfs(int start, vector<int>& nums) { if (path.size() > 1) { res.push_back(path); }
\(\quad\) 今早头一次睡到了九点,大概昨天在健身房确实训练过度了,胸廓酸软,大腿一直颤抖。 \(\qquad\) 下午去了趟实验室,完成了我的第一个物联网程序虽然很水。慢慢试着用\(VS\quad CODE\)切题,效率一般,命令行与编译指令反而不知不觉间搞懂了……还是很垃圾,一整天只做出五道题,其中两
思路 难度简单1065收藏分享切换为英文接收动态反馈 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例 1: 输入:nums = [4,3,2,7,8,2,3,1] 输出:[5,6]
class Solution { public: vector<vector<int>> res; vector<int> path; int sum; void dfs(int start, vector<int>& candidates, int target) { if (sum > target) return; if (sum == target) {
class Solution { public: vector<vector<int>> res; vector<int> path; int sum = 0; void dfs(int start, vector<int>& candidates, int target) { if (sum > target) return; if (sum == target) {
Given an m x n integers matrix, return the length of the longest increasing path in matrix. From each cell, you can either move in four directions: left, right, up, or down. You may not move diagonally or move outside the boundary (i.e., wrap-around is no