![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
白速龙王的回眸
一命二运三风水
四积功德五读书
六名七相八敬神
九交贵人十养生
展开
-
【20220327垃圾比赛】一道二分 + 贪心
分析二分找eps每个数都有一个范围,从a1开始,每个选最小的minn = max(minn + 1, low) 其中low high是ai可选的上下界就是贪心选最小的 + 二分即可ac code#include<bits/stdc++.h>using namespace std;bool check(vector<int> v, int eps) { int minn = -1; int i = 0; int n = v.size(); .原创 2022-03-27 11:38:52 · 128 阅读 · 0 评论 -
cpp快排实现
//// Created by 009 on 2022/3/6.//#include<bits/stdc++.h>using namespace std;void quickSort(vector<int> &nums, int left, int right) { // 这样不用排了 if(left >= right) return; int i = left, j = right; // pivot 默认第一个原创 2022-03-06 22:30:38 · 436 阅读 · 0 评论 -
cpp:stl总结
前言:总结了一下vector set map stack 和queuesrc:#include<bits/stdc++.h>using namespace std;struct node { // set operator int x, y; bool operator < (const node &other) const { if(x == other.x) return y < other.y; els原创 2022-02-20 14:05:32 · 305 阅读 · 0 评论 -
sscanf & sprintf测试 是否符合k位小数的string
int main(){ char temp1[50], temp2[50]; for(int i = 0; i < 5; i++) { cin >> temp1; double d; //如何判断已知输入是否在n位小数以内的合法double sscanf(temp1, "%lf", &d); sprintf(temp2, "%.3lf", double(d));原创 2021-08-20 17:14:26 · 184 阅读 · 0 评论 -
矩阵计算器——大一c++大作业回顾
背景当时大一刚学c++大作业选了一个矩阵计算器,其中挺多bug的,没有异常处理,但主要的矩阵计算功能还是有的,放上来纪念一下8source code:// maxtric.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include <windows.h>#include<iomanip>using namespace std;struct Max{ int m;//行原创 2021-08-17 15:41:57 · 999 阅读 · 2 评论 -
牛客_随机过程_动态规划
前言这是一道随机游走的问题,应归属随机过程。这道题求期望,无非考虑左右游走两种情况,巧妙的是,递归等式的右端会重复出现左端项。#include<bits/stdc++.h>using namespace std;double p[100100], dp[100100];int main(){ int n; cin >> n; for(int i = 0; i < n; i++) cin >> p[i]; dp原创 2021-06-11 16:21:22 · 260 阅读 · 2 评论 -
0606算法竞赛_变相dijkstra
题目:题目分析:设d[i][j]为i去到j所需要的最少改动,我们可以将最少改动看成距离,因此我们就可以得到一个距离矩阵,从而通过dijkstra算法求出最短距离#include <algorithm>using namespace std;const int N = 300 + 5;int a[N][N];int d[N][N];int main() { int n; cin >> n; memset(d, 63, sizeof d);原创 2021-06-09 19:38:30 · 113 阅读 · 0 评论 -
0606算法竞赛_数学思想
题目:题目分析:假设共有n位,先考虑可重复,对于每一个数字x,它对总和做出的贡献为11…111(n个1)* (n - 1) ! * x因此设sum = sigma ai * i那么可重复的总和即为11…111(n个1)* (n - 1) ! * sum那么对不可重复而言,我们只需除以每一个ai的排列之积即可代码如下:#include <stdio.h>#include <string.h>#include <iostream>#include <原创 2021-06-09 17:41:51 · 95 阅读 · 0 评论 -
0606算法比赛_阅读理解
题目:题目概述:打分&询问,询问中对x号电影打分的人全部不作数,再算总评分。初始想法:简单模拟,存储每个人打分的区间和总分;若x再其区间内,其总分将不计入总评。但是,我理解错题目了,我理解成给x打分的人的其他评分均不作数,实际上是x电影的所有评分不作数,我的解法:#include<bits/stdc++.h>using namespace std;int main(){ int n, m; cin >> n >> m;原创 2021-06-09 16:31:29 · 61 阅读 · 0 评论 -
0606算法比赛_字符串处理_抓住问题的关键
题目:例如给一段10位的0001111000那么去掉111后得到最长的序列即为7初始想法:判断连续的序列,然后遍历删除所有连续的序列,并得到去掉连续序列后的新序列。然后遍历新序列,找到长度最长的连续序列。想想看,太复杂了!问题的关键:去掉中间连续的段后,前后连续段之和。那么我们应该关心的整体是连续的大段,而不是每一个小连续体。因此如0001111000我们可以分为三个段,这三个段的价值分别位3、4、3;最后只用求max(sum[i] + sum[i-2])即可#include<bits原创 2021-06-09 16:04:08 · 121 阅读 · 0 评论 -
栈和堆的区别
申请方式:栈是系统自动分配,堆是程序员主动申请。申请后系统响应:分配栈空间,如果剩余空间大于申请空间则分配成功,否则分配失败栈溢出;申请堆空间,堆在内存中呈现的方式类似于链表(记录空闲地址空间的链表),在链表上寻找第一个大于申请空间的节点分配给程序,将该节点从链表中删除,大多数系统中该块空间的首地址存放的是本次分配空间的大小,便于释放,将该块空间上的剩余空间再次连接在空闲链表上。存放地址:栈在内存中是连续的一块空间(向低地址扩展)最大容量是系统预定好的,堆在内存中的空间(向高地址扩展)是不连续的。原创 2021-03-18 08:52:41 · 175 阅读 · 1 评论 -
C++标准模板库(STL)介绍1
前言为了避免重复造车轮,C++中为使用者提供了标准模板库(STL),不需要费力地去实现它们地细节而直接调用函数来实现很多功能,十分方便。vector的常见用法详解vector,即变长数组。在考试中,有时会碰到普通数组超内存的情况,这时候使用vector会便捷许多。另外,vector还经常用邻接表来存储图。vector的定义vector<typename> name;vector<int> vi[100];//vector数组的定义,vi[i]都是一个vector容器v原创 2021-03-17 13:23:50 · 83 阅读 · 0 评论