随笔分类 -  算法

摘要:问题描述 输入A,B两人的学分获取情况,输出两人GPA之差。 输入格式 输入的第一行包含一个整数n表示A的课程数,以下n行每行Si,Ci分别表示第i个课程的学分与A的表现。 GPA=Σ(Si*Ci) / Σ(Si)。 特殊地,如果Ci是'P'或者'N'(对应于通过与不通过),则第i个课程不记入GPA 阅读全文
posted @ 2020-01-21 19:44 zyddd915 阅读(873) 评论(0) 推荐(0) 编辑
摘要:匈牙利算法 Bfs判断是否为二分图 二分图建模多种算法 先来一发定理(再也不用担心我搞混最小路径覆盖点和最小路径覆盖边,做题也要注意问的是点还是边!!): 柯尼希定理:二分图最小点覆盖的点数=最大匹配数。 最小路径覆盖的边数=顶点数n-最大匹配数 最大独立集=最小路径覆盖=顶点数n-最大匹配数 二分 阅读全文
posted @ 2019-11-06 21:46 zyddd915 阅读(614) 评论(0) 推荐(0) 编辑
摘要:1.扩展KMP 2.最大表示法 3.最小表示法 (扩展KMP) hdu2594 模板题 #include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; /* * 扩展KMP 阅读全文
posted @ 2019-10-27 16:01 zyddd915 阅读(157) 评论(0) 推荐(0) 编辑
摘要:CF468C Hack It! 构造 #include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<stack> using namespace std; typedef long long ll; 阅读全文
posted @ 2019-10-23 20:36 zyddd915 阅读(93) 评论(0) 推荐(0) 编辑
摘要:树形DP P1352 没有上司的聚会 P1122 最大子树和 JLOI 侦察守卫 看了也不会!!!!!!!!!!!!!!!!!!!! 阅读全文
posted @ 2019-10-16 15:49 zyddd915 阅读(109) 评论(0) 推荐(0) 编辑
摘要:区间DP P1220 关路灯 代码: ```cpp #include <cstdio> #include <cstring> #define min(a,b) ((a)<(b)?(a):(b)) typedef long long ll; const int N = 55; const ll INF 阅读全文
posted @ 2019-10-16 13:06 zyddd915 阅读(124) 评论(0) 推荐(0) 编辑
摘要:一。组合数 for(int i = 0 ; i < n ; i++){ c[i][0] = 1; for(int j = 1 ; j <= i ; j++){ c[i][j] = c[i - 1][j - 1] + c[i - 1][j] % mod; } } 二。 二项式定理 : 杨辉三角联系求( 阅读全文
posted @ 2019-09-25 16:05 zyddd915 阅读(145) 评论(0) 推荐(0) 编辑
摘要:一。tanjian算法(强连通图) int s[MAXN], stop; int dfn[MAXN], low[MAXN]; int scccnt, sccnum[MAXN]; int dfscnt; inline void tarjan(int now){ dfn[now] = low[now] 阅读全文
posted @ 2019-09-20 19:01 zyddd915 阅读(148) 评论(0) 推荐(0) 编辑
摘要:一。唯一分解定理 vector<int> factor(int n){ vector<int> f; for(int i = 2 ; i * i <= n ; i++){ while(n % i == 0){ f.push_back(i); n /= i; } } if(n > 1) f.push_ 阅读全文
posted @ 2019-09-18 10:27 zyddd915 阅读(182) 评论(0) 推荐(0) 编辑
摘要:P 4513 单点修改 #include<cstdio> #include<cstring> #include<algorithm> #include<cctype> #define ll long long #define INF 0x3fffff #define clr(x) memset(x, 阅读全文
posted @ 2019-09-03 21:38 zyddd915 阅读(137) 评论(0) 推荐(0) 编辑
摘要:参考:https://hihocoder.com/discuss/question/4956 注意树状数组下标从1开始,所以在主函数运用的时候注意下标的改动 二维树状数组的运用: hiho1336 矩阵 matrix sum #include <iostream> #include <cstdio> 阅读全文
posted @ 2019-08-17 19:53 zyddd915 阅读(144) 评论(0) 推荐(0) 编辑
摘要:大数相加: 1 string sum(string s1,string s2) { 2 if(s1.length() < s2.length()) {string temp = s1;s1 = s2; s2 = temp;} 3 int i,j; 4 for(i = s1.length() - 1, 阅读全文
posted @ 2019-08-13 20:19 zyddd915 阅读(187) 评论(0) 推荐(0) 编辑
摘要:这类问题一般都有固定的公式,告诉大家一个技巧:二维的一般是an^2+bn+c, 三维的一般是an^3+bn^2+cn+d. 用待定系数法求出各个系数就OK了,不用想破脑筋找规律。。。。。。 0rz…..此乃神人 (1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析 阅读全文
posted @ 2019-08-08 21:22 zyddd915 阅读(1051) 评论(0) 推荐(1) 编辑
摘要:素数 也有很多种方法 放上比较喜欢的两种,刷的题还不多,不知道哪个更优。。。 int sushu(int n){ int k = sqrt(n); for(int i=2;i<=k;i++){ if(n%i==0) return 0; } return 1; } bool prime[MAX]; i 阅读全文
posted @ 2019-08-02 20:33 zyddd915 阅读(181) 评论(0) 推荐(0) 编辑
摘要:前缀和与差分 介绍:前缀和与差分是一种互补的状态,给定序列A,设其差分序列为B,则序列A的差分序列B的前缀和序列就是原序列A,A的前缀和序列S的差分序列也是原序列A。 关于一维前缀和,二维前缀和,差分的知识点总结参考:https://blog.csdn.net/K_R_forever/article 阅读全文
posted @ 2019-08-01 12:22 zyddd915 阅读(208) 评论(0) 推荐(0) 编辑
摘要:一。递归与递推 方法: 思维模式,找本题所用的思想,找到目标组数,创建数组按顺序依次选择被选择的数 问题边界 记录该数已选 求解子问题 回溯到上一问题,还原现场 常与枚举使用 例题:ch201 费解的开关(递归实现枚举,状态压缩) 1 #include<cstdio> 2 #include<cstr 阅读全文
posted @ 2019-08-01 10:24 zyddd915 阅读(155) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示