自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

中学生信竞

中学生信息学竞赛

  • 博客(160)
  • 收藏
  • 关注

原创 1006练习题

小爱特别喜欢素数,现在单纯的素数已经无法满足他的狂热了,他需要更多与素数相关的数!经过苦苦思考,他终于找了一种与素数相关的数——因子个数是素数的数,小爱称这样的数为因子素数。例如给定的序列是 1,3,5,2,4,6,那么它的子序列 1,5,2,6 是一个锯齿序列,因为它的差分序列是。的底板上,铺上数量若干的积木拼块,拼块之间不能重合。所谓锯齿序列,就是它的差分序列(由相邻数字的差组成的序列)是正负交替的。进制下最小的旋转减半数,所谓旋转减半数,就是将第一位数字移动到最后一位后,得到的新数字恰好在。

2022-10-06 03:37:21 652 1

原创 1005练习题

某个国家有若干个城市,每个城市生产或者消费一定量的物资,已知国家的生产和消费的总量恰好是相等的。开始时,编辑器的文本是空的,给定。给定每个顶点坐标,请统计这些三角形覆盖的总面积是多少(重复覆盖部分只计算一次)。单个字符串:表示编辑器最后所记录的文本内容。个等腰直角三角形,它们的底边都是坐标系的。轴,它们的直角顶点在第一象限里,其中第。请求出最少的移动总量,使得元素全部变成。单个整数:设所有的三角形的可见面积为。行两个整数,表示一个顶点的坐标。作为参数,编辑器将在文本的前。,则编辑器将会在文本的首位插入。

2022-10-05 03:36:11 560

原创 普及组初赛涉及的算法

【代码】普及组初赛涉及的算法。

2022-09-02 00:21:56 684

原创 慧通编程第4关 - 魔法学院第6课

代码】慧通编程第4关-魔法学院第6课。

2022-07-28 18:59:14 1139

原创 树形动态规划

树形动态规划。

2022-07-23 09:13:57 588

原创 慧通编程第5关 - 魔法学院第7课

代码】慧通编程第5关-魔法学院第7课。

2022-07-21 20:22:36 1288

原创 慧通编程入门课程 - 3色彩斑斓

以下代码中双斜杠后面的内容是刘老师的注释,不需要同学们输入

2022-07-07 18:47:15 366

原创 wzoi 1~200

#### 7 竖式计算

2022-07-06 00:48:26 882

原创 慧通编程入门课程 - 2A闯关

慧通编程入门课程 - 2A闯关

2022-07-05 15:38:28 523

原创 《算法竞赛进阶指南》0x50动态规划 - 状态压缩DP

《算法竞赛进阶指南》0x50动态规划 - 状态压缩DP

2022-06-24 07:04:58 147

原创 《算法竞赛进阶指南》0x50动态规划 - 数位DP

《算法竞赛进阶指南》0x50动态规划 - 数位DP

2022-06-12 07:39:13 210

原创 数学 - 同余问题

同余方程#include <bits/stdc++.h>using namespace std;void exgcd(int a, int b, int &x, int &y) { if (b == 0) { x = 1; y = 0; } else { exgcd(b, a % b, x, y); int t = x; x = y; y = t - a / b * y; } }int main() { int a, b, x, y

2022-05-13 18:18:53 200

原创 《算法竞赛进阶指南》0x50背包 - 完全背包

完全背包问题 (模板题)#include <bits/stdc++.h>using namespace std;int m, n;int f[209];int main() { cin >> m >> n; for (int i = 1; i <= n; i ++) { int w, v; cin >> w >> v; for (int j = w; j <= m; j ++) { f[j] = m

2022-05-13 16:44:05 292

原创 《算法竞赛进阶指南》0x50背包 - 01背包

最大价值(贪心)#include <bits/stdc++.h>using namespace std;int n, m; //物品数量,背包容量 struct info { double w, v, ratio; //重量,价值 }a[60];bool cmp(info x, info y) {return x.ratio > y.ratio;}int main() { cin >> n >> m; for (int i = 1;

2022-05-13 15:39:42 281

原创 欧拉计划 31~40

硬币求和#include <bits/stdc++.h>using namespace std;int a[10] = {1, 2, 5, 10, 20, 50, 100, 200}, n = 8;int f[209], m = 200;int main() { f[0] = 1; for (int i = 0; i < n; i ++) { for (int j = a[i]; j <= m; j ++) { f[j] += f[j - a[i]];

2022-05-10 20:25:03 221

原创 欧拉计划 21~30

21 亲和数#include <bits/stdc++.h>using namespace std;int f(int x) { int res = 1, t = sqrt(x); for (int i = 2; i <= t; i ++) { if (x % i == 0) { res += i + x / i; } } if (t * t == x) res -= t; return res;}int main() { int ans = 0;

2022-05-10 20:19:35 268

原创 欧拉计划 11~20

