
题解
DYT_B
略过
展开
-
BZOJ1293: [SCOI2009]生日礼物
这题和noip2016普及组的第三题类似啊= =,直接哈希动态做一下就好了。 代码如下:#include#include#includeusing namespace std;const int maxn=1000005;int n,m,n1,tail,ans,hsh[maxn];struct dyt{ int x,id; bool operator cons原创 2018-01-21 20:15:59 · 267 阅读 · 0 评论 -
BZOJ2456: mode
题解:这题还是蛮有意思的,因为内存上限只有1m,所以不能开数组处理。我们发现题目中的众数是大于n/2的,所以我们可以只存一个量,每次读入不同则相互消去,最后剩下的一定是这个众数。 代码如下:#include#includeint n,x,y,sum;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){原创 2018-01-21 20:08:38 · 392 阅读 · 0 评论 -
BZOJ3436: 小K的农场
题解:差分约束的入门题,用spfa刷环就好了。 代码如下:#include#include#includeusing namespace std;const int maxn=100005;int n,m,tot,dis[maxn],lnk[maxn],w[2*maxn],son[2*maxn],nxt[2*maxn];bool vis[maxn],pd;inline原创 2018-01-21 19:41:06 · 220 阅读 · 0 评论 -
BZOJ1084: [SCOI2005]最大子矩阵
题解:这题显然是DP。定义f[i][j][k]表示前i行j列里有k个矩阵的最大元素总和。因为m代码如下:#include#include#includeusing namespace std;const int maxn=105,maxk=15;int n,m,n1,ans,a[maxn][3],f[maxn][maxn][maxk],s[maxn],sum[maxn][2原创 2018-01-19 23:01:01 · 268 阅读 · 0 评论 -
BZOJ1051: [HAOI2006]受欢迎的牛
题解:这题是比较典型的tarjan缩环问题,只要刷一次tarjan就可以刷出答案。 代码如下:#include#includeusing namespace std;const int maxn=100005,maxm=500005;int n,e,lnk[maxn],son[maxm],nxt[maxm],tot,dfn[maxn],low[maxn],stark[maxn原创 2018-01-19 22:46:48 · 253 阅读 · 0 评论 -
BZOJ1083: [SCOI2005]繁忙的都市
题解仔细一看,会发现是克鲁斯卡尔的经典题,只要刷一次就行了。 代码如下:#include#include#includeusing namespace std;const int maxn=305,maxm=10005;int n,m,ans,fa[maxn];struct dyt{ int x,y,z; bool operator const dyt &原创 2018-01-19 22:39:10 · 302 阅读 · 0 评论 -
BZOJ1054: [HAOI2008]移动玩具
题解:广搜+哈希,水题。 代码如下:#include#includeusing namespace std;const int maxn=65540,flg[4][2]={{-1,0},{0,1},{1,0},{0,-1}};int step[maxn],t;bool que[maxn][5][5],b[5][5],hsh[maxn];inline int read(){原创 2018-01-16 21:00:42 · 279 阅读 · 0 评论 -
BZOJ1192: [HNOI2006]鬼谷子的钱袋
题解水题。 你要选的数肯定是1,2,4….2^k,答案就是k+1。k就等于⌊log^2 n⌋+1。 代码如下:#includeusing namespace std;int n,ans=0;int main(){ scanf("%d",&n); for(;n;n>>=1) ans++; printf("%d\n",ans); return 0;原创 2018-01-15 21:01:10 · 197 阅读 · 0 评论 -
BZOJ1089: [SCOI2003]严格n元树
题解可发现规律:f[i]=f[i-1]^n+1,套高精度就好了。 代码略。。。原创 2018-01-15 20:57:04 · 261 阅读 · 0 评论 -
BZOJ4337: BJOI2015 树的同构
题解树哈希。因为节点可以重新标号,直接把一棵树的每一个节点当做根来做哈希再判断一下就好了。 代码如下:#include#include#include#includeusing namespace std;const int maxn=55,pow=2333,tt=1000000007;int m,n,tot,s[maxn],lnk[maxn],son[2*maxn],n原创 2018-01-13 21:46:25 · 345 阅读 · 0 评论 -
BZOJ1260: [CQOI2007]涂色paint
题解:水题,区间dp。 代码如下:#include#include#includeusing namespace std;const int maxn=55;int n,a[maxn],f[maxn][maxn];char s[maxn];int main(){ scanf("%s",s); n=strlen(s); for (int i=0;i1]=s原创 2018-01-13 21:39:00 · 375 阅读 · 0 评论 -
BZOJ1024: [SCOI2009]生日快乐
题解:n这么小,不爆搜对不起题面。。。 代码如下:#include#includeusing namespace std;int t;double n,m;double dfs(double x,double y,int z){ if (z==1) {if (xreturn x/y;} double ans=1e20; for (int i=1;i<原创 2018-01-13 21:35:54 · 293 阅读 · 0 评论 -
BZOJ1854: [Scoi2010]游戏
题解这题其实是二分图最大匹配。可以把1~1000000的属性和1~n的武器相连边,然后从1开始刷二分图匹配,刷到无法匹配就停下来并输出答案。 代码如下:#include#include#includeusing namespace std;const int maxn=10005,maxm=1000005;int n,m,tot,girl[maxm],lnk[maxm],s原创 2018-01-13 20:59:16 · 262 阅读 · 0 评论 -
BZOJ1022: [SHOI2008]小约翰的游戏John
题解:这题是经典的nim游戏,判断能不能获胜,只要将每一堆的个数xor起来,再判断一下就好了。#include#includeusing namespace std;int T,n;inline int read(){ int x=0; char ch=getchar(); while (ch'0'||ch>'9') ch=getchar(); whil原创 2018-01-13 20:44:34 · 230 阅读 · 0 评论 -
BZOJ1296: [SCOI2009]粉刷匠
题解:这题比较简单,可以用dp+0/1背包来解决。首先对每一条木板都刷一趟dp,求出f[i][m][j]表示第i个木板刷了j次可以正确粉刷的格子总数。然后对于所有的木板做一次0/1背包。最后输出f1[n][t]即可。#include#includeusing namespace std;const int maxn=55,maxm=2505;int n,m,t,a[maxn][m原创 2018-01-12 21:47:30 · 200 阅读 · 0 评论 -
BZOJ1055: [HAOI2008]玩具取名
题解:一道简单的dp题。定义f[i][j][c]表示i~j这一区间中的所有字母能否缩成c这一字母。转移就是:f[i][j][c]=f[i][k][c1]&& f[k+1][c2]&&(c1c2>>c,i代码如下:#include#include#includeusing namespace std;const int maxn=205;int n,a[5][maxn],hs原创 2018-01-13 20:41:21 · 212 阅读 · 0 评论 -
BZOJ1002: [FJOI2007]轮状病毒
题解:找规律题:f[i]=(f[i-1]*3-f[i-2]+2),套一个高精度就好了。 代码如下:#include#includestring>using namespace std;const int maxn=105,maxl=1005;int n,f[maxn][maxl],len[maxn];void add(int x){ int a=x-1,b=x-2;原创 2018-01-12 21:41:12 · 327 阅读 · 0 评论 -
Lougu - P3203 BZOJ-2002 [HNOI2010]BOUNCE 弹飞绵羊
题面:题目描述某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,L原创 2017-11-04 13:25:57 · 283 阅读 · 0 评论 -
51Nod - 1398 等公交
题解这题是比较基础的概率DP题。定义f[i]表示第i个时刻的所有的情况的概率和。f[i]由∑f[i−time[j]]\sum f[i-time[j]]来转移就好了。最后枚举一下在他上车之前的最后一辆车是那一辆*他等的时间就好了。 代码如下:#include<cstdio>#include<string>using namespace std;const int maxn=105,maxt=1原创 2017-11-04 15:57:49 · 320 阅读 · 0 评论 -
51Nod - 1833 环
题目描述题解这题看似非常不可做,但是其实我们可以转换一下,形成不相交的简单环其实就是二分图的一个完美匹配。知道了这一点我们就可以直接写一个状压dp(因为n比较小)。定义f[i][j]表示前i个数,匹配的状态为j的方案数,则转移就比较简单了。然后就莫名其妙卡过去了! 代码如下:#include<cstdio>#include<string>using namespace std;const i原创 2017-11-04 15:43:57 · 980 阅读 · 1 评论 -
51Nod 1055 最长等差数列
题目描述:懒得截图**题解:要注意一个条件,“找出由这些数组成的最长的等差数列”,说明这些数不一定要按顺序组成等差数列。那么我们就可以肆无忌惮的排序了。排好序以后就要考虑dp了。f[i][j]表示等差数列的第一项是a[i],第二项是a[j]的最长长度(不看别人题解真的想不到)。那么f[i][j]的转移是f[k][i] (当a[k],a[i],a[j]为等差数列时),dp的转移方式比较神,具体看代码:原创 2017-11-04 16:29:51 · 298 阅读 · 0 评论 -
BZOJ1008: [HNOI2008]越狱
题解这题显然是数学题,组合数学。正难则反,先考虑不会越狱的情况:第1个犯人信仰某宗教,一共m个选择。第2个则只有m-1个选择,… ,往后均为m-1个选择。所以答案易知,就是mn−m∗(m−1)n−1。快速幂套mod就行了。原创 2018-01-21 20:58:46 · 242 阅读 · 0 评论 -
BZOJ1003: [ZJOI2006]物流运输
题解:这题显然是n次最短路加上dp,水题,就是代码有些繁琐。。。 代码如下: 然而并没有原创 2018-01-21 21:01:31 · 218 阅读 · 0 评论 -
BZOJ1012: [JSOI2008]最大数maxnumber
题解线段树= = 代码如下:#include#includeusing namespace std;const int maxn=200005;int n,tt,tail;long long las;struct dyt{ int l,r,w;}tree[4*maxn];inline int read(){ int x=0; char ch=getch原创 2018-01-21 21:10:24 · 225 阅读 · 0 评论 -
BZOJ1079: [SCOI2008]着色方案
题解这题是DP,一开始的想法是写一个5^15的dp,但是肯定会超时,所以就要换一个定义。 我们开dp数组 f[a][b][c][d][e][last] 记录剩下1,2,3,4,5次可涂色次数的颜色的油漆种数为a,b,c,d,e,上一次我们涂的是使用次数剩余为last的颜料。这次在剩余last-1次的颜料中,我们只能少拿一次,那么就可以推出转移式子,用记忆化dfs求解。#include原创 2018-01-22 16:37:43 · 307 阅读 · 0 评论 -
BZOJ3212: Pku3468 A Simple Problem with Integers
题目描述:Description You have N integers, A1, A2, … , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other ...原创 2018-02-08 20:42:57 · 230 阅读 · 0 评论 -
BZOJ3668: [Noi2014]起床困难综合症
题目描述:Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。正是由于 drd 的活动,起床困难综合症愈演愈烈,以惊人的速度在...原创 2018-02-08 21:53:25 · 361 阅读 · 0 评论 -
BZOJ1001: [BeiJing2006]狼抓兔子
题目描述:Description 现在小朋友们最喜欢的”喜羊羊与灰太狼”,话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形:左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<==>(...原创 2018-02-09 21:07:32 · 213 阅读 · 0 评论 -
51nod 1020逆序排列
题解:这题肯定是DP题。定义f[i][j]表示前i个数,产生j组逆序对的排列数量。那么显然可以想到n^3的做法,就是枚举当前第i个数放在哪里。但是这样是会超时的。但是我们可以稍加推导,最后得出f[i][j]=f[i][j-1]+f[i-1][j]-f[i-1][j-i],这样就不会超时了。。。 代码如下:#include<cstdio>#include<s...原创 2018-02-09 16:24:04 · 357 阅读 · 0 评论 -
51nod 1040 最大公约数之和
题解这题是欧拉函数的经典题。欧拉函数φ(p)表示的是与p互质的数的个数(包括1)。这和本题好像没有什么关系,这是就需要我们来转化了。gcd(n, i) = x(x为这个因子)的个数,可以表示成gcd(n / x, i / x) = 1的个数,这就是典型的求解n/x的因子个数的题目了,只要我们单个求解φ(n/x)就好了。 欧拉函数相关知识代码如下:#include<cstdio>#include<原创 2018-02-09 16:33:49 · 309 阅读 · 0 评论 -
BZOJ1072: [SCOI2007]排列perm
题目描述:Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0)。例如123434有90种排列能 被2整除,其中末位为2的有30种,末位为4的有60种。Input 输入第一行是一个整数T,表示测试数据的个数,以下每行一组s和d,中间用空格隔开。s保证只包含数字0, 1 , 2, 3, 4, 5, 6, 7, 8, 9.Ou原创 2018-02-05 21:56:07 · 262 阅读 · 0 评论 -
BZOJ1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
题目描述:Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻.农夫约翰用很多纸条装满了一个桶,每一张包含了一个独一无二的1到1,000,000的数字. 接着每一头奶牛i从柄中取出一张纸条Ai.每头奶牛轮原创 2018-02-05 22:13:57 · 242 阅读 · 0 评论 -
POJ 1273 Drainage Ditches
题目描述:DescriptionEvery time it rains on Farmer John’s fields, a pond forms over Bessie’s favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time...原创 2018-02-10 23:13:29 · 189 阅读 · 0 评论 -
BZOJ1026: [SCOI2009]windy数
题目描述:Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道, 在A和B之间,包括A和B,总共有多少个windy数?Input 包含两个整数,A B。Output 一个整数Sample Input 【输入样例一】1 10【输入样例二】25 50 Sample原创 2018-02-06 22:40:45 · 185 阅读 · 0 评论 -
BZOJ3156: 防御准备
题目描述:传送门 题解: 斜率优化DP。 f[i]=f[j]+(i-j)*(i-j-1)/2+a[i] <=> 2*f[i]+2*i*j=2*f[j]+j2+j+(2*a[i]+i2-i) b + ax = y 代码如下:#include<cstdio>#include<string>using namespace std;...原创 2018-02-26 22:26:01 · 249 阅读 · 0 评论 -
BZOJ4300: 绝世好题
题目描述:传送门 题解: 用f[i]表示当前二进制i为1的最长子序列长度。 f[i]=max(f[j])+1。 代码如下:#include<cstdio>#include<string>using namespace std;const int maxn=35;int n,ans,f[maxn];inline int read(){ int x...原创 2018-02-26 23:22:05 · 232 阅读 · 0 评论 -
HihoCoder #1369 : 网络流一·Ford-Fulkerson算法
题目描述:描述 小Hi和小Ho住在P市,P市是一个很大很大的城市,所以也面临着一个大城市都会遇到的问题:交通拥挤。 小Ho:每到周末回家感觉堵车都是一种煎熬啊。 小Hi:平时交通也还好,只是一到上下班的高峰期就会比较拥挤。 小Ho:要是能够限制一下车的数量就好了,不知道有没有办法可以知道交通系统的最大承受车流量,这样就可以限制到一个可以一直很顺畅的数量了。 小Hi:理论上是有算法的啦...原创 2018-02-13 21:23:15 · 263 阅读 · 0 评论 -
BZOJ1046: [HAOI2007]上升序列
题目描述:Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm)。那么就称P为S的一个上升序列。如果有多个P满足条件,那么我们想求字典序最小的那个。任务给出S序列,给出若干询问。对于第i个询问,求出长...原创 2018-02-13 22:25:15 · 232 阅读 · 0 评论 -
BZOJ3505: [Cqoi2014]数三角形
题目描述:Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个。下图为4x4的网格上的一个三角形。 注意三角形的三点不能共线。Input 输入一行,包含两个空格分隔的正整数m和n。Output 输出一个正整数,为所求三角形数量。Sample Input 2 2Sample Output 76数据范围 1题解:这题可以用排原创 2018-02-07 18:12:12 · 377 阅读 · 0 评论 -
BZOJ1076: [SCOI2008]奖励关
题目描述:Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立。也就是说,即使前k-1次系统都抛出宝物1(这种情况是有可能出现的,尽管概率非常小),第k次抛出各个...原创 2018-02-07 23:53:25 · 239 阅读 · 0 评论