自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 codeforces 1000~1100第六周

分析:已知bi求ai,&操作是只有都为1的才是1,所以我们可以用 | 操作,a[i]=b[i] | b[i-1];分析:用数组记录下各个元素的最大连续长度(第一次记录a中的,第二次通过b来更新长度),然后再对每个元素遍历找出最大的。a[i+1]=min(b[i],b[i+1]),有相邻两个的最小值构成,每一个最小值就能保证前一个为b[i]。lower_bound(b+1,b+1+n,a[i])返回找到的地址,-b-1得到前面小于的个数。分析:要尽可能的省钱,每个就可以分g/2向上取整-1,再多就要亏钱了。

2024-08-03 16:54:29 352

原创 codeforces 1000~1100第五周

分析:我一开始想的是是将x,y里面的数字全部变成1,以外的数字都是-1,但是当-1比较多的时候就不能保证在x,y处取得对应的前后缀值(负数的影响比较大了),为了抵消这个影响我们对x,y以外采用1,-1这种构造,如果左边是先-1再1,那么右边就要先1,再-1,以保证连续性。分析:这题比较特殊的是0开头1结尾,只要在相同的位置出现01即是可以,0可以把前面都变成0,1可以把后面都变成1。如果个数大于等于k,就加上每次出来的。只要没出现1那么mex值就是1,不符,所以要让1尽可能多的出现,把1放在中间位置。

2024-07-28 21:06:44 605

原创 codeforces 1000~1100第四周

用应该变量来记录通知的人数(要保证分享的村民是让村长通知的),判断尽可能用上b[i],因为我们进行了排序,如果b[i]>p直接break后面肯定不行,如果op==n后面的也只会更大直接break。2、一偶多奇 ans=1;如果一个数比前面的大,那么差值就是要传送的次数,然后第一个值是一定要传送的再加上a[1]-1。分析:要找的两个数可能有很多的情况,那我们就找最特殊的,最小数的除1外最小因子,和这个数减去最小因子。有一个小细节,对于每一个i,当前位置的ans一定大于i-1,即包括i前面的所有的数的个数。

2024-07-21 15:22:27 670

原创 超时的一种情况——memset的使用

解决方案:根据给的大小n,用循环初始化for(int i=0;i++)a[i]=0;在用memset初始化时,如果数组开的空间比较大如1e5,就可能会超时。

2024-07-19 17:26:19 98

原创 Runtime error的一种情况

当开的栈位字符串型,输入的结果却为整形的时候可能会出现Runtime error。例如stack<char>up , up.push(1);

2024-07-15 11:28:20 78

原创 codeforces 1000~1100第三周

分析:假设解锁了i个a,那么结果就为a的前n项和加上k-i个前b[i]的最大值。分析:每次都是删除离b/B最近的,可以把对应的大小写存在栈里,这里为了应对重复字符的影响,栈里存的是下标。设选b前k个与a的后k个,那么b的后面n-k个与a的前面n-k个匹配。分析:要求一个最短字符串以a和b为子序列,用长度和减去重复的即可,因为a是一定要出现的,所以对b中的每一个元素判断是否再a中按顺序出现。分析:先统计出0,1的个数,对于每一位给它相反的,当其中的0或1没了的时候结束,最后剩下的个数就是要删去的。

2024-07-15 11:22:00 324

原创 codeforces 1000~1100第二周

对一个数以中间数为准,对比a[i-1]和a[i]哪个要减到0,又因为两倍关系min(a[i-1],a[i]/2)。分析:根据异或运算的特点,先取两边重复出现的数字它们的异或不影响,然后在把剩余的分别加上相同的数字即可(因为数字每个都出现两次)。分析:分别从左边和右边统计连续相同的个数再用n减去这些相同的,如果左右相同就只要减去他们的和,如果不同就减去他们的最大值。分析:因为a和b的值比较小所以可以对他们遍历,而l的值比较大,在判断是否存在和去重时将将对应的k存入set从而去重。

2024-07-11 17:18:28 358

原创 codeforces 1000~1100第一周

分析:不能出现两个连续不为0的数,从更简单的二进制开始只需要将二进制中连续的1转化掉就行,对于连续的ai=1,ai+1=1;分析:和本章第一个类似,反向思考找数相乘的特点,因为n的范围小为1e5,所以因子为10,11,101,111,101,1111,1101,1011,1001。分析:把第一个1后面的0都移到它前面,在第一个1后面的每一个的0的移动量为i-id+1-cnt,cnt初始为0,后面的每一个0计数时都要少一个0即cnt++,求和即可。0ll,longlong型的0,只有同型才能比较大小。

2024-06-24 08:26:42 999

原创 Educational Codeforces Round 166 (Rated for Div. 2)

分析:因为位置不能移动,加上每一位上的差值。在处理bn+1时,如果bn+1在a和b之间则只需要加复制的一不用额外加,如果不是则记录与bn+1最相近的数。

2024-06-06 18:12:37 195

原创 Codeforces Round 940 (Div. 2) and CodeCraft-23

两个数n,k找出一个数列有n个元素,元素和为k,并使a1|a2|a3....最大。让二进制的一尽可能的多,即让第一个数的一最多,第二个数补齐和,后面用0补齐个数。

2024-05-27 19:29:04 216

原创 负进制转换

解析:和正进制一样,每次取的余数保证在0~m-1之间。(例如m=-16,则余数应该在0~15)就可以直接输出。所以用系统的“%”运算符的时候必须注意检查是不是在该范围(可能在m+1~0),否则就调整。调整的方法是:如果余数<0,那么:余数-=m;

2024-04-26 18:47:57 155

原创 2024牛客寒假训练营

