• 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<
  • 2024-04-142321. 拼接数组的最大分数(leetcode)
    https://leetcode.cn/problems/maximum-score-of-spliced-array/description/这一题应该算一个连续最大子数组思维题,要点是根据差数组去做,然后求最值classSolution{public:intmaximumsSplicedArray(vector<int>&nums1,vector<int>&nums2){//f[i]表示以
  • 2024-04-10Codeforces Round 893 (Div. 2) D
    链接第一个想法:\(O(n^2)\)可过,很明显,我可以直接统计出来每一个位置作为中心,向两边扩展最多能得到的多少个连续的1。这个想法是不成熟的,但是我甚至开始写了。哎。然后写了140行,发现寄了,思路太复杂,完全用不了。这里就引出了一个事情:太复杂的思路其实不能算是思路,因为表达是不可能
  • 2024-04-09111
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedeflongdoubleld;#definemem(a,b)memset((a),(b),sizeof(a))#defineinf0x3f3f3f3f#defineinfl0x3f3f3f3f3f3f3f3f//#definelllonglong#defineseed13331#defineMOD1
  • 2024-04-08【题解】洛谷马的遍历
    马的遍历方法:广度优先搜索源代码如下#include<iostream>#include<queue>#include<cstdio>#include<cstring>usingnamespacestd;structcoord{//结构体定义x,y坐标intx,y;};queue<coord>Q;intans[500][500];//-1代表未访问intwalk[8
  • 2024-04-07memset()函数及其作用
    一、memset()memset()函数是C/C++语言中的一个标准库函数,用于将一块内存空间的内容设置为指定的值。其函数原型为:void*memset(void*ptr,intvalue,size_tnum);参数说明:-ptr:指向要设置数值的内存块的指针。-value:要设置的值,通常是一个无符号字符。-num:要设
  • 2024-04-011935B - Informatics in MAC
    这道题目考察了前缀和的思想以及对数学思维的理解,首先对于任意一组数组01710103考虑一下他们之间的MEX怎么分割,假设有两个数组{1,x},{x+1,n}要使得他们之间的MEX一样,则他们每个数组中都含有1~MEX-1个数(一定)那么把两个数组合并呢?两个数组合并之后MEX不变,则往下递推,假设分
  • 2024-03-24拓扑排序 洛谷B3644家谱树解法
    #include<bits/stdc++.h>usingnamespacestd;intd[101];//d[i]表示i点的入度个数intt[101][101];//t[i][j]表示i点到j点间有一条有向边queue<int>q;//q表示当前入度为0的节点intmain(){ //所有数组初始化为0 memset(d,0,sizeof(d)); memset(t,0,sizeof(t
  • 2024-03-21矩阵乘法
    intn,m;intk;structmatrix{ intc[101][101]; matrix(){memset(c,0,sizeofc);} };matrixoperator*(matrix&a,matrix&b){ matrixt; for(inti=1;i<=n;i++){ for(intj=1;j<=k;j++){ for(intg=1;g<=m;g++){ t.c[i][j]+=a.c[i][g]*