自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

康康康康的博客

你若盛开,清风自来

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 组合数的逆元求法

#include <bits/stdc++.h>#define ll long longusing namespace std;const ll mod=1e9+7;const int maxn=1e5+7;ll fac[maxn];ll inv[maxn];ll C(int m,int n){ if(m>n) return -1; ...

2018-08-15 09:10:16 1317

原创 并查集模板(可直接用)

#include <bits/stdc++.h>using namespace std;const int maxn=1e5+7;int pre[maxn];int Find(int x){ int p,tmp; p=x; while(x!=pre[x]) x=pre[x]; while(p!=x) { ...

2018-08-12 15:30:25 5462 2

原创 中国剩余定理(不互质版)

      中国剩余定理...有点难懂呀,还是记一下模板好了 刚好接触到一道模板题,是在hdu上的 3579中国剩余定理(不互质)模板题暂时先把模板放在这里,等什么时候理解了中国剩余定理再回来写理解吧,目前还是就学着用一下模板吧///不互质的中国剩余定理///HDU3579亲测AC#include <iostream>#include <cstdio>...

2018-08-09 10:58:46 1254

原创 唯一分解定理

    不是最优的做法,就是简单的去除然后再判断,时间上面会有点慢,但是可以有所改进下面是代码实现#include <bits/stdc++.h>using namespace std;///时间复杂度有待优化,在div的那个for循环中时间复杂度为O(sqrtn)///优化可以先用筛法求出素数的个数,再去对素数进行循环vector<int> factorS...

2018-08-08 10:44:46 305

原创 欧几里德与扩展欧几里德

    欧几里德算法是辗转相除法的实现,辗转相除法的关键在于gcd(a,b)=gcd(b,a%b) 它和它的边界条件gcd(a,0)=a构成了以下代码。因为lcm*gcd=a*b,所以求出两个数字的最大公因子就可以求出它们的最小公倍数#include <iostream>#define ll long longusing namespace std;ll gcd(ll a...

2018-08-08 09:37:29 243

原创 Ascending Rating

 链接: 题目链接思路:    用单调队列来进行优化,在此复习一下什么是单调队列,单调队列里面存放的是一段区间里面按某种关系排列的单调序列,下面就以单调递减为例进行说明,在往单调队列里面添加元素的时候,如果队列的队尾比添加的元素要小得话,那就把队尾元素弹出,一直到队列为空或者队尾元素大于要添加的元素,再将要添加的元素添加进这个单调队列,原则就是,越晚添加的元素越有用,这样可以在O(...

2018-08-01 08:47:47 161

原创 Polyline Simplification

题意:   给你n+1个点,组成n条边,连续的三个点之间可以构成一个三角形,现在要求你删去其中的某些点,删点的规则是删去三角形面积最小的那个三角形中间的点,直到最后剩下m+1个点。连接:  CSU-2116传送门思路:   对于每一个点,除了端点外,维护它们的三角形的面积的最小值,以及它所对应的左边相邻的点与右边相邻的点,使用优先队列对面积进行从小到大排序,每次删掉一个点,需要...

2018-07-30 08:17:06 241

原创 统计难题(字典树模板题)

题意:    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀),这个题意还是很好理解的,输入方面稍微有一点点坑,但是习惯就好 = = 判断读入的是不是一串空得字符串,可以用gets()函数去实现,可以通过读入的字符串是不是为空判断。链接:   HDU 1251传送门...

2018-07-29 09:22:14 1465

原创 Big Event in HDU

题意:有N种物品,每种物品都对应一个M值,表示该物品有M件。要将这些物品能较好得平分给两个社团,即两个社团所得的价值总量差要使得最小,Computer College 所获得的价值应不小于Software College 所获得的价值思路:乍一看不知如果去解决,仔细一想发现其实可以转换成一个01背包问题,先求出所有物品合起来的价值最大值sum,那么对于Software College 来说就转...