分析:先找最坏情况,最多三个(2,0)、(1,-1)、(1,1)左右最多分别两个 用cnt1=2,cnt2=2分别表示左右(但不能同时两个)如果左边存在点则最多只需要一个火把cnt1更新为1同理右边也是如此。最后再判断一下堵住的情况,对于每一个点判断对面三个点是否存在,存在则更新为0。

2024-04-24 20:39:16 181

原创 (m+k-1)/m

(m+k-1)/m表示的是一个数学表达式,其中m和k是变量。这个表达式可以理解为将k个元素分成m组后,每组的平均元素个数。具体来说,(m+k-1)/m可以用来计算在将k个元素分成m组时,每组的平均元素个数(可能存在余数)。例如,假设有9个元素要分成3组,那么每组的平均元素个数就是(9+3-1)/3=11/3=3.67。这意味着每组平均有3.67个元素,其中有些组可能有4个元素,而其他组可能只有3个元素。

2024-04-07 20:13:03 375

原创 Educational Codeforces Round 99 (Rated for Div. 2)D. Sequence and Swaps

如果需要交换,那么就要从前面开始判断a[i]和x的大小把小的换到前面。因为不知道换到那一次就可以了,所以每换一次判断一下如果符合不降序直接输出。

2024-03-28 19:55:41 143 1

原创 Codeforces 1279C Stack of Presents

为了发送一个礼物,圣诞老人必须从堆中找到它,移除所有在它上面的礼物,拿走这个礼物,然后将所有被移除的礼物放回堆中。幸运的是,圣诞老人可以加快整个过程 — 当他将礼物放回堆中时,他可以根据需要重新排列它们(只能重新排列那些在他想要拿走的礼物上方的礼物;最底部的礼物编号为 an。第三行包含 m 个整数 b1,b2,...,bm(1≤bi≤n,所有 bi 都是唯一的)— 圣诞老人要发送的礼物的顺序。第二行包含 n 个整数 a1,a2,...,an(1≤ai≤n,所有 ai 都是唯一的)— 堆中礼物的顺序。

2024-03-21 20:06:40 350 1

原创 for循环使用的补充

for循环中定义的是第一个分号前的变量,若前面已定义过则需注意不能重复定义。如:图中sum变量已经定义过又在for循环的第一个冒号内有定义就会出现错误。

2024-03-07 19:43:05 263

原创 Codeforces Round #849 (Div. 4)Negatives and Positives

【代码】Codeforces Round #849 (Div. 4)Negatives and Positives。

2023-10-27 19:56:20 81 1

原创 c++小技巧

vector中find的用法,find(a.begin(),a.end(),k)找不到返回a.end()。判断奇数偶数如果n&1为真n为奇数,反之则为偶数;(奇数的二进制最后一位为1,与上1为真)

2023-10-09 15:26:59 76 1

原创 The 2023 ICPC Asia Regionals Online Contest (2)

思路:每一天都有两种选择,休息或是挑战,要使时间最短就只能不挑战或一直挑战,如果挑战一次又不挑战,那么从跳回去的地方回到原位置就会增加时间。对于第i个阶段,它所需的时间期望为i+((1-q[i])/q[i])*(i-a[i]+1)+1,(1-q[i])/q[i]为一直挑战的概率,(i-a[i]+1)为一直挑战增加的时间。对时间遍历取最小值。

2023-09-25 20:47:08 217 1

原创 J - Coach

代码:#include <bits/stdc++.h>

2023-04-14 19:22:28 72

原创 I - Code For 1

解法:根据二叉树的特点将每一个节点都深搜到最底层,再根据L~R的范围和mid及N/2的对称性返回结果。

2023-04-10 20:23:48 56

原创 F - Garbage Disposal

解法:每天都装x/y袋垃圾,剩余的x%y留到第二天(这样能尽量让每一袋装满),如果前一天剩下的和今天剩下的加起来小于y也要算作一袋。

2023-04-10 20:06:27 55

原创 C - Minimum Diameter Tree

解法:用vector来存储树,然后遍历出叶子节点的个数,用s*2/叶子节点总数,即是使得最短路的最大值最小的非负权边。

2023-04-10 19:52:04 85

原创 c++小技巧

1、当使用了#define int long long 把下面的所有int换成long long 后。2、使用ios_base::sync_with_stdio(false);可以加快cin的读取速度。主函数也要由int main换成signed main;3、当数据超过百万建议使用scanf而不是cin。但是就不能用scanf,不然容易发生混乱。

2023-03-31 19:34:24 276

原创 数据结构第二章顺序表测试

2023-03-27 20:27:02 71

原创 数据结构第二章单链表尾插法创建填空

2023-03-27 19:29:19 80

原创 数据结构第二章单链表头插法建表填空题

2023-03-27 19:24:16 122

原创 数据结构第二章线性表填空题

2023-03-27 19:20:24 69

原创 多组数据输入

while(scanf("%d",a),限制条件){四、在while() 中无法体现限制条件的。while(n--){ //n为次数。二、没有限制条件的多组输入。三、有限制条件的多组输入。一、已知次数的多组输入。

2023-03-13 19:20:53 474

原创 数据结构第一章时间复杂度判断题

2023-03-11 13:03:37 51

原创 数据结构第一章判断题

2023-03-11 13:02:17 56 1

原创 数据结构第一章选择题

2023-03-11 13:00:33 55 1

原创 c++二分

1、 先对数组排序sort(默认为0)如果输入是1到n,使用sort(a+1,a+n+1),如果输入是0到n-1,使用sort(a,a+n)。3、返回值,将l,r更新为目标值b[i]的左右两边。else r=mid;

2023-03-09 19:37:35 126 1

javafx18压缩包快速下载

javafx18压缩包快速下载

2023-11-20

计算机网络实验课实验报告

计算机网络实验课实验报告

2023-11-14

空空如也

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

TA关注的人

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