自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ONE MORE TRY

把该做的做好就好了!

  • 博客(95)
  • 问答 (2)
  • 收藏
  • 关注

原创 51nod 1119【杨辉三角】

思路: = =杨辉三角的应用,组合数的应用; C(N+M,N); 逆元一发,费马小定理,OK。

2016-08-31 23:51:50 567

原创 51nod 1268【dp】

思路: 很水的dp吧。。。问的都是能否组成。。#include<cstdio>#include <map>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef __int64 LL;const int N=25;int a[N];int dp[20000007];int n

2016-08-31 23:46:28 73

原创 51nod 1004 【快速幂】

思路: 掐住最后一位,快速幂一发就好了#include<cstdio>#include <map>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef __int64 LL;int cal(int g,int x){ int ans=1; while(g)

2016-08-31 23:44:12 467

原创 51nod 1276 【离线处理】

思路1.: 离线处理; 具体就是把岛屿离线然后按照高度排序,把query按照从高到低排序,然后每次query只要从最高的岛屿开始找起,判断条件:如果他旁边都是没有被找过的(也就是默认是海),那么数量+1,如果两边都是岛屿,那么数量-1,我们不需要判断一边是岛屿,一边是海没意义 思路2.: 还有一个可以在线算答案 具体: 具体找出峰值谷值,用两个数组存一下,排序。然后每次二分找一下,就可以

2016-08-31 23:42:39 318

原创 51nod 1050【DP】

思路: 就是先正常的dp一下求一个最大连续子串,然后特殊情况就是sum-最小连续子串。。 比一比谁大谁小就好了#include <stdio.h>#include <string.h>#include <iostream>using namespace std;typedef long long LL;const int N=5e4+10;const LL INF=5e13+10;LL

2016-08-31 23:40:11 295

原创 51nod 1433【数学】

思路: 不晓得阿,n%9==0即n数值各个位加起来要%9==0; 如果知道这个,那么%90==0就是末尾多个0就好了,那么后面就是随便搞吧;#include <stdio.h>#include <string.h>#include <iostream>using namespace std;typedef long long LL;const int N=1e3+10;int a[N];

2016-08-31 23:35:38 304

原创 51nod 1003【数学】

思路: 2和5能构成0,然后就是看2和5因子组成个数,然而我们知道,1-n中2的因子数肯定>5的,所以我们只要求一下1-n中5的因子个数就好了。。。#include <stdio.h>#include <string.h>#include <iostream>using namespace std;typedef long long LL;//求1-n有x因子的个数,给出一个n;int ma

2016-08-31 23:33:24 464

原创 51nod 1062【水题】

直接打表构造啊#include <stdio.h>#include <string.h>#include <iostream>using namespace std;typedef long long LL;const int N=1e5+10;int a[N];int d[N];void init(){ d[0]=a[0]=0; d[1]=a[1]=1; int

2016-08-31 23:30:37 316

原创 51nod 1092【区间dp】

思路: 简单的区间dp,从小区间到大区间,随便写。 还有一种是那啥,n-LCS。。。具体不说了,赶时间)))= =、#include <stdio.h>#include <string.h>#include <iostream>using namespace std;typedef long long LL;const int N=1e3+10;char s[N];int dp[N][

2016-08-31 23:29:33 330

原创 51nod 1094 【水题】

#include <stdio.h>#include <string.h>#include <iostream>using namespace std;typedef long long LL;const int N=1e4+10;LL a[N];int n;int main(){ int s,t; LL sum=0,k; scanf("%d%lld",&n,&k)

2016-08-31 23:27:36 452

原创 51nod 1103【鸽巢原理】

思路: 这道题嘛有些弯还是要转的,比如你说让你搞n的倍数,你别老老实实照她的意思去啊,倍数可以除法,取膜 。 因为n个数我们可以求前缀和然后取膜,对n取膜的话有0-n-1种情况,所以方案一定是有的,说的好听一点就是因为鸽巢原理,如果取膜=0那直接输出,如果有两种相等的,减一下输出就好了,一定会存在,而且不用判没有情况的。)虽然我判了。。。#include <stdio.h>#include <

