http://poj.org/problem?id=3233 1 #include <iostream> 2 3 using namespace std; 4 5 const int N = 50; 6 int n, k, mod; 7 8 // 定义结构体 9 struct mat { 10 int m[N][N]; 11 mat () { 12 memset(m, 0, sizeof m); 13 for (int
比赛链接:https://atcoder.jp/contests/abc212/tasks A - Alloy 代码 #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int a, b; cin >> a >> b; if (a > 0 and b > 0)
做了几道个二维数组的题目与简单的二维数组题目 对二维数组的更深理解,对tic-tac-toe的编写: 首先要列出矩阵: final int SIZE = 3; //读入矩阵 int[][] broad = new int[SIZE][SIZE]; boolean gotResult = false; int numOfX = 0
B.Black and white 题意: 一个nxm的白色棋盘,在上边放上黑棋,放黑棋是有代价的,但是如果两行两列的四个焦点中有三个已经放上了,另外一个可以不花费任何代价放上该枚棋子,问放满棋盘的最小代价为多少? A(i+1) = (Ai * Ai * b + Ai * c + d)% p Where A(m*(i-1)+j) is the cost c(i,
这是一道状压 DP 题,我厚颜无耻地看过题解发现其中有些卡常技巧惊为天人,于是我把它总结、记录了一下。当然,不敢发出去审核。。。 原题传送门 思路 题目要求从 \(n\) 个砝码里面去掉 \(m\) 个,那很自然的朴素想法是一个DFS跑过去,然后筛选出一种合法的方案,再套一个01背包统计一下答案
深搜与广搜 + generator与普通函数 四重实现 深搜-dfs-深度优先遍历 import jsdom from 'jsdom' const dom = new jsdom.JSDOM(` <!DOCTYPE html> <body> <div> <div> <span></span> <span></span>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=d
归并排序(Merge Sort):是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法的一个非常典型的应用。 算法思路 把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。 package sort; import
所谓螺旋矩阵就是形如 这个题目的解法就是采用模拟的思想,模拟的是旋转的过程,这是按顺时针模拟的,首先i不变,j每次加一,当j达到边界之后,j保持不变,i加1,当i到达边界之后,i不变,j减1,当j到达边界之后,j不变,i减1。每一轮都按这个思想处理即可,问题在于边界怎么计算,就是简单的n吗,当然不是
前言 情况说明:本人目前技术栈是Java这一套,所以这里提及的运算符测试都是在Java语言中的,不能保证在其他语言中也适用 作为一个程序员,你一定遇到过写的代码在你的逻辑里面没有问题,但是一运行就error满天飞。下面来看一个踩坑场景,求取 n 与 2倍m 的和: /** * 求取 n 与 2
显然这种题我们可以打个表来帮助我们思考问题。 枚举 \(i\) 的每一个非 \(1\) 和 \(i\) 的因数 \(j\),判断 \(i-j\) 是否为必败态,若是,则 \(i\) 为必胜态;反之 \(i\) 为必败态。 可以采用复杂度为 \(\Theta(n\sqrt{n})\) 的代码进行打表: /* I will never forget it. */ // 39269
A. PizzaForces 题意 有三种披萨制作方案:15分钟制作6片、20分钟制作8片和25分钟制作10片。 问制作出至少 n n n片披萨要多少分钟 分析 三种方案的效率都一样,都是每分钟制作0.4个披萨,也就是
连号区间数 问题描述 在 1~N 的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个 长度为 R-L+1 的“连续”数列,则称这个区间连号区间。 输入格式 第一行是一个正整数 N (1 <= N <= 500
题目链接 利用回文树求前缀后缀的回文子串数,枚举计算答案即可。 int main() { #ifdef LOCAL INPUT; OUTPUT; #endif // scanf("%d", &n); scanf("%s", S + 1); n=strlen(S+1); LL cnt = 0; memset(R, 0, sizeof R); for (int
题目大意 给出一个长度为 n n n的数组 a 1 ,
7.30笔记 共享库的制作和使用 命名规则 lib + 名字 + .so 制作步骤 生成与位置无关的代码(生成与位置无关的.o)将.o打包成共享库(动态库) #使用g++编译器 g++ -fPIC -c *.cpp -I../include #生成与位置无关的.o #打包成动态库 g++ -shared *.o -o libmytest.so -I../include mv
这一场div2主要偏向于公式的推导对于时间复杂度的优化。这要求我们对于生活中的一些数字图案具有一定的敏感度。 题目中给了我们许多的提示,比如1e5的数据量,如果我们采取逐个配对的方法,那么时间复杂度一定会超时。再考虑到各种数据结构的嵌套中,并
802. 区间和 - AcWing题库 C++ pair的基本用法总结(整理)_sevenjoin的博客-CSDN博客_c++ pair for(auto i : v)遍历容器元素 - ostartech - 博客园 (cnblogs.com) #include <iostream> #include <vector> #include <algorithm> using namespace std; typedef pair<int, int> PI
题目 https://leetcode.com/problems/01-matrix/ 题解 这题很有趣,图解一下思路吧~ 可以想象成“感染”的过程。 从 1 开始逐层向外扩散,感染的数字 depth 每轮 +1,直到所有格子全部感染为止。 为了避免重复路径,每次判断即将感染的格子是否大于当前的感染数字 depth。 class S
史上最易懂的后缀自动机讲解!独创理解思路还有例题讲解~ O(nlogn) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=100010; int wa[N],wb[N],wv[N],wss[N],rak[N],height[N],cal[N],n,sa[N]; char s[N]; int cmp(int *r,int a,int b,int l) {ret
Description 给你一颗n个点的树,边有边权。有m次询问,每次询问给出[l,r],要求编号为[l,r]之间的点组成的虚树边权和*2。 n , m ≤ 1
题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=6955 题目大意:给一个长度为n的序列,求一个区间[l,r]使a[l]^a[l+1]^...^a[r]>=k,输出满足条件最短的区间长度。 解题思路:(我是笨蛋看题解依然不会,感谢王同学的耐心讲解) 对于异或有以下性质: 如果a ^ b =c;那么 c ^ a = b 我们不
1.1 可调用对象(Callable Objects) 可调用对象有如下几种: 函数指针 具有operator()成员函数的类对象(仿函数) 可被转换为函数指针的类对象 类成员(函数)指针 以上涉及的对象可以像一个函数一样做调用操作,统称为可调用对象。现在,C++11通过提供std::function和std::bind统一了可调
摘要 最近stm32一个项目需要用到串口屏,串口WiFi,和调试串口,用hal库提供的API用起来比较繁琐,所以想重定向printf,实现多个串口printf函数,用起来比较方便,所以有了这篇博客。 正题 方法一 用c库的vsnprintf函数,这个函数包含在stdio.h里 extern _ARMABI int __ARM_vsnprintf(char
没有障碍物的时候 选择立扣第 62 题 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 分析 原问题和子问题 可以使用动态