算法
blainet
这个作者很懒,什么都没留下…
展开
-
最小公倍数
#include <iostream>#include <cstdio>#include <vector>#include <map>#include <cmath>#include <algorithm>using namespace std;map<int, int> prime_cnt, tmp_cnt; // 用于存放质因子以及其对应的最大次数void computePrimeFactorCoun原创 2021-03-28 21:03:20 · 70 阅读 · 0 评论 -
矩阵的快速幂
通常用在递归表达式中,将递归表达式(动态规划问题的通式)转化为矩阵参考:https://zhuanlan.zhihu.com/p/95902286#include <cstdio>#define MOD 100005typedef long long LL;struct Matrix{ LL a1, a2, b1, b2; Matrix(LL a1, LL a2, LL b1, LL b2) : a1(a1), a2(a2), b1(b1), b2(b2) {.原创 2021-03-25 13:32:12 · 143 阅读 · 0 评论 -
Z字形打印矩阵
参考:https://blog.csdn.net/acaiwlj/article/details/12070603#include <iostream>using namespace std;const int N = 500;int a[N + 10][N + 10];void inputMatrix(int row, int col){ for (int i = 0; i < row; i++) { for (int j = 0; j < col; j.原创 2021-03-22 15:13:35 · 257 阅读 · 0 评论 -
201509-1 数列分段
#include <iostream>using namespace std;int main(int argc, char const *argv[]){ std::ios::sync_with_stdio(false); int n; cin >> n; int prev; cin >> prev; int ans = 1; int num; while (--n) { cin >> num; if (num == pr原创 2021-03-21 17:38:06 · 62 阅读 · 0 评论 -
201512-2 消除类游戏
#include <iostream>#include <cstring>using namespace std;const int N = 30;struct ChessBoard{ // C++11支持在类定义的时候对属性赋初值(此处只是声明类,只有在类的实例调用构造函数时,才为该实例分配内存) int val = 0; bool deleted = false; // 标记是否可以消除 // ChessBoard() { // x = 0; //原创 2021-03-20 20:55:42 · 100 阅读 · 2 评论 -
201604-2 俄罗斯方块
解题思路对下降的方块确定上下左右界限,在地图中找到下降的起始列和结束列(和下降块匹配),遍历地图map,直到当前的位置的值和下降块该处的值相与,如果=1,说明找到了第一个可能是界限的行,然后从当前行进行遍历,遍历的方法是:假如下降块为:0 1 1 00 0 1 00 0 1 00 0 0 0分离之后的下降块为:1 10 10 1即只保留包含整个下降块的矩阵,然后用该矩阵去遍历分离出的map先从地图map中确认起始的列:n-1+left_boundary,结束列:n-1+right_b原创 2021-03-19 21:30:26 · 280 阅读 · 1 评论 -
201604-1 折点计数
#include <iostream>using namespace std;const int N = 1000;int a[N + 10]; // sales_volume// 所有评测用例满足:1 ≤ n ≤ 1000,每天的销售量是不超过10000的非负整数int main(int argc, char const *argv[]) { std::ios::sync_with_stdio(false); int n; cin >> n; for (in原创 2021-03-18 16:10:26 · 75 阅读 · 0 评论 -
201609-2 火车购票【模拟】
#include <iostream>#include <cstring>using namespace std;int left_seat[21]; // 共20排,100个座位int row_start[21]; // 记录每次访问该排时的起点位置int main(){ std::ios::sync_with_stdio(false); int n; cin >> n; for (int i = 1; i <= 20; i++) {原创 2021-03-18 15:38:51 · 171 阅读 · 1 评论 -
201409-2 画图
memset包含在cstring头文件中,否者编译错误#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 100;bool flag[N + 10][N + 10];struct Rectangle { int x1, y1, x2, y2; int getNum() { return (x2 - x1) * (y2 .原创 2021-03-16 21:28:57 · 80 阅读 · 0 评论 -
201403-2 窗口
没有考虑到剩余的窗口的层次顺序不变,得分90#include <iostream>#include <deque>#include <algorithm>using namespace std;const int N = 10;deque<int> pr; // Possible regionstruct Window { int x1, y1, x2, y2; bool top; // top-floor} w[N + 10];.原创 2021-03-16 00:15:24 · 76 阅读 · 0 评论 -
201403-1 相反数
#include <iostream>#include <algorithm>using namespace std;const int N = 500;int a[N + 10];int main() { int n; cin >> n; // 非零且各不相同 for (int i = 0; i < n; ++i) { cin >> a[i]; if (a[i] < 0) { a[i] = -a[i];原创 2021-03-15 20:54:46 · 60 阅读 · 0 评论 -
201312-2 ISBN号码
#include <iostream>#include <string>using namespace std;// 余数:reminderchar rem[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X'};int main() { string ISBN; cin >> ISBN; int sum = 0; int L = ISBN.size(); // 13 // 0-6原创 2021-03-15 20:35:57 · 81 阅读 · 0 评论 -
机器人策略
#include <iostream>using namespace std;int main_1() { int t; cin >> t; int dis, max_dis; while (t--) { max_dis = dis = 0; string s; cin >> s; for (int i = 0; i < s.size(); i++) { if (s[i] == 'L') { dis++; } els原创 2021-03-15 00:53:40 · 301 阅读 · 0 评论 -
201609-1 最大波动
/********************************************************************* 程序名:201609-1 最大波动 版权: 作者: 日期: 2021-03-13 22:27 说明: 对于所有评测用例,2 ≤ n ≤ 1000。股票每一天的价格为1到10000之间的整数*********************************************************************/原创 2021-03-13 22:48:26 · 68 阅读 · 0 评论 -
记最多公式
题目你和小军正在上一堂微积分的课。这堂课会持续 m分钟,并且在第 i分钟之内教授会讲授????????个公式。小军虽然对微积分很感兴趣,但是由于他昨晚没有睡好,所以偶尔会打瞌睡。给出一个长度为 m的数组 t,如果为 1,表示小军在第 i分钟之内是清醒的;如果为 0,表示小军在第 i分钟之内是睡着的。当小军是清醒的时候,他会记下这分钟内教授讲授的所有公式;但是他睡着了就是睡着了,什么事情也不会干。你有一个技巧,可以让小军连续 k分钟都保持清醒。但是这个技巧你只能使用一次,你可以在第 1到第 m-k+1 的任原创 2021-03-13 22:20:29 · 292 阅读 · 0 评论 -
Balanced Tunnel-隧道超车
根据出隧道时的第一个(vector元素的最后一个)来判断是否超车,如果in=out,即进入时的顺序和出去的顺序一样,说明没有超车,否者就从in中删除out的最后一个元素,即最先出隧道的车,并将cnt加1,cnt用于统计超车的数量。例如:样例 2 输入41 3 2 44 3 2 1输出3思路:进入时顺序(存放在in中):1 3 2 4出去顺序(存放在out中):4 3 2 1in != out --> 在in中删除值等于out.last:1 的元素,并将cnt++,统计超车的数原创 2021-03-13 17:49:59 · 695 阅读 · 1 评论 -
201612-2 工资计算
#include <iostream>#include <cstdio>using namespace std;const int T = 100000;int getTax(int s) { int t = 0; if (s <= 3500) { t = 0; } else { int a = s - 3500; if (a < 1500) { t = a * 0.03; } else if (a < 4500) {原创 2021-03-13 01:14:44 · 159 阅读 · 0 评论 -
201612-1 中间数
#include <iostream>#include <vector>#include <algorithm>using namespace std;int main() { int n; cin >> n; vector<int> a; while (n--) { int t; cin >> t; a.push_back(t); } sort(a.begin(), a.end()); int c原创 2021-03-13 00:02:06 · 105 阅读 · 0 评论 -
201703-1 分蛋糕
方案1#include <iostream>#include <cstdio>using namespace std;const int N1 = 1000;const int N2 = 10000;int a[N1 + 10];int main() { int n, k; scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); .原创 2021-03-11 17:53:09 · 85 阅读 · 0 评论 -
201709-1 打酱油
/********************************************************************* 程序名: 201709-1 打酱油 版权: 作者: 日期: 2021-03-10 16:08 说明:问题描述 小明带着N元钱去买酱油。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。请问小明最多可以得到多少瓶酱油。输入格式 输入的第一行包含一个整数N,表示小明可用于买酱油的钱数。N是10的整数倍,原创 2021-03-10 16:26:21 · 63 阅读 · 0 评论 -
201712-1 最小差值
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int N1 = 1000;const int N2 = 1000;int a[N1 + 10];int main() { memset(a, 0, sizeof(a)); int n; sc原创 2021-03-09 17:57:09 · 54 阅读 · 0 评论 -
201803-2 碰撞的小球
#include <iostream>#include <algorithm>using namespace std;const int N = 100;class Ball { public: int id; // 标记 int pos; int v; // velocity} b[N + 10];bool cmp_pos(Ball b1, Ball b2) { return b1.pos < b2.pos;}bool cmp_i原创 2021-03-08 22:53:05 · 144 阅读 · 0 评论 -
201803-1 跳一跳
#include <stdio.h>int main(void) { int n, p, t, cnt = 1; int ans = 0; do { scanf("%d", &p); if (p == 1) { ans++; cnt = 1; } else if (p == 2) { ans += 2 * cnt++; } } while (p != 0); printf("%d\n", ans); return 0;}原创 2021-03-08 19:42:18 · 73 阅读 · 0 评论 -
201812-1 小明上学
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 100;pair<int, int> p[N + 10];int main() {// freopen("in.txt", "r", stdin); int R, Y, B; scanf("%d%d%d", &R, &Y, &B); i原创 2021-03-06 18:25:26 · 70 阅读 · 0 评论 -
201903-2 二十四点数
#include <iostream>#include <cstring>#include <cstdio>#include <string>#include <algorithm>#include <stack>#include <map>// 嫌弃太长,直接使用// #include <bits/stdc++.h>using namespace std;stack<int>原创 2021-03-05 22:02:30 · 118 阅读 · 0 评论 -
201903-1 小中大
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>using namespace std;int main(int argc, char const *argv[]) {// freopen("in.txt", "r", stdin); int n; scanf("%d", &n); vector<int> v; for原创 2021-03-05 17:44:07 · 62 阅读 · 0 评论 -
201909-2 小明种苹果(续)C++(100分)
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int N = 1000;int at[N + 10]; // array tempint main() {// freopen("in.txt", "r", stdin); memset(原创 2021-03-04 23:09:49 · 136 阅读 · 1 评论 -
CCF/CSP 202006-1 线性分类器
CCF/CSP 202006-1 线性分类器#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define _for(i, a, b) for(int i = a; i <= b; i++)using namespace std;int aA[3];int aB[3];const int N = 1e+3;struct Node {原创 2021-03-02 00:17:42 · 163 阅读 · 0 评论 -
C/C++各种整型数值表示的范围
C/C++各种整型数值表示的范围int -2147483648 ~ 2147483647 (-2^31 --> 2^31-1)unsigned int 0 ~ 4294967295 (0 --> 2^32-1)long -2147483648 ~ 2147483647 (-2^31 --> 2^31-1)unsigned long 0 ~ 4...原创 2019-10-17 00:02:44 · 2756 阅读 · 0 评论