算法
抑之
每段经历都应该被记住
展开
-
洛谷P1683 入门 题解
P1683 入门#include<bits/stdc++.h>using namespace std;int w, h, a[] = {0, 0, 0, -1, 1}, b[] = {0, 1, -1, 0, 0}, q, p, sum;//上下左右bool vis[55][55];char s[55][55];int dfs(int x, int y) { for(int i = 1; i <= 4; i++) { //四个方向遍历 int X = x + a[i]原创 2020-10-16 22:40:49 · 388 阅读 · 0 评论 -
洛谷P1460 健康的奶牛 题解
题目传送门#include<bits/stdc++.h>using namespace std;int v, a[27], g, w[16][27], c[27], minm = 1000000, len, s[27];bool vis[27];bool pd(int lenth){//判断当前是否已经满足牛牛维生素的需求量 int niu[27]; memset(niu, 0, sizeof(niu));//每次判断都进行初始化 for(int i = 1;原创 2020-10-15 23:13:40 · 418 阅读 · 0 评论 -
洛谷P1657 选书 题解
本题可用深搜进行解答,用二维数组进行存储每个人喜欢的两本书,如a[x][1 || 2] 代表第x个人喜欢的第1 或者 2 本书为多少,也方便进行操作。#include<bits/stdc++.h>using namespace std; int x, a[22][3], vis[22], t, num;void dfs(int t) { if(t == x + 1) { //如果 人数遍历完了则多一个答案 num++; } else { for(int i = 1; i &原创 2020-10-14 23:08:19 · 234 阅读 · 0 评论 -
洛谷P1757 分组背包题解
题目传送门题目描述自 01 背包问世之后,小 A 对此深感兴趣。一天,小 A 去远游,却发现他的背包不同于 01 背包,他的物品大致可分为 k 组,每组中的物品相互冲突,现在,他想知道最大的利用价值是多少。输入格式两个数 m,n,表示一共有 n 件物品,总重量为 m。接下来 n 行,每行 3 个数 a,b,c,a表示物品的重量,b利用价值,c所属组数。输出格式一个数,最大的利用价值。输入输出样例输入45 310 10 110 5 150 400 2输出10说明/提示1≤m原创 2020-10-13 20:44:25 · 585 阅读 · 0 评论 -
糖果 题解
题目入口状压dp例题,| 二进制取反, > 二进制左移,学到了写出来状态方程就行了```cpp#include<bits/stdc++.h>using namespace std;#define ll long longusing namespace std;const int maxn=(1<<21);int dp[maxn],candy[1000];int main(){ int n,m,k; int i,j; int a;原创 2020-10-08 18:18:22 · 316 阅读 · 0 评论 -
欧拉筛法(线性筛)的学习理解(转载)
转载自 作者:彤云望月原文博客前言在刚接触编程语言时,对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期。在数论的学习中,我学到了埃氏筛法,O(nloglogn)的算法,而在一些数据范围达到1e7这样的题目中,也很难让人满意,于是我便学习了欧拉筛法,也即 O(n)的线性筛法。埃氏筛法埃氏筛法的基本思想 :从2开...转载 2020-02-24 10:43:42 · 426 阅读 · 1 评论 -
关于尺取法的简单例题
什么是尺取法?尺取法也叫双指针,当然不是传统意义上的指针,是取两个下标(通常是数组或区间的两端端点)组成一个区间,跟据需要进行改变区间的大小从而解决问题的方法。比传统暴力求区间时间复杂度小得多,为高效枚举区间的方法。通常用在哪些问题上?尺取法用在知道区间有规律或知道有变化趋势,通俗一点是知道需要区间的要求,才能用得上尺取法。列一个关于尺取法的简单例题给出n个数字,以及一个数s,在这n个数...原创 2020-02-12 23:12:51 · 183 阅读 · 0 评论