自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

转载 bzoj 1029

贪心加优先队列维护。先把每个建筑的t1和t2读进来,然后按照t2排序。枚举建筑,当枚举到第i个建筑时,ans表示在t2[i-1]范围内可以修的最多建筑,now表示修这些建筑所需的最少时间。如果可以修第i个建筑,即t1[i]+now<=t2[i],则now+=t1[i]。否则就判断是否要不修已经选了的建筑中的t1最大值,来修第i个建筑,来维护now的最优性。用优先...

2018-01-25 17:05:00 100

转载 bzoj 1191

二分图最大匹配匈牙利算法。#include"cstdio"#include"cctype"#include"vector"using namespace std;int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',isdigit(c=getchar(...

2018-01-24 19:18:00 83

转载 bzoj 1854

一看就想到了二分图最大匹配的匈牙利算法。注意要加时间戳优化,不然会超时。#include"cstdio"#include"cctype"const int maxn=1000001;int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',isdigit(...

2018-01-24 18:57:00 90

转载 bzoj 1008

正着思考是无法得出答案的。考虑容斥,可能发生越狱的状态=全部状态-不可能发生越狱的状态。全部状态就是M^N。不可能发生越狱的状态:第一个房间是随便什么宗教,而第二个房间不能和第一个一样,而第三个房间不能和第二个一样……用乘法原理算一下就是M*(M-1)^(N-1)。快速幂即可。#include"cstdio"const long long p=100003...

2018-01-24 18:41:00 86

转载 luogu 1102

map。注意要当c=0时要去重。#include"cstdio"#include"map"#include"cctype"using namespace std;long long read(){ long long c,x=0,s=1; while(!isdigit(c=getchar())) if(c=='-') s=-1; ...

2018-01-24 14:24:00 53

转载 luogu 1107

接起来试试看。C++string自带比较,比较的是字典序的大小。自带+运算符,可以把两个字符串接在一起。#include"iostream"#include"string"#include"algorithm"using namespace std;string s[20];bool comp(string a,string b){ re...

2018-01-24 13:57:00 51

转载 luogu 1097