方阵中的最大乘积#include <bits/stdc++.h>using namespace std;int a[30][30], maxx;int dx[4] = {0, 1, 1, -1};int dy[4] = {1, 0, 1, 1};int main() { for (int i = 4; i <= 23; i ++) { for (int j = 1; j <= 20; j ++) { cin >> a[i][j]; }

2022-05-09 20:19:52 446

原创 欧拉计划 1~10

T1 3或5的倍数#include <bits/stdc++.h>using namespace std;int main() { int sum = 0; sum += (3 + 999) * (999 / 3) / 2; sum += (5 + 995) * (995 / 5) / 2; sum -= (15 + 990) * (990 / 15) / 2; cout << sum; return 0;}T2 偶斐波那契数#include &lt

2022-05-08 11:55:46 280

原创 数学 - 扩展欧几里得算法

扩展欧几里得算法用于解决二元一次不定方程、一次同余式、逆元等问题。二元一次不定方程二元一次不定方程的定义:ax+by=c,(a,b,c∈Z且a,b≠0)(1)ax + by = c,(a, b, c \in Z且a, b \neq 0) \tag{1}ax+by=c,(a,b,c∈Z且a,b​=0)(1)如果c=0c = 0c=0,则方程的整数解为:x=−bt,y=at,(t∈Z)x = -bt,y = at,(t \in Z)x=−bt,y=at,(t∈Z)如果ccc为负数,则(1)式两边乘以

2022-05-07 00:22:03 273

原创 细说背包问题 - 完全背包

分类背包模型的本质,就是从 n 种物品种选择若干,放入容量为 m 的背包。按照每种物品的数量,背包问题可以分成以下三种基本类型:01背包:每种物品只有 1 件,可以选择 0 件,可以选择 1 件完全背包:每种物品数量无限,可以选择 0 件,可以选择 1 件,可以选择 2 件…只要已选物品的总重量不超过背包容量多重背包:每种物品数量有限,可以选择 0 件,可以选择 1 件,可以选择 2 件…只要不超过该种物品的数量,且已选物品的总重量不超过背包容量这篇文章是关于完全背包。解题约定用f[i]

2022-04-29 02:42:33 1330

原创 NOIP 2012 普及组 摆花

摆花递归#include <cstdio>#include <iostream>using namespace std;const int MOD = 1000007;int n, m, a[105], f[105][105];//用x种花,摆放y盆的方案数 int dfs(int x, int y) { if (f[x][y]) return f[x][y]; if (y == 0) { f[x][y] = 1; //用x种花摆放0盆的方案数是

2022-04-25 20:24:51 294

原创 NOIP 2012 普及组 寻宝

寻宝#include <bits/stdc++.h>using namespace std;const int N = 10009, M = 109;int n, m, a[N][M], num[N][M], qty[N];int main() { scanf("%d%d",&n, &m); for (int i = 1; i <= n; i ++ ) { for (int j = 0; j < m; j ++ ) { scanf("%d%

2022-04-25 19:41:23 457

原创 NOIP 2012 普及组 质因数分解

质因数分解#include <bits/stdc++.h>using namespace std;int main() { int n; cin >> n; for (int i = 2; i * i <= n; i ++) { if (n % i == 0) { cout << n / i; return 0; } } return 0;}

2022-04-25 19:25:56 288

原创 数学 - 质数、约数

1620:质因数分解#include <bits/stdc++.h>using namespace std;int main() { int n; cin >> n; for (int i = 2; i <= n / i; i ++) { if (n % i == 0) { cout << n / i; break; } } return 0;}1621:轻拍牛头O(n * sqrt(a[i]))#inclu

2022-04-23 13:33:33 419

原创 细说背包问题 - 01背包

01背包解题这道题无法用贪心求解。例如样例2,如果用贪心思路,应该先装第 1 件物品,这样就无法装其它物品了,只能得到 15 的价值。贪心题在这里约定用f[i][j]表示将前 i 件物品 -> 容量为 j 的背包能够获得的最大总价值如果 j < w[i],则装不下第 i 件物品,这时候相当于将前 i - 1 件物品 -> 容量为 j 的背包,f[i][j] = f[i - 1][j]如果 j >= w[i],能装得下第 i 件物品。如果选择装第 i 件物品,它的价

2022-04-15 18:17:11 589

原创 细说背包问题 - 导入

从“数字金字塔”说起观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。在上面的样例中,13 -> 8 -> 26 -> 15 -> 24的路径得到的和最大:86。解题我们要在所有路径中,找到经过数字之和的最大值。每条路径都是可逆的,同一条路径,从上往下和从下往上,得到的数字之和是相同的。如果自上而下枚举的话,到最下面的第 n 行将得到 n 个数字,还需要再打擂台找最大值,

2022-04-15 15:48:52 366

原创 上海市计算机学会月赛 2022年4月丙组

闰年的判定#include <bits/stdc++.h>using namespace std;int main() { int y; cin >> y; if (y % 400 == 0 || y % 4 == 0 && y % 100 != 0) { cout << "Leap year"; } else { cout << "Common year"; } return 0;}打印栅格#inc

2022-04-11 20:10:58 850

原创 NOIP 2013 普及组 表达式求值

