#include <stdio.h> #include <string.h>//使用memset要用到这个头文件 /* memset(数组名,0,sizeof(数组名)) -->把数组中的元素全部初始化成中间这个数据 */ int main() { int arr[5]={1,2,3,4,5}; printf("原始数据为:\n"); for(int i=0;i < 5;i++) { print
设一个大数枚举 太小了wa,太大了t 多少有点运气成分在里面 真实世界不也这样 #include<bits/stdc++.h> using namespace std; int ispri[1000007],prime[1000007],cnt=0; void pri() { memset(ispri,-1,sizeof(ispri)); for(int i=2;i<=1000000;i++) {
memset函数 头文件: #include <string.h> 函数原型: void* memset(void* s,int c,size_t n); memset()函数是按字节对内存块进行初始化的 注意:不能用memset()函数将int数组初始化为0和-1之外的其他值 int arr[8]; 初始化为0,memset(arr, 0, sizeof(arr)); 初始化为-1
1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 const int N = 509; 5 int g[N][N],dist[N],st[N]; 6 int n,m; 7 8 int dijkstra() 9 { 10 for(int i = 1;i <= n;++i) 11 { 12 int t = -1; 13 for
库函数memset的更有效版本实现 有参考其他的 一、实验预备知识 (1)库函数 memset 简介: memset 函数作用:将从 s 开始的 n 个字节的内存区域全都填充为 c 的低位字节。它是对较大的结构体或数组进行清零操作的一种最快方法。 (2)库函数memset的最直接实现: /* Basic implementati
Description \(1\le n,m\le 1000\)。 Solution 下面将 "#" 认为是 1,"." 认为是 0。 可以发现答案是具有二分性的。因此考虑二分答案。 对于答案 \(x\),先找出在 \(x\) 步内向外扩展不会到达的 0 的 1。 然后把这些点加入队列,然后 \(\text{bfs}\),看看经过 \(x\) 轮之后的形状是否与
Floyd #include<bits/stdc++.h> using namespace std; #define MAXN 1010 /* 图中最短路 f[i][j] = gragh[i][j] = min{f[i][k] + f[k][j], f[i][j]} */ int n = 0; int gragh[MAXN][MAXN] = { 0 }; int f[MAXN][MAXN] = { 0 }; void floyd(){
最短路裸题 题目大意: 拿到题目扫了一眼,大概出了个这样的思路:建个图,先以 1 1 1为源点跑一次最短路,再以除了 1 1
1.写左括号可以看到里面的 函数里面对应的参数 malloc(; 2.有些平台可能没有被初始化 平台(windows linux os) 因为c++的语言没有省略初始化 3.memset(0,p,40) 4.new 会调用一个memset() 5. 6. 7. 8. 9. 10. 11. 12. 13.你现
T1匹配 签到大水题,这里有hash,kmp,ac自动机,还有后缀数组,后缀自动机任您挑选. 不过这个数据范围有些坑啊,re就很不爽.做法我还是比较倾向hash的,毕竟不论神魔字符算法,hash大都能莽过(我才不会说kmp忘了呢............) code #include<bits/stdc++.h> using namespace std; unsi
1.模板 求n的m次方 #include<iostream> #define MOD 1000000007 using namespace std; //递归快速幂 int quickpow(long long a,long long n){ if(n==0) return 1; else if(n%2==1){ return quickpow(a,n-1)*a%MOD; }else{
近日做题总结 P1789 MC插火把 一道简单的模拟题 大致有三种题解吧: 1.暴力 2.抽象问题 3.打表 1.先说抽象问题 首先我最开始想到的是 因为火把延伸最多两个 然后我还懒得判断是否越界(其实是不太会) 而且起始点是1,1 不是 二维数组的0,0 那么我就在正常大小的数组外面再开两圈让
正无穷 memset(a,127,sizeof(a)); 负无穷 memset(a,128,sizeof(a)); 正无穷的一半 memset(a,60,sizeof(a)); memset(a,0x3f,sizeof(a)); 赋值0 memset(a,0,sizeof(a)); 赋值-1 memset(a,-1,sizeof(a)); 二维数组 #include <bits/stdc++.h> using namespace std;
数的划分 与 鸣人的影分身 不能说相似吧,只能说一模一样。 深搜应该也没问题,这里就不尝试了。 下面贴一个dp解法(上一题的注释懒得改了⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄) 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 const int N=205; 5 int f[8][N][N];
前言 这个算是鸽了很久都没去学的算法。然后模拟赛考出来(我又不会并查集做法),所以在改题之前,还得先完成一下前置知识。 差分约束的前置知识 <Ⅰ>\(Spfa\)判断负环 【模板】负环 用\(Spfa\)判断入队次数是否\(≥n\),如果是,说明有负环。感性理解一下,一个图上如果有负环,它会一直绕着负
#include<iostream> #include<queue> #include<cstring> #include<cstdio> using namespace std; int n,k,ans; int data[100005]; void bfs(){ memset(data,-1,sizeof data); queue<int>q; q.push(n); data[n] = 0; while
题目大意 给出一个无向连通图,让你改造成一个有向图,并保证强连通。 解题思路 先思考,将无向图改成有向图,需要顾及到一些割边,因为把割边删掉后,原图就不联通了,所以改造后的有向图需要完整的保留割边。 而对于不是割边的边,我们只需要保留一条边,可以在 tarjan 时,记录下来。 需要注意的:多
板子 有些东西很重要,但又不常用 如果考试的时候忘了,又恰巧考了,那不就 GG 了 所以我就把这类东西记到这里 离散化 /************************************************************************* > File Name: lsh.cpp > Author: Typedef > Mail: 1815979752@qq.com
动态规划经典题型,难度低。 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]
https://www.jb51.net/article/87237.htm memset memset 是重置 memcopy(b,a,n*sizeof(int)) a拷贝到b #include<iostream> #include<algorithm> #include<string.h> using namespace std; int main(){ int i=1;int n,q,t; while(cin>>n>>q)
1085 母函数。 #include<bits/stdc++.h> using namespace std; int c1[6000],c2[6000]; int main(){ int i,j; int a,b,c; while(1){ scanf("%d%d%d",&a,&b,&c); int sum=a+2*b+5*c; if(a==0&&b==0&&c==0&&sum==0)b
#include<iostream> #include<cmath> #include<cstring> #include<cstdio> #include<algorithm> #include<ctime> #define ll long long using namespace std; const int maxn = 1000005; int data[maxn],data2[maxn]; bool flag[maxn];
题目链接:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4505 没有看出这是一道区间 \(dp\) 可以将串 \(S\) 分成 \(AB\) 两部分,一种方案是对 \(AB\) 直接拼接,另一种方案是将 \(B\) 折叠进入 \(A\),按照这两种方案转移即可,记录一下
P2417 课程 题目大意: 有 \(m\) 个教室,\(n\) 个学生,存在一些关系,问是否所有学生都可以上课。 solution: 看到这种两个集合中的点有关系的题果断想到二分图。 样例图: 然后我们求出当前二分图的最大匹配,若最大匹配数等于教室数,就满足题意。 细节处理: 邻接表数组要开足够! 多组数据别
题目链接:HRBUST 1214 方格取数 题目大意: 题解: 设\(dp[i][j][x][y]\)表示第一次走到\(i\)行\(j\)列,第二次走到\(x\)行\(y\)列时能取的数的最大和。 状态转移方程: \[dp[i][j][x][y]=max\{dp[i-1][j][x-1][y], dp[i][j-1][x-1][y],dp[i-1][j][x][y-1], dp[i][j-1][x][y-1]\}+num[i][