2018-07-23 08:23:41 146

原创 Piggy-bank

题意:有一个小猪牌存钱罐,空的时候重量为E,装了钱之后重量为F,现在给你n种钱的重量与价值,问存钱罐中的钱的价值的最小值是多少。链接:HDU 1114传送门思路:一个背包问题,应该是一个完全背包问题,因为要求存钱罐中的最小值,则初始化时应该为最大值。代码:#include <iostream>#include <cstring>#include &lt...

2018-07-23 08:14:59 204

原创 Bone Collector

题意:Bone收藏家有一个人容量为V的背包,请问它最多能收藏多少价值的骨头,每个骨头都有其对应的价值与容量。链接:HDU 2602传送门思路:01背包的经典问题,这题数据较小,不用优化也能过。用dp来解01背包问题是一种比较常规的解法。引入dp[i][j]来表示在前i个物品中选择背包容量为j时所能达到的价值的最大值。代码:/**01背包**/#include <iostr...

2018-07-23 08:06:30 104

原创 命运

题意:yifenfei一开始在左上角,目的当然是到达右下角的大魔王所在地。迷宫的每一个格子都受到幸运女神眷恋或者痛苦魔王的诅咒,所以每个格子都对应一个值,走到那里便自动得到了对应的值。现在规定yifenfei只能向右或者向下走,向下一次只能走一格。但是如果向右走,则每次可以走一格或者走到该行的列数是当前所在列数倍数的格子,即:如果当前格子是(x,y),下一步可以是(x+1,y),(x,y+1)或...

2018-07-22 08:44:13 117

原创 免费馅饼

题意:在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼)链接:HDU 1176传送门思路:可以发现是一个变形的数塔问题,设置一个二维数组,二维数组的第i行第j列代表在第i秒有馅饼落在位置j。做法与数塔类似,...

2018-07-22 08:40:41 140

原创 数塔

题意:求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 连接:HDU 2084传送门思路:经典DP问题,一般采用自底向上的方法来处理,dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+a[i][j]  其中dp[i][j]代表的是走到第i行j列位置经过的节点的数字之和的最大值代码:#include <iostre...

2018-07-22 08:32:38 198

原创 Humble Numbers