#include <bits/stdc++.h>using namespace std;stack <int> a; //数据栈 stack <char> b; //符号栈 map <char, int> m;//取出两个数字和一个运算符进行运算,结果放进数据栈 void calc() { int x = a.top(); a.pop(); int y = a.top(); a.pop(); cha

2022-04-04 20:17:10 477

原创 NOIP 2011 普及组 瑞士轮

#include <bits/stdc++.h>using namespace std;const int N = 2e5 + 10;int n, r, q;struct info { int id, s, w;}a[N], b[N];bool cmp (info x, info y) { if (x.s != y.s) return x.s > y.s; return x.id < y.id;}void merge() { int i = 1, j =

2022-04-04 20:14:35 410

原创 NOIP 2011 普及组 统计单词数

#include <bits/stdc++.h>using namespace std;int main() { string a, s, b; getline(cin, a); for (int i = 0; i < a.size(); i ++ ) { if (a[i] >= 'A' && a[i] <= 'Z') a[i] += 32; } getline(cin, s); for (int i = 0; i < s.siz

2022-04-04 20:11:34 488

原创 NOIP 2011 普及组 数字反转

直接while循环,取余即可#include <iostream>using namespace std;int main() { int n, ans = 0; cin >> n; while (n != 0) { ans = ans * 10 + n % 10; n /= 10; } cout << ans; return 0;}

2022-04-04 20:07:26 148

原创 NOIP 2010 普及组 三国游戏

暴力搜索#include <bits/stdc++.h>using namespace std;const int N = 510;int n, w[N][N]; //武将的默契值int a[N/2], b[N/2]; //小涵和计算机的武将序号 bool chosen[N]; //武将是否被挑选出来int ans; //最大默契值 //当前挑选小涵的第x个武将 void dfs(int x) { if (x > n/2) { int w1 .

2022-03-21 20:16:55 4687

原创 NOIP 2010 普及组 导弹拦截

#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int n;struct info { int d1, d2, maxx;}a[N];bool cmp(info i, info j) { return i.d1 < j.d1;}int main() { int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 &g

2022-03-21 17:11:39 616

原创 NOIP 2010 普及组 接水问题

#include <bits/stdc++.h>using namespace std;int n, m, x;int a[105];int main() { cin >> n >> m; for (int i = 1; i <= n; i ++ ) { cin >> x; int t = 1; for (int j = 2; j <= m; j ++ ) { if (a[j] < a[t]) t = j

2022-03-21 16:02:29 334

原创 NOIP 2010 普及组 数字统计

#include <bits/stdc++.h>using namespace std;int l, r, cnt = 0;int main() { cin >> l >> r; for (int i = l; i <= r; i ++ ) { int t = i; while (t) { if (t % 10 == 2) cnt ++ ; t /= 10; } } cout << cnt; retu

2022-03-21 15:11:24 162

原创 提高组复习一

前缀和与差分一维前缀和数组的递推公式一维前缀和数组的递推公式一维前缀和数组的递推公式   求a[l...r]的区间和求a[l...r]的区间和求a[l...r]的区间和   维护一维前缀和数组的时间复杂度是?利用前缀和数组区间求和的时间复杂度是?维护一维前缀和数组的时间复杂度是?利用前缀和数组区间求和的时间复杂度是?维护一维前缀和数组的时间复杂度是?利用前缀和数组区间求和的时间复杂度是?   

2022-03-19 16:23:13 188

原创 NOIP 2009 普及组 道路游戏

时间复杂度O(n3O(n^3O(n3)#include <bits/stdc++.h>using namespace std;const int N = 1009;int n, m, p;int gold[N][N]; //gold[i][j]:i号条路j时刻出现的金币int cost[N]; //cost[i]:i号工厂购买机器人的费用 int f[N]; //f[j]:j时刻得到的最多金币 int main() { cin >> n >&g.

2022-03-15 14:33:48 5003

原创 NOIP 2009 普及组 细胞分裂

#include <bits/stdc++.h>using namespace std;int n, m1, m2, s;int b[100], p[100]; //b1^p1 * b2^p2 * b3^p3 ...int main() { cin >> n >> m1 >> m2; int i = 2, cnt = 0, factors = 1; //product of factors; while (m1 != 1) { if

2022-03-14 16:53:29 424

原创 NOIP 2009 普及组 分数线划定

#include <bits/stdc++.h>using namespace std;int n, m;struct info { int k, s;}a[5009];bool cmp (info x, info y) { if (x.s > y.s) return true; if (x.s == y.s && x.k < y.k) return true; return false;}int main() { cin >&gt

2022-03-14 16:52:48 434

原创 NOIP 2009 普及组 多项式输出

#include <bits/stdc++.h>using namespace std;int main() { int n, a; cin >> n; for (int i = n; i >= 0; i --) { cin >> a; if (a == 0) continue; if (i != n && a > 0) printf("+"); if (a < 0) printf("-");

2022-03-14 11:52:42 539

空空如也

空空如也

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

TA关注的人

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