![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ACM-基础算法/STL
文章平均质量分 54
ACM-基础算法/STL
nefu-ljw
这个作者很懒,什么都没留下…
展开
-
CCF-CSP 202112-2 序列查询新解【子区间】
题目链接http://118.190.20.162/view.page?gpid=T137思路有点类似尺取法枚举区间。这题是先固定一个区间,再在这个区间内遍历子区间。遍历f(i)值相同的区间,假设每个区间范围[L, R],再在[L, R]内遍历g(i)值相同的子区间,这样在计算时就能保证子区间的f(i)值全部相同、g(i)值全部相同。比较关键的地方是要找到g(i)及其区间右端点的两个对应关系原创 2022-03-19 11:29:45 · 516 阅读 · 0 评论 -
PAT甲级 1012 The Best Rank
题目链接1012 The Best Rank (25 分)思路结构题排序,但是这题不好拿满分,有个细节巨坑:相同分数的赋给的排名相同,举个例子,88,88,99,70,排名为2,2,1,4。AC代码#include <bits/stdc++.h>using namespace std;const int N=2010,inf=0x3f3f3f3f;typedef long long ll;struct node{ int id,pos; double a,c,原创 2021-07-21 17:45:05 · 214 阅读 · 0 评论 -
2021年度训练联盟热身训练赛第五场 H题 In-place Sorting【贪心构造】
题目链接https://ac.nowcoder.com/acm/contest/13926/H题意给你n个数字,你可以将每个数字中存在的6改成9,也可以9改成6,当然也可以选择不更改。你需要使得最后n个数字的排列是非递减的,若无法构造则输出impossible。思路贪心构造,使每个串在大于等于前一个串的前提下尽可能小。注意字符串之间的大小比较与数字之间大小比较的不同(以字符串形式输入数字)。依次遍历n个串,分情况构造:当前串长度 > 前一个串长度。那直接把当前串的所有9变成6就可以了,原创 2021-04-16 21:20:43 · 250 阅读 · 0 评论 -
AcWing 1247. 后缀表达式(第十届蓝桥杯省赛)
题目链接:AcWing 1247. 后缀表达式题意中文的题面就不说了,自己去看思路后缀表达式有什么不同?其实就是相当于能对原表达式加任意个括号来改变运算顺序。对于加号来说,加不加括号都没用,所以可以特判一下全部是加号的情况。对于减号来说,若给了m个减号,m+1个数,那么表达式中减号的个数经过加括号处理再去掉括号变号后,实际的减号数可为1~m(至少有1个)。为了求表达式运算结果的最大值,考虑处理方式:无论给了多少个减号,我们经过加括号处理,都能把最终的表达式变成只剩下1个减号!为了方便表述原创 2021-04-12 16:38:17 · 378 阅读 · 0 评论 -
PAT (Advanced Level) Practice 1056 Mice and Rice【模拟】
题目传送门:Mice and Rice题意这题意我看了半天都不知道说的啥意思,先整理一下题意。有n个老鼠,知道它们的重量,每次划分为若干组进行比赛,每组最多k个(不足k个则另计一组),给出最开始分组的顺序。每组比赛中只有一个最重的老鼠会晋级到下一轮继续比赛,而这组其他所有老鼠均被淘汰并给予它们一个名次。直到所有老鼠名次被确定时,结束比赛。思路能看懂题就能直接写代码了,用队列来模拟比较方便。原创 2021-03-06 12:59:15 · 192 阅读 · 0 评论 -
Codeforces Round #696 (Div. 2) C. Array Destruction【思维构造/multiset】
C. Array Destruction这题关键是要想到每次操作都应该取当前集合中剩下的最大的那个数,因为如果现在这个操作不取,以后就再也取不了它了。然后由于n只有1000,所以n2枚举最开始的x是可行的,算上set复杂度总共就是O(n2∗logn)O(n^2*logn)O(n2∗logn)。对于可重复数的有序集合操作,用multiset比较方便。注意一下multiset的语法:multiset<int>t;// 比如说要删除集合中的数x// 1 值为x的全部删掉t.erase(原创 2021-01-25 14:41:21 · 251 阅读 · 0 评论 -
PAT (Advanced Level) Practice 1063 Set Similarity【set_intersection / unordered_set / 记忆化】
NEFU 2118 相似的数集 / PAT (Advanced Level) Practice 1063 Set Similarity多次询问两个序列的交集个数/并集个数的值,一定先记忆化处理。对于求交集个数,可以用set中的set_intersection直接求,或者unordered_set手动for循环,或者用数组去重求。将set集合a,b求交集,存于set集合t,函数用法:set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserte原创 2021-01-15 22:49:29 · 212 阅读 · 0 评论 -
算法课设(巨水)和一些吐槽
首先我要吐槽一下,大二下学期的课程才有算法,而且学的都是人家初中生玩剩下的普及组的题,这个课程安排真的是有毛病。先学数据结构和算法,把硬件(数字逻辑、计算机组成原理)和经济学原理、管理学这些没什么用的课程砍掉不香吗?讲道理,大学的计科专业真的是什么都学,什么都不精,包括一些 我认为 没什么用的课(我不喜欢硬件和背书),浪费时间。这么一看,一直在学ACM确实挺好的,现在看这些题觉得特别傻。随便吐槽一下,反正这文章也没几个人能看到。一、回溯法:素数环(UVA524)原创 2020-07-12 21:31:02 · 1137 阅读 · 3 评论 -
算法考试复习 回溯法
(一)n皇后问题洛谷 P1219 [USACO1.5]八皇后 Checker Challenge照着教材上的代码写,最后一个测试点(n=13)不开O2过不了。#include <bits/stdc++.h>using namespace std;const int N=25;int n,x[N];long long sum;void out(int x[]){ for(int i=1;i<=n;i++) i==n?printf("%d\n",x[i]):prin原创 2020-07-10 20:38:27 · 431 阅读 · 0 评论 -
洛谷 U91193 棋盘覆盖【分治】
其实就是算法设计课上的例题,然后我找到OJ上的题测试一下。传送门: 洛谷 U91193 棋盘覆盖细节挺多的,我主要卡的地方就是计数。计数的时候注意要先用一个变量存骨牌编号,因为之后再递归编号就增加了,而实际上返回本层的时候应该填入的是原来的编号。还有就是题面有点问题,矩阵得开到1000*1000,否则RE。总体就是分治的思想,具体实现见代码注释。原创 2020-05-28 17:38:01 · 804 阅读 · 0 评论 -
归并排序、快速排序、逆序对
洛谷 P1177 【模板】快速排序当L=1,R=5时的递归树:(电脑不好画,直接手写了)归并排序代码:#include <bits/stdc++.h>using namespace std;const int N=1e5+10;int n,a[N],b[N];void merge_sort(int l,int r) // 归并排序// 递归过程类似于树的后序遍历,先把左、右子区间均完成排序后,再合并当前区间{ if(l==r)return; // 单个数字,已经有序,原创 2020-05-26 21:55:30 · 340 阅读 · 0 评论 -
HDU 1263 水果 (map精简版)
HDU 1263 水果map嵌套。特判了产地为空、产地不为空但水果为空的情况。#include <bits/stdc++.h>using namespace std;int T,n,w;string place,fruit;map<string,map<string,int> >vis;int main(){ ios::sync_with...原创 2020-04-28 00:32:45 · 315 阅读 · 0 评论 -
高精度计算(大数加法/乘法)
hdu 1002 A + B Problem II高精度计算大数加法,把输入的a1、b1这两个字符数组逆序保存到整型数组a、b中,这样可以在a、b前自动添0。#include <bits/stdc++.h>using namespace std;string a1,b1;int c,n,cas,tmp,cnt,cnt1,cnt2,maxlen,a[1010],b[1010],...原创 2020-03-02 21:51:29 · 371 阅读 · 0 评论 -
NEFU-ACM 寒假大一考试题解(2020.2.22)
这是给大一acm训练出的考试题题解。题目名字有“jwGG”的3道题,是我出的(jwGG的签到题、jwGG与yzMM的字符串、jwGG与bwMM的字符串),其他的题是实验室各位大佬出的。感谢所有出题人的付出。nefu 2133 jwMM的疯狂A-B签到题。两个set,直接模拟。#include <bits/stdc++.h>using namespace std;set<int>s1,s2;int n,m,x,flag=0;int main(){ ios::sync_with原创 2020-02-23 08:46:59 · 862 阅读 · 0 评论 -
map(含pair)的二维表示和迭代器遍历
前置知识 pair+map一、pair是STL中的二元结构体,有两个参数,分别对应first和second的数据类型,它们可以是任意基本数据类型或者STL容器。定义一个pair的方法为:pair<typename1,typename2> name;pair会自动将first从小到大排序,如果first相同,则按second从小到大排序。pair<int,int>a;...原创 2020-02-23 08:45:04 · 7773 阅读 · 4 评论 -
C++ STL string 赋值函数assign 实现字符串倒置并赋值
昨天打cf,在CSDN找string怎么实现逆序,有没有自带的函数,找了半天才找到点有用的东西,自己总结一下。如果只要把一个字符串本身逆序,不需要赋值给别的字符串的话,可以这么写:```cppstring a;reverse(a.begin(),a.end());```如果要把字符串b逆序赋值给字符串a(字符串b自身不变,它的逆序给了字符串a保存),用法:```cppstring a,b;a.assign(b.rbegin(),b.rend());//将b逆序赋值给a```## 例原创 2020-02-23 08:45:13 · 1103 阅读 · 0 评论 -
尺取法(2019.5.3训练)
poj 2739 Sum of Consecutive Prime Numbers#include <iostream>#include <cstring>using namespace std;const int N=1e4+5;int l,r,n,len,tmp,cnt,sum,ans,prime[N],pre[N];bool flag[N];void g...原创 2019-05-03 20:54:59 · 343 阅读 · 0 评论 -
HDU1005 Number Sequence
hdu 1005 Number Sequence找规律,找出循环节mod,注意n%mod=0的情况#include &amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;gt;using namespace std;int a[51],A,B,n,i,mod;int main(){ while(cin&amp;amp;amp;amp;amp;gt;&原创 2019-03-05 16:35:57 · 155 阅读 · 0 评论 -
矩阵 层级旋转【模拟】
#include <bits/stdc++.h>using namespace std;const int N=1010;char tmp,a[N][N],b[N][N];int n,cnt,ans[N];int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};queue<char>q;int main(){ ios::s...原创 2019-11-10 00:30:38 · 521 阅读 · 0 评论 -
蓝桥杯练习 BASIC-19 完美的代价
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T60题目基础练习 完美的代价时间限制:1.0s 内存限制:512.0MB问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。 交换的定义是:交换两个相邻的字...原创 2019-10-29 13:37:34 · 547 阅读 · 3 评论 -
哈希&哈希表(2019.6.21训练)
洛谷 P1381 单词背诵#include <bits/stdc++.h>using namespace std;int n,m,l,r,sum,ans1,ans2;string a[1010],b[100010];map<string,int>vis,flag;int main(){ ios::sync_with_stdio(false); ...原创 2019-07-02 20:31:08 · 220 阅读 · 0 评论 -
洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
题目链接:https://www.luogu.org/problemnew/show/P1217说起来你可能不信,这是洛谷新手村的一道题目…1e9这么大数据吓了我一跳我刚开始看还以为要写素数筛,后来看了一下说明,woc!直接枚举个位数、十位数、百位数…这思路妙啊 (我怎么开始就没想到)AC代码略长,思路很简单。#include <bits/stdc++.h>using...原创 2019-07-05 21:13:46 · 240 阅读 · 0 评论 -
洛谷 P1577 切绳子【实数二分,化实数为整数】
洛谷 P1577 切绳子先把每根绳子长度a[i]乘以100化为整数,再按整数的方法二分,最后输出答案时再除以100即可。注意在二分过程中要特判m=0的情况,否则在judge函数中会除以0导致RE。解决办法是二分前先初始化ans=0,若出现了m=0则退出二分循环,输出答案ans=0.00。#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;...原创 2019-03-08 08:42:23 · 354 阅读 · 0 评论 -
C++ STL 优先队列的应用(priority_queue)
nefu 1537 买饭-优先队列#include <bits/stdc++.h>using namespace std;int n,x;struct node{ int x,num;};bool operator < (const node &s1,const node &s2){ if(s1.x!=s2.x)return s1....原创 2020-02-13 10:44:06 · 3274 阅读 · 0 评论 -
C++ STL 全排列函数用法【next_permutation && prev_permutation】
一、next_permutation函数#include <bits/stdc++.h>using namespace std;int x,n;vector<int>s;int main(){ ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++) {...原创 2019-10-18 19:51:41 · 248 阅读 · 0 评论 -
大一寒假训练七(栈)【更新完成】
nefu 1624 栈-程序员输入问题 (模板题)把字符串从前往后找,是#就退栈;是@就清空栈;其他的直接入栈然后把这个栈弄到另外一个栈里,再依次输出栈顶即可注释详见代码#include &amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;gt;using namespace std;stack&amp;amp;amp;amp;amp;am原创 2020-01-06 13:04:11 · 1291 阅读 · 1 评论 -
大一寒假训练六(二分查找)【更新完成】
nefu 1645 小清新的函数坐标#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;using namespace std;double f(double x){ return 0.0001*pow(x,5)+0.003*pow(x,3)+0.5*x原创 2020-01-05 10:48:14 · 1916 阅读 · 1 评论 -
大一寒假训练五(GCD&&快速幂)【更新完成】
nefu 1077 最大公约数和最小公倍数 (模板题)#include &amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;gt;using namespace std;long long gcd(long long a,long long b){ return b?gcd(b,a%b):a;}long long lcm(long long a,long long b){ ret原创 2020-01-01 10:21:42 · 2732 阅读 · 2 评论 -
大一寒假训练四(位运算&&二进制枚举)【更新完成】
nefu 643 teacher Li思路就是把所有字符串的每个字符依次异或,字符对应得ascii码也是一个数字,所以字符也可以去异或。在二进制中,0与任何数异或都等于那个数本身。把两个相同字符串的每个字符都异或之后会得到一串0,这串0再与那个只出现一次的字符串异或,也就会得到我们想要的只出现一次的字符串。#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;a原创 2020-01-01 10:21:37 · 2202 阅读 · 2 评论 -
大一寒假训练三(暴力枚举)【更新完成】
本次训练共12 题,本文附AC代码和题目链接。nefu 8 二倍的问题#include <bits/stdc++.h>using namespace std;int main(){ int i,j,t,n,ans,a[20]; while(cin>>t) { while(t--) { n=ans=0; while(cin>>a[n]&&a[n])n++;//输入数据a[0]~a[n-1]原创 2020-01-01 10:21:25 · 2344 阅读 · 2 评论 -
大一寒假训练二(排序)【更新完成】
大一寒假训练二(排序初级版)nefu 1481 谁考了第k名-排序#include &amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;gt;using namespace std;struct student{ int a; double b;};int main(){ student stu[1001],t; int i,原创 2020-01-01 10:14:35 · 3325 阅读 · 1 评论 -
大一寒假训练八(队列)【更新完成】
nefu 1662 Blash数集-队列-set这题和nefu 574 丑数有点相似,把排序的过程想清楚就行了,不用队列也能做,丑数那题就是由前面几个数生成后面的数然后升序排列,这题也可以用那种思想做,比用队列要简单。#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;原创 2020-02-12 09:42:02 · 4749 阅读 · 1 评论 -
大一寒假训练九(map,set,vector)【更新完成】
## 一、map的应用## [洛谷 P1918 保龄球](https://www.luogu.com.cn/problem/P1918) ```cpp#include <bits/stdc++.h>using namespace std;map<int,int>a;//实际上就是定义了一个int a[1e9]的数组,但是普通数组开不到1e9那么大int main(){ int n,x1,x2,k; ios::sync_with_stdio(false); cin>>n原创 2020-02-16 21:40:06 · 1713 阅读 · 0 评论 -
大一寒假训练十(string)【更新完成】
## [poj 2406 Power Strings](http://poj.org/problem?id=2406) ([nefu 1681 字符串乘法](http://acm.nefu.edu.cn/problemShow.php?problem_id=1681))KMP算法。先预处理得到next数组,若存在循环节,即n%(n-ne[n])==0,则最小循环节长度为n-ne[n],答案为n/(n-ne[n]);若不存在则输出1。```cpp#include <cstdio>#include原创 2020-02-20 10:01:46 · 1562 阅读 · 0 评论 -
大一寒假训练十一(简单几何)(未完待续)
nefu 823 计算内积#include <bits/stdc++.h>using namespace std;long long a[100010];long long b[100010];int main(){ long long n,i,s; while(cin>>n) { for(i=1;i<=n;i++)...原创 2019-03-03 09:28:04 · 276 阅读 · 0 评论 -
字符串型表达式求值【栈的应用】
洛谷 P1981 表达式求值先来一个简单的,只有乘号和加号的表达式求值。不用栈也可以做:#include <bits/stdc++.h>using namespace std;const int mod=1e4;char c;int x,sum,ans;int main(){ scanf("%d",&x);sum=x%mod;//sum为连乘式的值 ...原创 2019-09-19 20:53:37 · 559 阅读 · 0 评论 -
CSP认证-第五次培训(2019.9.13)
D题 俄罗斯方块纯模拟题。这题的代码看起来很短,下标处理起来还是有点麻烦的 (我想了好久才想明白怎么模拟)具体思路详见我写的代码注释。100分 AC代码:#include <bits/stdc++.h>using namespace std;int r,x,f,a[20][20],b[10][10];int main(){ ios::sync_with_s...原创 2019-09-13 12:22:12 · 699 阅读 · 0 评论 -
CSP认证-第四次培训(2019.9.11)
B题 碰撞的小球简单模拟题。具体思路详见注释。#include <bits/stdc++.h>using namespace std;struct node{ int pos,d;//球的位置,方向}a[110];int n,t,l,tmp;int main(){ ios::sync_with_stdio(false); cin>...原创 2019-09-11 20:42:08 · 315 阅读 · 0 评论 -
CSP认证-第三次培训(2019.9.6)
B题 火车购票75分代码:#include <bits/stdc++.h>using namespace std;int n,cnt,tmps,rest[110],vis[110];int main(){ ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=20;i++) ...原创 2019-09-07 17:00:06 · 386 阅读 · 0 评论 -
CSP认证-第二次培训(2019.9.5)
A题 最小差值100分 AC代码:#include <bits/stdc++.h>using namespace std;int n,mi,tmp,a[1010];int main(){ ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++) cin&g...原创 2019-09-05 20:27:18 · 457 阅读 · 0 评论