NOIP
ypeijasd
山西大学附属中学信息学竞赛教练,爱编程、爱算法、爱生活、爱运动
展开
-
深度优先搜索
深搜题目原创 2022-12-07 14:20:59 · 350 阅读 · 0 评论 -
字符串输入的一些技巧与坑点
字符串输入的一些技巧与坑点原创 2022-11-21 12:30:00 · 655 阅读 · 0 评论 -
树形dp经典题目
树形动态规划经典题目原创 2022-11-19 20:16:46 · 190 阅读 · 0 评论 -
历年CSP-J第二轮题目
历年CSP-J第二轮题目原创 2022-10-29 16:33:19 · 1679 阅读 · 0 评论 -
P1217 [USACO1.5]回文质数 Prime Palindromes
打表原创 2022-10-22 12:09:05 · 181 阅读 · 0 评论 -
复合运算符+=注意事项
复合运算符注意事项原创 2022-10-21 09:01:40 · 169 阅读 · 0 评论 -
造数据代码-生成随机数
造数据代码-生成随机数原创 2022-10-12 08:41:45 · 439 阅读 · 3 评论 -
Jzoj 动态规划算法部分题目(共16题)
Jzoj 动态规划算法部分题目(共16题)原创 2022-10-10 09:19:23 · 426 阅读 · 0 评论 -
Jzoj 递推算法部分题目(共7题)
Jzoj 递推算法部分题目(共7题)原创 2022-10-10 09:11:14 · 270 阅读 · 2 评论 -
Jzoj 贪心算法部分题目(共7题)
Jzoj 贪心算法部分题目(共7题)原创 2022-10-10 09:06:42 · 286 阅读 · 0 评论 -
Jzoj 模拟算法部分题目(共7题)
Jzoj 模拟算法部分题目(共7题)原创 2022-10-10 09:02:40 · 499 阅读 · 0 评论 -
Jzoj 枚举算法部分题目(共12题)
枚举原创 2022-09-03 10:20:27 · 976 阅读 · 0 评论 -
差分约束题目
P3275 [SCOI2011]糖果#include <bits/stdc++.h>using namespace std;const int N=100010, M=300010;#define LL long long int n, k, x, a, b, tot, head[N]; LL dis[N], ans, cnt[N];bool vis[N];queue<int> q;struct node{ int to, dis, nex;}e[M];原创 2022-04-18 16:22:53 · 282 阅读 · 3 评论 -
宽度优先搜索
宽度优先搜索的一些题目原创 2022-04-17 18:49:26 · 1541 阅读 · 3 评论 -
拓扑排序
P4017 最大食物链计数#include <bits/stdc++.h>using namespace std;int n, m, dp[5010], mod=80112002, rd[5010], cd[5010], tot, head[5010], u, v, ans;queue<int> q;struct node{ int to, nex; }edge[500010];void add_edge(int u, int v){ tot++; edg原创 2022-04-02 16:53:30 · 378 阅读 · 0 评论 -
信息学竞赛快读
快读inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();} return x*f;}原创 2022-03-20 20:51:09 · 356 阅读 · 0 评论 -
最短路部分题目
一、floyed 时间复杂度O(n^2), 空间复杂度O(n^2)P1359 租用游艇#include <bits/stdc++.h>using namespace std;#define INF 10000000int n, g[201][201], dis[201], vis[201];int main(){ cin >> n; //初始化 for(int i=1; i<=n; i++){ for(int j.原创 2022-03-19 18:31:42 · 546 阅读 · 0 评论 -
并查集题目(路径压缩、扩展域并查集、带权并查集、二维转一维并查集、逆向思维并查集)
P2814 家谱#include <bits/stdc++.h>using namespace std;int len, cnt, father, fa[50010];string s;map<string, int> m;string a[50010];int find(int x){ if(fa[x]==x){ return x; } else return fa[x]=find(fa[x]);}int main(){ while(cin&g原创 2022-03-17 23:01:32 · 674 阅读 · 0 评论 -
线段树板子
P3372 【模板】线段树 1建树区间加区间查询和#include <bits/stdc++.h>using namespace std;int n, m, a[100010], opt, x, y, k;struct SegmentTree{ int l, r; long long sum, lazy; }t[400010];//建树 build(1, 1, n); void build(int p, int l, int r){ t[p].l=l;原创 2022-03-14 22:42:51 · 568 阅读 · 0 评论 -
最小生成树
P2872 [USACO07DEC]Building Roads S#include <bits/stdc++.h>using namespace std;int n, m, u, v, fa[1010], total;double x[1010], y[1010], ans;struct node{ int from, to; double dis;}edge[1000010];bool cmp(node a, node b){ return a.dis<b.原创 2022-03-01 11:42:18 · 312 阅读 · 0 评论 -
P1144 最短路计数
#include <bits/stdc++.h>using namespace std;#define N 1000010 #define mod 100003vector<int> a[N];queue<int> q;bool vis[N];int n, m, u, v, dis[N], ans[N];void bfs(){ q.push(1); vis[1]=true; while(!q.empty()){ u=q.front(); .原创 2022-02-28 20:45:35 · 110 阅读 · 0 评论 -
概率、期望
P4316 绿豆蛙的归宿#include <bits/stdc++.h>using namespace std;int n, m, u, v;double w, ans;bool vis[100010];struct node{ int to; double dis; }asd;vector<node> a[100010];//从x出发, 当前走了curdis,总共经过点的分支乘积 void dfs(int x, double curdis, doubl原创 2022-02-23 14:18:40 · 177 阅读 · 0 评论 -
二叉堆题目
P3378 【模板】堆方法一#include <bits/stdc++.h>using namespace std;int n, op, tot, x, hp[1000010];//往堆里push一个数x,并且形成新的小根堆 void pus(int x){ tot++; hp[tot]=x; //将新加进来的数字放在堆的最后个位置 int now=tot; while(now>1){ //然后开始往上冒 if(hp[now/2]>hp[now]原创 2022-02-19 18:24:30 · 471 阅读 · 0 评论 -
欧拉路和欧拉回路
欧拉路:每条边只经过一次,有两个度为奇数的点欧拉回路:从某个点出发,每条边只经过一次,所有点的度均为偶数欧拉路的题目:P2731 [USACO3.3]骑马修栅栏 Riding the Fences#include <bits/stdc++.h>using namespace std;int m, n, a[501][501], u, v, start=1, ans[1026], tot, degree[501];void dfs(int u){ for(int v原创 2022-02-18 10:15:07 · 408 阅读 · 0 评论 -
二叉树部分的题目
二叉树的存储P4715 【深基16.例1】淘汰赛#include <bits/stdc++.h>using namespace std;int n, id, value[260], win[260], total, ans;void dfs(int cur){ if(cur>total-1){ return; } int leftid=2*cur; int rightid=2*cur+1; dfs(leftid); dfs(rightid); if(val原创 2022-02-11 15:08:59 · 644 阅读 · 0 评论 -
stl set
P2234 [HNOI2002]营业额统计#include <bits/stdc++.h>using namespace std;int n, x, ans;set<int> s;set<int>::iterator iter, before;int main(){ scanf("%d", &n); scanf("%d", &x); s.insert(x); ans+=x; for(int i=2; i<=n; ++i)原创 2022-02-06 21:21:10 · 555 阅读 · 0 评论 -
图的遍历和存储方式
vector存图P5318 【深基18.例3】查找文献#include <bits/stdc++.h>using namespace std;int n, m, u, v, asd;bool vis[100010];vector<int> a[100010]; //a[i][1]表示从i的第一条参考文献 queue<int> q;struct edge{ int from, to;}e[1000010];bool cmp(edge x, ed原创 2022-02-03 13:36:08 · 419 阅读 · 0 评论 -
队列思想的题目
P1540 [NOIP2010 提高组] 机器翻译#include <bits/stdc++.h>using namespace std;int n, m, x, ans;bool vis[1006];queue<int> q; int main(){ scanf("%d %d", &m, &n); //内存容量和文章长度 while(n--){ scanf("%d", &x); if(!vis[x]){ //不在内存中原创 2022-01-26 16:01:56 · 484 阅读 · 0 评论 -
链表思想的题目
P1160 队列安排用数组和结构题模拟链表#include <bits/stdc++.h>using namespace std;int n, m, k, p, x, head;struct node{ int data; int pre; int next;}a[100010];//将x插到y的左边 void insert(int x, int y){ //如果y左边没有同学 if(a[y].pre==0){ head=x; a[y].pre=x;原创 2022-01-26 15:51:36 · 530 阅读 · 0 评论 -
map用法简介
一维用法#include <bits/stdc++.h>using namespace std;map<char, int> a; int main(){ for(int i=1; i<=5; ++i){ char c='a'+i-1; a[c]=i; } for(char i='a'; i<='e'; ++i){ printf("%c %d\n", i, a[i]); } return 0;} 二维用法P3613 【深基1原创 2022-01-25 17:20:41 · 661 阅读 · 0 评论 -
输入多个数,中间用空格隔开
问题像题目一样,确实很简单,不过有的学生理解不了,那三个数为例,写个博客帮学生理解一下吧。正确写法1#include <bits/stdc++.h>using namespace std;int a[4];int main(){ //一条scanf语句内, a[1],a[2],a[3]是三个不同的数组元素, //默认有空格隔开, 如没有空格, 则会理解为一个数 scanf("%d%d%d", &a[1], &a[2], &a[3]); //√原创 2022-01-23 19:32:26 · 9732 阅读 · 3 评论 -
Jzoj 进制与高精度部分代码(共23题)
1047: 【入门】正整数N转换成一个二进制数1080: 【基础】挑战赛第三题——二进制中的11557: 【入门】二进制中1的个数1127: 【入门】A类多?B类多?1258: 【基础】任意进制转换1288: 【基础】二进制转十进制1128: 【基础】二进制小数1843: 【基础】十六进制转换1300: 【基础】智破奇案1559: 【入门】N!中1的位置1916: 【基础】-2进制2492: 【提高】负进制1原创 2021-12-30 22:02:17 · 1139 阅读 · 0 评论 -
二分查找、二分答案
P1873 [COCI 2011/2012 #5] EKO / 砍树#include <bits/stdc++.h>using namespace std;int n, m, h, a[1000010];int l, r, mid;//检验锯片高度为hight时, 能否得到M米的木材 //时间复杂度O(n), 10^6 bool check(int hight){ long long sum=0; for(int i=1; i<=n; ++i){ if(a[i]原创 2021-12-25 22:35:31 · 1734 阅读 · 0 评论 -
一些不能起的变量名
int、double、float、charmax、min、pow、sqrtreturn、mainmapy1原创 2021-12-25 21:49:43 · 258 阅读 · 0 评论 -
素数环——深搜、回溯
#include <bits/stdc++.h>using namespace std;int n, tot;int a[17];bool vis[17];//判断x是否为质数 bool check(int x){ if(x<2){ return false; } for(int i=2; i<=sqrt(x); ++i){ if(x%i==0){ return false; } } return true; }//当前安排的是第几个位.原创 2021-11-28 17:15:29 · 224 阅读 · 0 评论 -
P1101 单词方阵
深搜的一道题#include <bits/stdc++.h>using namespace std;int n;char a[101][101];bool vis[101][101];int mx[9]={0, -1, -1, 0, 1, 1, 1, 0, -1};int my[9]={0, 0, 1, 1, 1, 0, -1, -1, -1};int ans[8][3];void dfs(int x, int y, char c, int dir){ if(c=='g原创 2021-11-18 22:20:32 · 391 阅读 · 0 评论 -
Jzoj 函数与递归部分代码(共27题)
1302: 【入门】挛生素数#include <bits/stdc++.h>using namespace std;int n;//判断x是否为质数 bool check(int x){ for(int i=2; i<=sqrt(x); ++i){ if(x%i==0){ return false; } } return true;}int main(){ scanf("%d", &n); for(int i=2; i<=n-原创 2021-11-07 22:14:30 · 1391 阅读 · 0 评论 -
Jzoj 数字方阵部分代码(共30题)
1208: 【入门】数字走向I#include<bits/stdc++.h>using namespace std;int n, a[11][11], cnt=1;int main(){ scanf("%d", &n); for(int i=1; i<=n; ++i){ for(int j=1; j<=n; ++j){ a[i][j]=cnt; cnt++; //场宽为3, 右对齐 printf("%3d", a[i][j]);原创 2021-10-15 11:36:35 · 3068 阅读 · 6 评论 -
Jzoj 条件循环(while,do while) 部分代码(共25题)
1020: 【入门】编程求1+3+5+...+n#include <bits/stdc++.h>using namespace std;int n, sum;int main() { scanf("%d", &n); for(int i=1; i<=n; i+=2){ sum+=i; } printf("%d", sum); return 0;}1012: 【入门】两数比大小#include <bits/stdc++原创 2021-10-05 20:44:19 · 1986 阅读 · 1 评论 -
Jzoj for循环(单重) 部分代码(共42题)
1002: 【入门】编程求解1+2+3+...+n#include <bits/stdc++.h>using namespace std;int n, sum;int main() { scanf("%d", &n); for(int i=1; i<=n; ++i){ sum+=i; } printf("%d", sum); return 0;}1020: 【入门】编程求1+3+5+...+n#include <bi原创 2021-10-04 12:47:29 · 2916 阅读 · 1 评论