题意:因子只由2,3,5,7组成的数字为Humble Numbers,问你第n个Humble Numbers是几。链接:HDU 1058传送门想法:Humble Numbers都可以写成2的几次方*3的几次方*5的几次方*7的几次方,可以用dp也可以直接打表来模拟,我用的是直接打表,也很快且容易理解代码:void init(){ num[1]=1; int a,...

2018-07-22 08:27:25 188

原创 Super Jumping! Jumping! Jumping!

题意:如下图所示,要从start跳到end,中间的棋子都有一个对应的数字,求经过的棋子上的数字之和的最大值是多少,只能按严格递增的顺序来查找。连接:HDU 1087传送门思路:求最长上升子序列的最大和代码:#include <iostream>#include <cstring>#include <algorithm>using na...

2018-07-22 08:21:06 102

原创 Common Subsequence

题意:就是求最长公共子序列,模板题链接:HDU 1159传送门想法:如果s1[i]==s2[j] 则 c[i][j]=c[i-1][j-1]+1 如果s1[i]!=s2[j] 则 c[i][j]=max(c[i-1][j],c[i][j-1])模板:#include <iostream>#include <cstring>#include ...

2018-07-22 08:10:17 2920

原创 Max Sum

题意:求出一个序列中连续某一段的和的最大值,并求出是从什么地方开始到什么地方结束链接:HDU 1003传送门想法:用一个变量来保存一段和,用max_sum来保存到目前为止连续区间的和的最大值,temp和last用来保存连续和最大值的两个边界,如果sum值小于0,那就让sum=0。并改变temp关键代码: int temp=1; int n; ...

2018-07-22 08:04:12 286

原创 LELE的RPG问题

题意:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.链接:HDU 2045传送门想法:假设RGP分别用123来表示,假设第一个方格为1,则第二个方格可能为2或者3,画图表示在第二个方格中2个不是1,所以在第三个方格中会有2个1,第三个方格中一个4个 在第三个方格...

2018-07-21 09:02:33 233

原创 统计问题

题意:在一个二维平面上,可以选择向上还是向左或向右移动,移动到的地方下次会立即坍塌,不能移动到已经坍塌了的地方,问移动n步有几种不同的情况链接:HDU 2563传送门想法:因为移动到的地方下次会立即坍塌,也就是说如果想右移动的下次就不能向左移动了因已经坍塌。所以向左向右移动的下次只有两种移动的方向。向上移动的有三种方向可以移动。在第 n-1 次移动中有 f(n-2) 次是向上移动的,不是很...

2018-07-21 08:51:41 432 1

原创 Tiling_easy version

题意:有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。(平铺类型的简单问题)链接:HDU 2501传送门想法:这是一个很简单的填充问题,当在2*(n-1)的基础上只能竖着放一个2*1的骨牌,在2*(n-2)的基础上可以横着放两个2*1的或者放一个2*2的。至于为什么不能竖着放两个2*1的是因为这种情况...

2018-07-21 08:45:59 432

原创 重建希望小学

题意:学校教室的长度为n米,宽度为3米,现在我们有2种地砖,规格分别是1米×1米,2米×2米,如果要为该教室铺设地砖,请问有几种铺设方式呢?链接:HDU 2190传送门想法:要铺设3*n的地砖,当在3*(n-1)的基础上放时,只有一种情况,就是放三个1*1的。当在3*(n-2)的基础上放时,有两种情况,一种是两个1*1的地砖在上面,2*2的在下面,还有一种是2*2的在上面1*1的在下面。所...

2018-07-21 08:41:09 385

原创 折线分割平面

题意:一条直线可以将一个平面分割成两个部分,两条折线可以将平面分割成7个部分,求n条折线可以将平面分割成几个部分链接:HDU 2050传送门想法:之前接触过直线分割平面的问题,每增加第n条直线,就会在原来的基础上增加n个平面,因为会增加n-1个交点。折线分割平面问题也是如果,在增加第n条折线的时候,会增加4*(n-1)个交点,也就是说会增加4*(n-1)+1个平面,可以用递推去求,也可...

2018-07-21 08:36:08 402

原创 母牛的故事

题意:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?链接:hdu 2018传送门想法:这与之前做过的兔子问题差不过,兔子是在第二年可以繁殖,此题每头小母牛从第四个年头开始,每年年初也生一头小母牛,则在第n年的时候,母牛的数量为n-1年已有的数量加上n-3年的数量,因为n-3年的母牛在在第n年的时候都具有生殖...

2018-07-21 08:25:21 413

原创 骨牌铺方格

题意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.链接:hdu 2046传送门想法:2*n的长方形方格中,可以在2*(n-1)的基础上加上一个1*2的骨牌,也可以在2*(n-2)的基础上将两个1*2的骨牌横着放,所以可以得到递推公式为cards[i]=cards[i-1]+cards[i-2];代码:long long cards[60...

2018-07-21 08:20:42 479

原创 一只小蜜蜂

题意:一只蜜蜂只能在蜂房上向右爬,求蜜蜂从蜂房a爬向蜂房b的路线数题目链接:点击此处到hdu 2044 想法:蜂房的结构如上图,首先可以发现蜜蜂从1号走到8号的路线数与蜜蜂从3号走到10号的路线数是一样的,并且如果起点是在下半区,则将其翻转一下也可以变成一样的。代码:#include <iostream>#include <algorithm>#i...

2018-07-21 08:15:15 162

原创 超级楼梯

题意:一共有M级台阶,一次可以走一步或者两步,问走上M级台阶有几种方案题目链接:HDU 2041传送门想法: 由于一次只能走一步或者两步,所以走上M级台阶是在 M-1 与 M-2 的基础上再向上走一步所形成的,可以得到它的递推公 式  为 p[i]=p[i-1]+p[i-2], p[i]表示走上第i级台阶的方案数。初始值为p[1]=0,p[2]=1,p[3]=2.心得:楼梯问题是一种比...

2018-07-21 07:54:38 200

原创 Doki Doki Literature Club(Zoj 4035)

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4035题意:给n个字符串,给个字符串对应一个值,要求从中选出m个字符串,使得(m-i+1)*字符串对应的值相加起来最大思路:存在结构体之后进行值得从大到小排序,如果值相等就按照字符串的字典序进行排序代码:#include <bits/stdc++.h>u...

2018-04-30 15:07:12 352

原创 浙江省赛--Lucky 7(Zoj 4036)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4036题意:给n个数,问这n个数中是否存在一个数加b之后是7的倍数,存在这样的数就输出'Yes',不存在就输出'No';思路:直接模拟#include <bits/stdc++.h>using namespace std;int main(){...

2018-04-30 15:00:26 302

原创 快速幂的递归与非递归写法

递归写法#include <bits/stdc++.h>using namespace std;int pow_mod(int a,int n,int m){ if(n==0) return 1; int x=pow_mod(a,n/2,m); long long ans=(long long)x*x%m; if(n%2==1)...

2018-03-26 20:23:33 957

原创 阶乘大全

n的阶乘的结果有几个零#include <iostream>using namespace std;int main(){ int n, ans = 0; cin >> n; while (n) { ans += n/5,n/=5; } cout << ans << endl; ...

2018-03-26 19:08:26 188

原创 分析外星信号

题意:给出长度为N的信号纪录时,编写程序计算总和等于k的子序列个数通过公式来生成输入值通过在线算法来编程,代码如下:#include using namespace std;struct RNG{    unsigned seed;    RNG():seed(1983) {}    unsigned next()    {        uns

2018-01-20 14:28:31 352

原创 hdu 1695 GCD

GCD数论专题,容斥与欧拉

2017-07-31 08:18:22 182

原创 逃离迷宫

逃离迷宫Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 27482    Accepted Submission(s): 6750Problem Description  给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,glo...

2017-07-16 10:36:38 551

原创 Largest Rectangle in a Histogram

题目:Largest Rectangle in a Histogram 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506

2017-05-23 21:45:42 153

原创 足球锦标赛

题目链接:http://acm.ecnu.edu.cn/problem/3267/足球锦标赛ECNU 足球锦标赛采用了最传统的计分牌来计分。每进一个球,计分员给对应的队要翻牌,使得计分板上显示的数加一。 如上图所示,计分板上的每一位都按顺序挂了 0 到 9 这 10 个牌子,所以可以表示 000 至 999。

2017-05-22 13:21:22 469

转载 合并果子

题目:合并果子 链接:https://vjudge.net/contest/162786#problem/D思路:将这一堆果子按从小到大进行排序,优先合并最小的两堆,再将合并之后的那堆果子给加到新的队列中。 重点:优先队列的使用

2017-05-17 17:41:55 2344

原创 文章标题

K - The kth great number

2017-05-16 17:15:16 145

原创 Easy Summation

快速幂的用法

2017-05-09 13:35:57 538

分治算法的典型例题

第K小数,快速幂,下载之后负责答疑哦 int cmp(int x,int y) { return x<y; } void Swap() { swap(a[i],a[j]); swap(i,j); } void Operation(int START,int END) { i=START; j=END; while(i!=j) { if(ia[j]) Swap(); else j--; } else { if(a[i]<a[j]) Swap(); else j++; } } if(i<k) Operation(i+1,END); else if(i==k) { for(l=1;l<=m;l++) if(b[l]==a[i]) { cout<<l<<"\n"; break; } } else Operation(START,i-1); }

2018-01-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除