- 2024-11-18ybtoj:二分算法
A:数列分段点击查看代码#include<bits/stdc++.h>usingnamespacestd;intm,n;inta[100002];intl,r;boolcheck(intlimit){ intcnt=1,sum=0; for(inti=1;i<=n;i++) { if(sum+a[i]>limit){ cnt++; sum=a[i]; } else{ sum+=a[i]; } }
- 2024-11-04GESP4级考试语法知识(计数排序-桶排序)
整数排列参考程序代码:#include<iostream>#include<cstring>usingnamespacestd;intmain(){ inta[101],n,i,j,k; memset(a,0,sizeof(a));//数组清0 cin>>n;//输入数字个数 for(i=1;i<=n;i++) { cin>>k;//输入一个数字,数字范围肯定
- 2024-11-03pta 7-120 右上方
题解:#include<stdio.h>#include<string.h>intmain(){intt;scanf("%d",&t);while(t--){intn;scanf("%d",&n);inta[n][n];memset(a,0,sizeof(a));//初始化数组a的值为0i
- 2024-10-18C库函数 memset 学习
见代码(很久以前的):本人实力不济,如有错误或建议及补充,请指出(评论或私信都行)/*码风很丑,见谅可用于数组之间的赋值,节省代码量*/#include<stdio.h>#include<stdlib.h>#include<string.h>#definem0(x)memset(x,0,sizeof(x))intmin(intx,inty){if(x<y)returnx
- 2024-10-18最短路默写
有一无负权有向图。求指定两点间的最短路径。数据范围:所有数据不超过100直接最短路板子写上:#include<bits/stdc++.h>usingnamespacestd;constintN=510;intn,m;intg[N][N],dist[N];intx,y,z,s,t;boolvis[N];intDijkstra(ints,intt){ memset(dist,0x3f,siz
- 2024-10-16异步服务器编写过程
boost::asio::io_context的作用boost::asio::io_context是Boost.Asio库中的一个核心组件,主要用于管理异步事件和任务的执行。它在网络编程、并发编程和异步操作中发挥着重要作用。主要作用事件循环:io_context提供了一个事件循环,可以调度和处理异步操作。当有事件发
- 2024-10-11C++常用库函数
大小写转换islower/isupper函数用于检查一个字符是否为小写或大小字母,需要包含头文件<cctype>,也可以包含万能头文件<bits/stdc++.h>.函数返回值类型为bool类型。intmain(){ charch1='A'; charch2='b'; //使用islower函数判断是否为小写字母 if(islower
- 2024-10-11区间dp板子
比较简单的dp,但是建模可能会比较困难。以P1775石子合并(弱化版)为例(https://www.luogu.com.cn/problem/P1775)思路:要求1-n的石子合并的代价,可以看成小的区间问题,化为1-k+k-n的两个区间。然后就有递推式子:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+w[j]-w[i-1]。编
- 2024-09-25P8906 [USACO22DEC] Breakdown P 题解
P8906[USACO22DEC]BreakdownP题解显然的套路是删边转化为加边。考虑到维护整条路径不好维护,于是考虑转化维护\(f_{i,k},g_{i,k}\)分别表示\(1,n\)到\(i\)走了\(k\)步时的最短路。那么此时\(k\le4\)。我们先考虑\(f\)的转移,\(g\)的转移是等价的。那么对于\((
- 2024-08-26新手专科准大一学习c语言的第10天之strcpy、memset、自定义函数的学习与应用
strcpystrcpy是C语言标准库中的一个字符串操作函数,用于将源字符串复制到目标字符串中。#include<stdio.h>#include<string.h>intmain(){chararr1[50];//确保目标数组足够大,能够容纳源字符串chararr2[]="helloworld";//源字符串
- 2024-08-22融合矿石
无论怎么融合,合法矿石的质量至多只有3000种,可以通过一遍完全背包预处理得到,然后再跑一遍完全背包就好了还记得完全背包吗?就是把01背包正过来跑一遍就好了想不出来的时候,不妨暂时放下,回头再看,或许能有新的发现没有金辉石的矿石没有价值点击查看代码#include<bits/stdc++.h
- 2024-08-1224/8/12 模拟赛
hz暑假集训8/12数字三角形CF1517C签到题。题意:小\(D\)给你一个长度为\(n\)的排列\(p\),你需要根据\(p\)构造出一个三角形。该图案需要满足共\(n\)行,第\(i\)行有\(i\)个数,第\(i\)行最后一个数是\(p_i\)。数值\(p_i\)有\(p_i\)个且四联通。几个位置是
- 2024-08-05模拟实现 memset --浅谈C语言
memset()描述C库函数void*memset(void*str,intc,size_tn)用于将一段内存区域设置为指定的值。memset()函数将指定的值c复制到str所指向的内存区域的前n个字节中,这可以用于将内存块清零或设置为特定值。在一些情况下,需要快速初始化大块内存为零或者特定值,memse
- 2024-07-30C++里memset的使用
在C++中使用memset函数涉及几个关键点,包括函数的正确调用方式、参数的理解以及注意事项。memset函数是C和C++语言标准库中的一个函数,用于将内存区域设置为特定的值。它的基本语法如下:void*memset(void*s,intc,size_tn);第一个参数是一个指向要被填充的内存
- 2024-07-23在 A 里面找有 C 的 B
ios::sync_with_stdio(false);cin.tie(0);\(\Uparrow\)关闭同步/解除绑定,可以优化读入字符串的效率这行代码的缺失,不仅导致程序在本地运行时需要过好几秒才能读入数据,更导致程序在OJ上评测时TLE时隔半年,自己还能独自完成KMP和AC自动机的代码,还是比较开心的;调试时,把握整体,注
- 2024-07-23博弈论
1.树上删边问题sg函数的一个简单应用,把树拆成很多条以根节点为起点的链,就可以等效于nim问题。我们把叶子节点的sg赋值为0,一个节点的sg值为它儿子节点的sg值+1的异或和。最后判断根节点的sg值是否为0,再判断是先手必胜还是后手。点击查看代码#include<bits/stdc++.h>usingn
- 2024-07-11E. Permutation Sorting
原题链接题解对于数\(i\)来说,如果其当前位置到最终位置上,有\(k\)个数不在最终位置,那么数\(i\)至少要走\(k\)次如果这\(k\)个数里,有\(m\)个在数\(i\)回到最终位置时,提前回到了最终位置,那么数\(i\)要走\(k-m\)次具象化就是一个一个的区间(起点为当前位置,终点
- 2024-07-08[BZOJ4350] 括号序列再战猪猪侠 题解
我们设\(dp_{i,j}\)表示第\(i\)到第\(j\)个括号合并为序列且最外层不是括号\(i\)的可能性,\(f_{i,j}\)表示最外层是括号\(i\)的可能性。则有:\[\begin{cases}dp_{i,j}=\sumf_{i,k}(dp_{k+1,j}+f_{k+1,j})\\f_{i,j}=dp_{i+1,j}+f_{i+1,j}\end{cases}\]当然,并不是所
- 2024-07-03strlen/strcpy/strncpy/strcat/strcmp/memset/memcmp不完成实现(部分函数跑过测试集)
#include<klib.h>#include<klib-macros.h>#include<stdint.h>#if!defined(__ISA_NATIVE__)||defined(__NATIVE_USE_KLIB__)size_tstrlen(constchar*s){//panic("Notimplemented");assert(s!=NULL);size_tl=0;
- 2024-07-01【模版】最短路
原创于2017.04.03:最短路1.多源的Floyd,邻接矩阵实现,复杂度O(n^3),n<400;2.单源Dijkstra,邻接矩阵实现,无负边,复杂度O(n^2),n<10000;3.单源Dijkstra,邻接表实现,堆优化,无负边,复杂度O(ElogE),点多边少;4.单源bellman_ford,边集实现,可验负环,复杂度O(nE),nm<10^8;5.单源SPFA,邻接表+队列实现,可验负环
- 2024-06-06memset函数
转载:https://www.cnblogs.com/-wenli/p/11491127.htmlC语言memset函数详解memset()的作用:在一段内存块中填充某个给定的值,通常用于数组初始化与数组清零。它是直接操作内存空间,mem即“内存”(memory)的意思。该函数的原型为:#include<string.h>void*memset(void*s,intc
- 2024-05-25c++/c语法基础【2】
目录1.memset数组批量赋值2.字符数组 编辑输入输出: 字符数组直接输入输出%s: gets!string.h 1.strlen:字符串去掉末尾\0的长度
- 2024-05-14时间复杂度
直接加三个语句就好啦想测哪里测哪里#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e8+10;boolprime[maxn];intmain(){ intst=clock();//开始时间 memset(prime,true,sizeof(prime)); for(inti=2;i<maxn;i++){ if(prime[i]){ intj=2; whil
- 2024-05-12洛谷题单指南-动态规划3-Zuma
原题链接:https://www.luogu.com.cn/problem/CF607B题意解读:从一组整数中取连续的回文子串,求最少几次可以取完。解题思路:状态表示:设dp[i][j]表示取i~j之间的回文子串所需的最少次数,a[i]表示第i个数状态转移:如果a[i]==a[j],dp[i][j]=dp[i+1][j-1],因为首尾如果相等,其必然可以
- 2024-04-15分块板子
预处理voidinit(){clean();scanf("%lld",&n);for(i=1;i<=n;i++)scanf("%lld",&a[i]);sq=sqrt(n);for(i=1;i<=sq;i++){st[i]=n/sq*(i-1)+1;ed[i]=n/sq*i;}ed[sq]=n;for(i=1;i<