![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM,算法
文章平均质量分 67
Hormous的一天
这个作者很懒,什么都没留下…
展开
-
二分优化的暴力枚举
#includeint a[100005];int main(void){ int n,m,r,l; int sum; int teams; int max,min; int i,j; int mid; scanf("%d%d",&n,&m); //输入n个物品和m个人 for(i = 1;i <= n;i ++){ //输入n个物品各自的重原创 2017-12-09 09:49:09 · 291 阅读 · 0 评论 -
经典约瑟夫 + 类似约瑟夫
题目的链接:点击打开链接习题8.5——初级Time Limit: 1000MS Memory Limit: 131072KTotal Submissions: 2934 Accepted: 1604Description有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退原创 2017-12-27 16:23:16 · 293 阅读 · 0 评论 -
把链表转入成一个函数
第一次的尝试,暴力下移,直接提出来构造一个函数。有一个问题。这个函数中我们要修改head,但是原函数是不修改的可以按照算法书上的方案来进行,定义一个全局变量。但是全局变量是有害的,这个只能起一次作用,如果这个程序中有n多个链表呢这次的修改,不同,返回了head,有了一定的优化。缺点是程序员得非常认真的使用这个函数。如果忘了,程序就错误了。第三种方案这里传入一个指原创 2017-11-13 20:53:04 · 229 阅读 · 0 评论 -
矩阵的快速幂
#include//我需要构造一个结构来储存矩阵。typedef struct { long long a[3][3];}matrix;long long fastMod(long long n,long long mod){ matrix t,count; matrix temp,count2; t.a[1][1] = 1; t.a[1][2]原创 2017-11-10 14:05:04 · 125 阅读 · 0 评论 -
一个简单的深度搜索
#include #define MAX_N 100#define MAX_M 100using namespace std;int N,M;char field[MAX_N][MAX_M+1] = {{'.','W','.','W','.','.','.'},{'.','W','.','W','.','.','.'},{'.','W','.','W','.','.','.'},{'.'原创 2017-11-22 20:45:50 · 685 阅读 · 1 评论 -
农夫与牛问题的分析 ---二分法流弊
那么我现在想起了一句话,所有的n的二次方,都可以简化为nlogn了了,真的厉害,可以在大数据中大大简化。原创 2017-11-21 15:51:48 · 2112 阅读 · 0 评论 -
深度优化搜索 ---判断是否可以从给定整数中选出若干数,使它们的和恰好为k
//关于sort和二分法查找,就告一段落了,现在就开始对深度优化搜索来进行简单的尝试。#include #include #define MAX 5using namespace std;int a[MAX] = {1,2,4,7};int n,k;bool dfs(int i,int sum){ // 如果前面几项都计算过了,则返回sum的值是否和k相等 if原创 2017-11-18 13:54:55 · 5425 阅读 · 4 评论 -
我的背包 ,啊啊
#include//这是最基础的动态规划 让我在来领略一下这个思想。#define max(a,b) (a)>(b)?(a):(b)int main(){ int value[30]; int weight[30]; int dp[30][30];// 前半边的代表个数,后半边代表了重量,而整体代表了价值 memset (dp,0,sizeof(d原创 2017-11-17 15:09:22 · 127 阅读 · 0 评论 -
尺取法
尺取法经典例题#include <bits/stc++.h>using namespace std;const int MAX_P = 1e6+7;int P;int a[MAX_P];void solve(){ set<int> all; for (int i = 0;i < P;i ++){ all.insert(a[...原创 2018-03-07 19:22:31 · 277 阅读 · 0 评论 -
超大容量背包问题
超大背包问题:有n个重量和价值分别为w[i]和v[i]的物品,从这些物品中挑选总重量不超过W的物品,求所有挑选方案中价值总和的最大值。其中,1 ≤ n ≤ 40, 1 ≤ w[i], v[i] ≤ 10^15, 1 ≤ W ≤ 10^15.这个问题给人的第一感觉就是普通的01背包。不过,看完数据范围会发现,这次价值和重量都可以是非常大的数值,相比之下n比较小。使用DP求解背包为题的复杂度是O(nW...原创 2018-03-15 18:21:07 · 2767 阅读 · 5 评论 -
枚举的初识
枚举在某些题目中有着非常重要的作用。其中最方便的就是利用位运算来进行枚举,枚举2的n次方例题:这是一道典型的折半枚举例题,通过先枚举其中一半的数据,在通过数组储存起来。这样就可以进行排序后的二分搜索了。空间换时间 int n2 = n/2; for (int i = 0;i < 1 << n2;i ++){ ll sw = 0,sv = 0; ...原创 2018-03-11 09:31:57 · 140 阅读 · 0 评论 -
分块函数学习 I hate it + 优化
#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <cstring>using namespace std;int a[200005],belong[200005],L[200005],R[200005],ans[2...原创 2017-12-04 21:18:17 · 286 阅读 · 0 评论 -
快速分解质因子
#include #include using namespace std;int main(){ int n ; while (cin >> n){ for (int i = 2;i*i <= n;i ++){ if (n % i == 0){ while (n % i == 0) n /= i; cout << i << " "; }原创 2017-12-10 18:02:27 · 599 阅读 · 0 评论 -
埃氏筛法 —— 对素数的使用
#include #include #include using namespace std;int a[1000005];int main(){ a[1] = 1; a[2] = 0; for (int i = 2;i <= 1000000;i ++){ if (a[i] == 0) for (int j = 2;j * i <= 1000000;j ++){ a原创 2017-12-10 18:03:47 · 181 阅读 · 0 评论 -
枚举——三种解
第一种因为只有16种,可以快速枚举 用16个if第二种利用位运算 的 特殊来枚举#include using namespace std;int main(){ int a[6]; int n; cin >> n; while (n --){ for (int i = 1;i <= 5;i ++) cin原创 2017-12-10 19:00:10 · 271 阅读 · 0 评论 -
N 皇后问题 —— 递归求解
#include #include using namespace std;int N;int queenPos[100];//用来储存皇后的位置,最左上角是(0,0)void NQueen(int k);int main(){ cin >> N; NQueen(0); //从第0行开始摆皇后 return 0;}// 让我自己实现一下void N原创 2017-12-15 16:17:45 · 273 阅读 · 0 评论 -
母函数的学习
大神的链接经典无限模板#include#includeusing namespace std;#define M 1000int a[M],b[M];//a[M]中存最终项系数;b[M]中存取中间变量;int main(){ int m,n; int i,j,k; cout<<"请输入最初有几项表达式相乘: "<<endl; while (1原创 2017-12-22 21:32:11 · 144 阅读 · 0 评论 -
找单词——记录次数的动归,或者母函数
题目:点击打开链接#include #include #include #include using namespace std;int c1[60],c2[60];int a[30],b[30];int main(){ int n; scanf("%d",&n); while(n--) { for(int i = 1; i <= 26; i原创 2017-12-24 21:23:11 · 131 阅读 · 0 评论 -
母函数的初识——本拉登 hdu 1085
母函数——本拉登#include #include #include using namespace std;int num[10] ;int c1[100000] , c2[100000] ;int main(){ int i,j,k; while(cin >> num[1] >> num[2] >> num[5] && num[1] || num[2] || num[原创 2017-12-22 20:54:13 · 251 阅读 · 0 评论 -
一道暴力,用数学方法优化
The sum problem相关的整理讲解1讲解2#include #include #include #include using namespace std;int main(void){ //cout<<fixed<<setprecision(2); int N,m; while(cin>>N>>m && N||m) { for(int n=sqr原创 2017-12-20 10:30:31 · 157 阅读 · 0 评论 -
多重背包有个疑惑点
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 32929 Accepted Submission(s): 13826Problem Description原创 2017-12-18 20:49:32 · 162 阅读 · 0 评论 -
选课时间——深搜
又是一道完全不一样的深搜题目,绝望ing++http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1150http://acm.hdu.edu.cn/showproblem.php?pid=2079#include #include #include using namespace std;int score[10]原创 2017-12-15 20:29:25 · 448 阅读 · 0 评论 -
逆波兰表达式 —— 递归专题
#include #include #include using namespace std;double exp(){ //读入一个逆波兰表达式,并计算结果 char s[20]; cin >> s; switch (s[0]){ case '+': return exp()+exp(); case '-': return原创 2017-12-15 16:31:40 · 291 阅读 · 0 评论 -
一种的多重背包背包——Coin Change
http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1140我的暴力算法这是利用深搜的#include int sum,counter;const int a[5] = {1,5,10,25,50};void dfs(int recoder,int sum,int number){ if (number原创 2017-12-13 22:50:46 · 224 阅读 · 0 评论 -
大数计算优化
// 进行大数的相加#include #include #define LEN 101// 将火星由字符型转换为整型,并且放在数组的尾部void convert (char s[],int intS[]){ int i; int m;// 放在字符串中的位置 for (i = 0;i < strlen(s);i ++){ m = strl原创 2017-12-11 18:55:28 · 405 阅读 · 0 评论