排序一遍,保证数值相同的数放在一起。直接枚举每一个数判断和前面的数是否相同:相同就累加数量;否则就输出,然后把数量重置为1。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int c,x=0; while(!isdigit(c=g...

2018-01-24 13:53:00 53

转载 luogu 1364

正解应该是求带权树的重心,然而这个数据范围用Floyed就可以了。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;const int inf=1000000000;int read(){ int c,x=0; while(!isdigit(c=getch...

2018-01-24 13:39:00 80

转载 luogu 3374

树状数组的模板。#include"cstdio"#include"cctype"int lowbit(int x){ return x&(-x);}int read(){ int c,x=0,s=1; while(!isdigit(c=getchar())) if(c=='-') s=-1; while(x=...

2018-01-24 13:22:00 80

转载 luogu 1909

设calc(a,b)就是计算a/b取上整。设三种铅笔的数量为a1,a2,a3,价格为b1,b2,b3。答案就是min(calc(n,ai)*bi)。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int c,x=0; whil...

2018-01-24 13:06:00 78

转载 luogu 1047

差分。设a[i]为这个点被多少个区域包含。设f[i]为a[i]-a[i-1]。于是每次读入一个区间[u,v]就把f[u]++,f[v+1]--。每次计算前加上f[i]就是a[i]了。只有当a[i]=0时这棵树才没有被砍掉。#include"cstdio"#include"cctype"int read(){ int c,x=0; whil...

2018-01-24 12:57:00 109

转载 luogu 1028

递推。f[i]表示把i进行处理可得的数的个数。枚举头部接什么数可得递推式f[i]=1+∑f[j] (j<=i/2)。其实可以用前缀和优化,不过这题的数据范围没这个必要。#include"cstdio"int main(){ int n,f[1001]; scanf("%d",&n); for(int i=1; i&l...

2018-01-24 12:43:00 57

转载 luogu 1421

全部转化成角为单位计算。#include"cstdio"int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d",(a*10+b)/19); return 0;}转载于:https://www.cnblogs.com/TrassBlose/p/834...

2018-01-24 12:37:00 49

转载 luogu 1094

贪心。先按纪念品的价格排序一遍。考虑最小的一个纪念品:如果可以和最大的纪念品合成一组,就合成一组。否则就让最大的纪念品单独一组。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int c,x=0; while(!isdigit...

2018-01-24 12:07:00 58

转载 luogu 1035

模拟。#include"cstdio"int main(){ double k,sum=0; scanf("%lf",&k); int i=0; while(sum<=k) sum+=1.0/++i; printf("%d",i); return 0;}转载于:https://ww...

2018-01-24 12:01:00 52

转载 luogu 1003

先把各条地毯的数据存储下来。然后从后往前找到的第一条包含(x,y)的地毯编号就是答案。#include"cstdio"#include"cctype"const int maxn=100001;int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',is...

2018-01-24 11:45:00 65

转载 luogu 1049

体积和价值设为相等做一遍01背包。然后输出v-f[v]即可。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-...

2018-01-24 11:37:00 65

转载 bzoj 1303

很容易想到把大于b的数赋值为1,小于b的数赋值为-1。做一遍前缀和。于是问题变成求sum[j]-sum[i]=0 (0<=i<w && j>=w)于是直接按照b所在位置划分成两段,分别用桶统计sum某值出现的次数,注意sum数组中的数可能会出现负数,于是要加上一个n防止访问负的下标。最后用乘法原理统计答案即可。#include"c...

2018-01-23 20:34:00 63

转载 bzoj 1000

一道伟大的题。#include"cstdio"int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d",a+b); return 0;}转载于:https://www.cnblogs.com/TrassBlose/p/8337596.html...

2018-01-23 19:55:00 103

转载 bzoj 1192

任何数都可用2的幂次方加和得到。于是问题变成求2^k大于m的第一个k。#include"cstdio"int main(){ int m,i=0; scanf("%d",&m); while((1<<i)<=m) i++; printf("%d",i); return 0;}...

2018-01-23 19:50:00 117

转载 vijos 1111

最长公共子序列。设f[i][j]为前第一个序列前i和第二个序列前j的最长公共子序列。f[i][j]=f[i-1][j-1] (a[i]=b[j])f[i][j]=max(f[i-1][j],f[i][j-1]) (a[i]!=b[j])#include"iostream"#include"string"using namespace std;string ...

2018-01-23 16:00:00 46

转载 luogu 1091

正反做两次最长上升子序列。记f[i]为正着做以Ti为结尾的最长上升子序列。记g[i]为倒着做以Ti为结尾的最长上升子序列。答案就是n-max(f[i]+g[i]-1)。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int...

2018-01-23 15:02:00 64

转载 luogu 3367

并查集模板,习惯并查集都加路径压缩优化。#include"cstdio"#include"cctype"int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',isdigit(c=getchar())); return x;}int fa[10...

2018-01-22 18:30:00 100

转载 luogu 1059

经典桶排题。用一个桶记录某个数是否出现过。#include"cstdio"#include"cctype"int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',isdigit(c=getchar())); return x;}int y[...

2018-01-22 17:14:00 48

转载 luogu 1046

简单模拟。#include"cstdio"int main(){ int a[10],h,ans=0; for(int i=0; i<10; i++) scanf("%d",&a[i]); scanf("%d",&h); for(int i=0; i<10; i++) if(a[i]-30<=h) ...

2018-01-22 17:04:00 45

转载 luogu 1036

简单的深搜加上判断是否是质数。由于是组合,所以要考虑顺序,不然会超时。#include"cstdio"#include"cmath"int n,k,ans=0,a[21];int check(int w){ if(w==1) return 0; int n=sqrt(w)+0.5; for(int i=2; i<=n; i+...

2018-01-22 17:02:00 41

转载 luogu 1414

首先用个桶统计一下每个数出现多少次。然后用类似埃氏筛法的方法统计每个数有多少个倍数,对于存在每一种倍数个数的数取一个max。最后递推一下答案即可。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int c,x=0; while...

2018-01-22 16:36:00 43

转载 luogu 1090

贪心,每次取最小的两个合并即可。优先队列,懒惰就是美德。#include"cstdio"#include"cctype"#include"queue"using namespace std;int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',is...

2018-01-22 16:17:00 49

转载 codevs 1000

一道伟大的题。#include"cstdio"int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d",a+b); return 0;}转载于:https://www.cnblogs.com/TrassBlose/p/8329463.html...

2018-01-22 16:04:00 156

转载 luogu 1372

直觉告诉我们答案就是[n/k]。证明:  设答案为w,那么这些学号必然是w,w*2,w*3,w*4...w*k。  于是w*k当为不超过n的最大值,就可以得出w=[n/k]。#include"cstdio"int main(){ int n,k; scanf("%d%d",&n,&k); printf("%d",n...

2018-01-22 15:58:00 62

转载 luogu 1403

求1~n这些数一共有多少个约数。可以看做是求1~n这些数在1~n之间一共有多少个它的倍数。数i在1~n之间有[n/i]个倍数。#include"cstdio"int main(){ int n,ans=0; scanf("%d",&n); for(int i=1; i<=n; i++) ans+=n/i; pr...

2018-01-22 15:49:00 49

转载 luogu 1004

动态规划。设f[i][j][k]为行列之和为i,第一条路到第j行,第二条路到第k行的方案数。考虑每条路的下一步可以向下或向右,于是状态转移方程就出来了。f[i][j][k]=max(f[i-1][j][k],f[i-1][j-1][k],f[i-1][j-1][k-1],f[i-1][j][k-1])+a[j][i-j] (j=k)f[i][j][k]=max(f[i-1...

2018-01-21 20:31:00 75

转载 luogu 1980

暴力,直接从1到n枚举一遍判断每一个数的每一位是否为x。#include"cstdio"int main(){ int n,x,ans=0; scanf("%d%d",&n,&x); for(int i=1; i<=n; i++) for(int j=i; j; j/=10) if(j%10==x) a...

2018-01-21 20:20:00 56

转载 luogu 1177

无数书上都有介绍,不多说,模板题。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',isdigit(c=g...

2018-01-21 20:16:00 63

转载 luogu 1049

简单的01背包。#include"cstdio"#include"cctype"#include"algorithm"using namespace std;int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-'0',isdigit(c=getchar())...

2018-01-21 20:14:00 70

转载 luogu 1001

一道伟大的题。#include"cstdio"int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d",a+b); return 0;}转载于:https://www.cnblogs.com/TrassBlose/p/8325271.html...

2018-01-21 20:12:00 42

转载 luogu 1109

贪心,优先把人数大于r的组中的人分配给人数小于l的组。所以只要求max(人数大于r的组中多出人数的总和,人数小于l的组中需要人数的总和)。注意要判断是否可行。#include"cstdio"#include"cctype"int max(int a,int b){return a>b? a:b;}int read(){ int c,x=0;...

2018-01-21 20:10:00 55

转载 luogu 1181

贪心,从前往后保证每一组的数总和都尽量大。为了方便,考虑先加上当前位置的数:如果当前组的数总和已经超过了m,那么就把答案加一,重新开一个组给这个数。#include"cstdio"#include"cctype"int read(){ int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c...

2018-01-21 19:52:00 54

空空如也

空空如也

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

TA关注的人

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