- 2024-11-17AtCoder Beginner Contest 380 (A~E)题解
A-123233遍历字符串统计出现次数即可。#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e6+10;intn,m,k;inta[N];signedmain(){ strings; cin>>s; map<char,int>mp; for(autot:s){ mp[t]++; } if(
- 2024-11-13代码随想录:移除元素
代码随想录:移除元素题目中的原地指的是不能开创新的数组。简单双指针解决问题,实际上是vector中的erase的实现原理//erase和迭代器的使用方法std::vector<int>vec={1,2,3,4,5};autoit=vec.begin()+2;//指向元素3//这所谓迭代器其实就是封装后的指针啊vec.era
- 2024-11-11CF Round 985
比赛链接A.Set#include<iostream>#include<cstdio>usingnamespacestd;intmain(){intt;scanf("%d",&t);while(t--){intl,r,k;scanf("%d%d%d",&l,&r,&k);printf("%
- 2024-10-20STL-set学习笔记
set本质是平衡数,插入的数会自动排序并去重插入s.insert(1)删除<1>erase(id)删除指针id指向的数<2>erase(lid,rid)删除lid到rid所指向区间的数,且该区间为前闭后开区间<3>erase(val)删除值val遍历set的遍历涉及指针,其数据类型为set<int>::iterator,因为是指针
- 2024-10-17set.erase()立大功
set.erase(intx)可以将x删除,利用这个特性,可以做到一次性删除https://atcoder.jp/contests/abc370/tasks/abc370_d#include<bits/stdc++.h>#defineendl'\n'#defineintlonglong#definelowbit(x)(x&-x)usingnamespacestd;constdoublepi=acos(-1);voidso
- 2024-10-07abc370D Cross Explosion
有H行W列的格子,初始时每个格子中都是墙,接下来有Q组询问,格式为:R[i]C[i],表示在坐标(R[i],C[i])的地方放置炸弹,如果该位置是墙,则墙被炸掉,如果是空地,则上下左右最近的一格墙被炸掉。问最终还剩多少墙?1<=H,W;H*W<=4E5;1<=Q<=2E5;1<=R[i]<=H;1<=C[i]<=W分析:用set维护按行和列的
- 2024-09-21vector--C++
文章目录一、vector1、vector的介绍及使用1.1、vector的介绍1.2、vector的使用1.3、vector的定义1.4、vectoriterator的使用1.5、vector空间增长问题1.6、vector增删查改1.7、vector迭代器失效问题(重点)1.8、指定位置元素的删除操作--erase2、注意:Linux下,g++编译器
- 2024-09-14abc370D Cross Explosion
一开始并查集写的,ga掉。set应用一道非常好的题目。```#include<bits/stdc++.h>#include<set>#definesiiset<int>::iteratorusingnamespacestd;inth,w,q,ans;set<int>s1[400007],s2[400007];voiddel(intx,inty){//printf("%d%d\n",x,
- 2024-09-08ABC370 Review
ABC370ReviewA模拟题,过B模拟题,过C很明显的贪心思路是把需要更改的字母分为两类:改大和改小。首先我们要明确的是要让输出的串尽量拥有小的字典序,且字典序比较的第一关键字是位置,第二是长度所以对于改小的部分,改的位置越靠前我们就放在越前面操作;对于改大的部分,改的位置
- 2024-09-07AtCoder Beginner Contest 370
A-RaiseBothHands(abc370A)题目大意给出Snuke举的左右手情况,如果只举左手,输出Yes,如果只举右手,输出No,否则输出Invalid。解题思路逐一判断即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with
- 2024-08-27C++笔记9•list•
容器之list1.list的介绍(1).list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。(2).list的底层是双向循环链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。(3).优
- 2024-08-17set与multiset
STL魔法之set与multisetset与multiset之间区别是set之中不会有重复的元素,而multiset之中可以有重复元素set和multiset的使用方法基本是一样的可以看这篇博客这里总结一下首先.begin().end().lower_bound().upper_bound()返回的都是迭代器其中.end()返回的
- 2024-08-16[AGC064C] Erase and Divide Game
link感觉题解说的都很不清晰,这里只谈个人理解。考虑操作的本质是什么,两人从低到高确定二进制下的每一位填的数,并且场上只保留对应后缀的数字,当场上没有数字时当前操作者输。设\(f[i,S]\)表示确定了前\(i\)位,填的数为\(S\),接下来先手是否能赢,那么有\(f[i,S]=\neg(f[i
- 2024-08-05【C++第11章】Vector
【C++第11章】Vectorvector介绍
- 2024-07-28CF626G Raffles 题解
Description有\(n\)个奖池,第\(i\)个奖池的奖金是\(p_i\),已经有\(l_i\)张彩票押在上面。现在你有\(t\)张彩票,你需要将你的彩票分配到这些奖池中,并且保证你在每个奖池中押的彩票数不能超过该奖池原有的彩票数。若你在第\(i\)个奖池中押了\(t_i\)张彩票,则你中奖的概
- 2024-07-27ABC262F 题解
题面把“移动\(a_n\)至数列头”称为rotate,删除一项称为erase。因为要求字典序最小,所以可以逐位贪心。考虑一个数\(a_i\)怎么变成第一个数:使用\(n-i\)次rotate/erase,再rotate一次。删除或移动原来的\(a_{i+1}\sima_n\),再移动原来的\(a_i\)(逐步移动到数列尾,再ro
- 2024-07-23STL常用内容与概念
前言本文为一年多前个人笔记,记录一些STL常用的内容与概念。阅读时请使用目录。容器分为关联式,顺序式,容器适配器pairpair<type,type>p(value1,value2)pair<type,type>p=make_pair(value1,value2)p.first,p.second(multiset)mapkey升序,multi可重,unordered不可
- 2024-07-21清华训练营预选赛 赛后总结
汉明码的精髓在于,既然你无法分辨更改检验位的情况,就把检验位放到冲突的位置,消掉那一位位运算的性质:a+b=(a|b+a&b)\(a\oplusb\oplus0\)+\(a\oplusb\oplus(111…11)\)=111…11其实D题才是最简单的题目,比赛的整体难度低于省赛,明年还参加的话开场或许可以考虑和队友分工增进
- 2024-07-10G. The Great Equalizer
原题链接题解每次操作都会是排序后的元素差值减一,所以答案为初始序列最大值加上最大差值用STL的multiset维护差值和序列值code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lla[200005];voidsolve(){intn;cin>>n;multiset<ll>s
- 2024-06-11D. In Love
题解首先,我们来学会如何判断在一系列线段中是否存在不相交线段。我们选取所有线段中最大的左边界l_max和最小的右边界r_min,我们可以清楚的知晓当l_max>r_min的时候存在不相交线段(贪心的思想),否则不存在。code #include<bits/stdc++.h>usingnamespacestd;typedeflonglo
- 2024-05-26vector容器的用法
vector容器的用法文章目录vector容器的用法1.vector是向量的意思,他是动态顺序表2.封装数组3.capacity和size的用法4.assign的用法5.resize的用法6.front和back的用法7.clear和erase用法8.vector中逆序输出的用法9.insert的用法1.vector是向量的意思,他是动态顺序表2
- 2024-04-25POI2012SQU-Squarks
POI#Year2012#数学考虑如果将\(x_i\)和\(sum_i\)都排序,那么\(sum_1=x_1+x_2\),\(sum_2=x_1+x_3\)考虑枚举一个\(sum_i=x_2+x_3\),此时就可以确定\(x_1,x_2,x_3\)假设当前确定到\(i\),将已经确定的\(x_i\)组成的\(sum\)去掉,剩下的最小的\(sum\)一定为\(x_1+x_{
- 2024-04-20天梯赛赛前总结
某些函数后面有带小括号的注解,小括号中各参数的顺序就是传入的参数的顺序。stlqueue声明:queuename;(其他容器如无特别标注则声明方式与此相同)函数:front,back,empty,size,push,pop,swap(c++11)比较运算符:==,<=,>=,<,>,!=:按照字典序比较两个queue(c++20)priority_queue
- 2024-04-16C++ list erase
原文:https://www.cnblogs.com/yelongsan/p/4050404.htmlSTL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 在使用list、set或m