2016-08-31 23:24:21 436

原创 51nod 1272【二分+RMQ】

思路: 这题不能说是长见识,倒是第一次写这么富有套路的题,倒着来,二分区间嘛,这个很简单啊,二分的条件查询一个当前区间的最小值是不是比那个特定的值小,一步步缩小,这就是二分嘛,然后查询用线段树的RMQ写法搞,logn。 二分的模型是0000000111111111这个,窝还是照着自己的两篇小博客写的,一个是线段树,一个是二分。。。然后过的///希望熟能生巧吧#include <stdio.h>

2016-08-31 23:08:16 376

原创 换个图。。。

2016-08-31 11:03:43 269

原创 加个图啊!!!

2016-08-31 10:35:42 419

原创 嘿嘿嘿【福利】

2016-08-31 10:34:16 1155

原创 Codeforces 711B 【模拟】

比赛的时候绝壁打麻烦了。。。 考虑的好麻烦。。。wa7。。。还要判断出来的是不是positive的。。。 好吧。。认了。。#include<cstdio>#include <map>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef __int64 LL;const int

2016-08-30 00:34:30 495

原创 51nod 1344 【前缀和】

思路:求一下最小负数的前缀和#include<cstdio>#include <map>#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int N=5e4+10;typedef long long LL;int main(){ LL sum=0,x; LL a

2016-08-30 00:30:43 580

原创 51nod 1347 【水】

#include<cstdio>#include <map>#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int N=1e6+10;typedef long long LL;char s[N];char s1[N];char s2[N];int main(){

2016-08-30 00:29:20 596

原创 Codeforces711C 【DP】

题意: 有n个点,m种颜色,你要给n个点上没有颜色的点染色。每个点i对应染的颜色j有一个颜料消耗,p[i][j]是点i染成j颜色的花费,你必须保证有k段颜色的点,输出最少花费多少颜料。 还有一个就是本身有颜色不能变。。。 思路: dp[i][j][k] := 前i个树,第i个树染j颜色,构成k段的最小花费 #include<cstdio>#include <map>#include<io

2016-08-30 00:26:35 866

原创 POJ 2392【多重背包】

题意: k个块,给出每个块的高度hi,数量ci,不能超过的高度; 求这些块可以组成的最大高度一个。 思路: 大致可看这个题是一个背包,背包的价值是高度,背包的承重是高度。 对于每个物品,有他的价值是高度,还有限定的数量,看到这里就是一个多重背包, 然后对于每个物品还有一个限制是对于他的特定高度,这种怎么处理其实很简单吧。 dp[]应该是一个存一个高度; wa了一发,没有考虑一维的时候

2016-08-19 22:40:22 746

原创 CodeForces 13C【DP】

题意: 给你n个数,每次只能让一个数+1,或者-1,目标是最终使这个序列构成一个非递减的序列; n是5e3,复杂度n^2内。值是1e9; 思路: 可以发现子结构是保证一个区间的非递减, 如果只是dp[a][b]代表在[a,b]上需要的最小步数,这样很难处理a,b位置的值,且不构成递推性; 所以可以在递推中(前i个)去dp以 j 值为末端的区间需要的最小步数。 dp[i][j]=min(

2016-08-19 22:36:42 479

原创 CodeForces 13A【暴力】

题意: 给你的一个十进制数n,计算对于2~n-1进制下的每个位相加和与数n-2的比值。 思路: n是1000,所以直接暴力一发?#include<cstdio>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef long long LL;const int N=1e5+10

2016-08-19 22:34:25 2819

原创 POJ2576【背包】

题意: 每个人必须在一个团队或其他; 人对两支球队的数量不得超过1不同; 人们对各队的总重量应尽可能接近相等越好。 思路: 那么我求一个能接近最接近总和一半的值。 每个人的值就是物品,每个物品有且只有一个, 这里有两种重量,一种是体重不得超过一半,另一种是人数不得超过 n/2,应该是(n+1)/2,我们多给前面的部分机会去增大到最靠近总重的一半; 具体还是0/1背包模型,主要还加了一

2016-08-18 23:56:41 844

原创 POJ 1384【完全背包】

题意: 已知储蓄罐满时的质量f以及空时质量e, 有n种硬币,每种硬币的价值为p,质量为w, 求该储蓄罐中的最少有多少钱? 思路: 完全背包思想,问题是在一个重量下的最小价值 那么只要变一下符号就好了?//#include <bits/stdc++.h>#include<iostream>#include<string.h>#include<cstdio>#include<algo

2016-08-18 23:51:34 452

原创 POJ2063【完全背包】

题意: 给一个初始的钱,年数, 然后给出每个物品的购买价格 与 每年获得的利益, 求在给出的年份后手上有多少钱。 思路: 背包重量还是资金。 dp[0]=初始资金; 重物的重量是他的价格,获利是价值。 这里有n个物品,还有m年的问题,主要的问题是前i年的最大收益,然后在金额的基础上对物品处理 记录每次dp[j]的值作为下一年的收益,然后再for一遍过来 这里还可以将重量进行压缩,

2016-08-18 23:48:21 634

原创 Codeforces702C【二分】

题意: 给你几个城市,蜂窝塔量; 给出城市和塔的坐标可以重叠,非递减的方式给出; 输出最小的r,以至于所有的城市能被覆盖到; 思路: 目的就是要使每个城市覆盖到,那我对每个城市找离最近塔的距离,然后在这些距离里面找一个最大的就好了。 怎么对每个城市找离其最近的塔呢? 可以直接lower_bound,找到位置,然后距离比小就好了,但是每次答案要取大;#include<cstdio>#i

2016-08-18 23:43:50 434

原创 hdoj2159【二位费用背包】

题意: 略; 推荐看一下那个背包九讲,第五讲非常清晰啊。 原文: 算法 费用加了一维,只需状态也加一维即可。设f[i][v][u]表示前i件物品付出两种代价分别为v和u时可获得的最大价值。状态转移方程就是: f[i][v][u]=max{f[i-1][v][u],f[i-1][v-a[i]][u-b[i]]+w[i]} 如前述方法,可以只使用二维的数组:当每件物品只可以取一次时变量v和

2016-08-18 00:11:42 336

原创 POJ2367【拓扑排序】

很裸的拓扑排序~//#include <bits/stdc++.h>#include<iostream>#include<string.h>#include<cstdio>#include<algorithm>using namespace std;typedef __int64 LL;const int N=1e2+10;int ma[N][N];int pre[N];int n;

2016-08-17 23:50:21 516

原创 POJ2371【水题】

mdzz…//#include <bits/stdc++.h>#include<iostream>#include<string.h>#include<cstdio>#include<algorithm>using namespace std;typedef __int64 LL;const int N=1e5+10;int a[N];int main(){ char ss[1

2016-08-17 23:47:57 393

原创 POJ2369【循环节】

题意: 给一个序列,他需要几步就能变成原来的序列。 思路: 那么就是找一下各个循环节(用dfs随便搞了…),求一下最小公倍数就好了。 贴一发挫code…//#include <bits/stdc++.h>#include<iostream>#include<string.h>#include<cstdio>#include<algorithm>using namespace std

2016-08-17 23:46:24 412

原创 POJ2370【水题】

//#include <bits/stdc++.h>#include<iostream>#include<string.h>#include<cstdio>#include<algorithm>using namespace std;typedef __int64 LL;const int N=1e2+10;int n,m;int a[N];int main(){ int i,

2016-08-17 23:42:13 364

原创 POJ2365【几何】

因为给出的点已经是顺时针了, 整个长度=相邻点距离+一个圆周长; C++ac代码…G++wa…因为标准不一样。G++用f//#include <bits/stdc++.h>#include<iostream>#include<math.h>#include<string.h>#include<cstdio>#include<algorithm>using namespace std;

2016-08-17 23:38:19 433

原创 POJ2366【二分】

题意: 给两个序列,问两个序列中是否有两个数加起来=1e4; 思路: 直接先排序好b序列,然后枚举a序列,二分查找b序列就好了; 贴一发挫code….//#include <bits/stdc++.h>#include<iostream>#include<math.h>#include<string.h>#include<cstdio>#include<algorithm>usi

2016-08-17 23:34:03 751

原创 POJ1276【多重背包】

题意: 给出一个价值sum,然后给出n,代表n个方案,接着n对代表个数与价值,要求最接近sum,但不超过sum的价值。 思路: 多重背包,利用二进制拆分达到保证对于0..n间的每一个整数,均可以用若干个系数的和表示。 贴一发挫code…感受一下//#include <bits/stdc++.h>#include<iostream>#include<string.h>#include<c

2016-08-17 23:29:28 351

原创 瞎说一波3种基本背包问题【希望巨巨们指出错误】

0/1背包; 这是自己接触最早的背包,其实说0和1背包是最早。0和1背包:他很自由,价值和重量成比例,像一块豆腐你想对某一块拿多少就切多少,那么很明显处理方案就是按照物品价值和重量的比值排序,也可以说是效率吧,然后从大到小按照题目意思取就好了。不多说,继续。0/1背包:从字面意思就是对某个物体(只有一件)取或者不取,光光这个算法,就有很多很多长篇大论去讲述。我谈谈感受,其实DP非常有的一个特点就是

2016-08-17 21:25:44 511

原创 Codeforces 550B 【暴力】

题意: 有n个数字, 要求在这n个数中选出至少两个数字, 使得它们的和在L,R之间,并且最大的与最小的差值要不小于x 思路: 撒比了啊。。。 根据状态的话一共也就是2^15…直接暴力,二进制的小魅力还是没能领会; code……#include <bits/stdc++.h>#include<algorithm>using namespace std;typedef long lon

2016-08-17 00:41:20 474

原创 Codeforces34C【尺取】

题意: 输入一系列的数,连续数字则输出连续区间 看第一个案例就很明显 思路: 输入字符串输入,预处理一下。 写了个挫尺取… 贴一发挫code…….#include <bits/stdc++.h>#include<algorithm>using namespace std;typedef long long LL;int a[102];int b[5];char s[500];

2016-08-17 00:37:31 612

原创 HDOJ5020【几何】

题意: 给你n个点,问有几对三个点在一条直线上 思路: 目前为止很少写的几何题… 一开始两层for没有判断重复。 然后看了一些题解说排序一下,然后枚举每个点,求一个同一斜率的个数k,ans+=(k-1)*k/2;因为取的是除了改点的其余两点,C(k,2); 大哥后来看了题说了一个(然而并不知道那个直线怎么表示,简单说一下): 求出来每条直线有多少点,然后每条直线,c(n.3)就可以了。

2016-08-17 00:01:12 339

原创 Codeforces510B【dfs】

判断一个图里是否有一个自环; 50*50 标记起点,然后暴搜?#include <bits/stdc++.h>#include<algorithm>using namespace std;const int N=55;int n,m;int dx[4]={1,-1,0,0};int dy[4]={0,0,-1,1};char ma[N][N];bool vis[N][N];boo

2016-08-16 23:53:15 479

原创 Codeforces686C【dfs】

题意: n,m<=1e9 设定一天n小时,一小时m分钟, 显示时间的是一个7进制的表, 问你在一天里出现多少个时刻,表中的数字要都不相同。 思路: 因为7进制,显示的数字肯定是0-7之间的。 然后就是搜一下,注意显示的方式,所以m分钟有几位就是显示几位#include <bits/stdc++.h>#include<algorithm>using namespace std;typ

2016-08-16 23:51:14 410

空空如也

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

TA关注的人

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