自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 组合数学两题

[CodeChef-C3PRB3]题意:给你一个数组,然后问其中的奇数个数的子集的中位数和是都少。思路:先对数组内的元素进行一次排序,然后对于每个数字,选择在它之前和在它之后的较小值m。然后c(m,i)(i from 0 to m),然后乘上对应的数。累加即得答案。#include#include#include#includeusing namespace std;co

2018-02-28 15:33:17 239

原创 这几天做的 水题总结

A题:计算折线的中点。思路:先计算折线的总长度,然后算出一半的长度,然后后面对每段折线进行求和,只要和值小于一半就继续求和,知道大于等于如果大于则通过多出来的部分,然后根据勾股定理(余弦定理,正弦定理)算出中点的x值,y值。

2018-02-28 14:58:52 307

原创 loj#550 思维

题意:中文思路:因为找任意两点横坐标之差绝对值加纵坐标之差绝对值的最大值,所以可以将横纵坐标分开来考虑,第一行的必定与最后一行相差最大,以此类推,第二行与倒数第二行匹配.....差值便是sum(n/2+1,n)-sum(1-n/2),但是这只是一列的情况,所有的匹配应再乘上列数,这样计算的是Σ|x|,然后对应的方法求出Σ|y|便是答案。#include#includeusing nam

2018-02-24 20:29:57 252

原创 蓝桥 牌型总数 dfs(暴力)

题目:牌型种数:小明被劫持到X赌城,被迫与其他3人玩牌。 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?方法一:直接写13重循环得结果。方法二:dfs#include#include

2018-02-24 16:51:58 331

原创 wannafly10 c题 dfs+思路

这道题开始先直接dfs,然后tle了,然后换汤不换药bfs一遍,又tle了。看了别人的思路,恍然大悟。TLE思路:建图,然后对于每次轰炸,以轰炸的节点为根进行dfs,更新相邻节点损毁的次数。TLE写起来简单粗暴,但结果也很粗暴。。。AC思路:建图后先进行一次dfs(以编号为1的节点为根,将无根树转为有根树)找出每个节点对应的父节点,然后根据父子关系,爷孙关系以及兄弟关系,推出节点的损毁次数。(兄弟...

2018-02-24 15:35:07 217

原创 wannafly10 b题 思维+类lcs 好题

题意:中文首先吐槽一下这道题的数据太水了,赛后看别人的代码很多连样例都过不了的竟然过了这道题。思路:这道题可以看成是判断密码锁和密码是否存在最长公共子序列。代码:#include<cstdio>#include<cstring>using namespace std;const int maxn=1e5+50;char s[maxn];bool vis[maxn]...

2018-02-24 15:23:42 210

原创 UVA11464

题意思路参考《训练指南》#include#include#include#include#define rep(i,n) for(int i=0;i<n;i++)#define inf 0x3f3f3f3fusing namespace std;const int maxn=50;int t,n,matrix[maxn][maxn],temp[maxn][maxn],ans,s

2018-02-23 12:17:44 299

原创 uva11300

题意:见训练指南思路:列方程,化简,点距离和最小。#include#include#include#include#includeusing namespace std;const int maxn=1e6+50;int n;long long a[maxn],c[maxn],sum,m,mid,ans;int main(){ while(scanf("%d",&n)!

2018-02-13 10:43:43 291

原创 hdu5691 dp+__builtin_popcount()

思路:定义dp【i】【j】:i状态下,以a[j]结尾的最大排列 ,i为0到1&lt;&lt;n。(用二进制的方式表示:如果该位上的数选择了,则对应位置位1,否则为0).状态转移:dp[i|(1&lt;&lt;k)][k]=max(dp[i|(1&lt;&lt;k)][k],dp[i][j]+a[i]*a[j])(a[k]排在a[j后,"|"相当于取并集,就是把a[k]加入状态i)。然后就要用到__...

2018-02-12 18:56:41 263

原创 hdu 5695(类拓扑排序+贪心)

思路:这道题如果不考虑两位同学两两间相互讨厌,那么直接贪心就可以了,但是增加了两两间相互讨厌,那么可以把它们之间的这种关系建图来模拟。如果a不希望b排在他的前面,则a与b建一条a指向b的有向边。那么这就有点像拓扑排序了(网上说这是拓扑排序,我觉得只能说思路有点像)。然后先把入度为0的放入优先队列(由大到小),因为入度为0说明没有人不喜欢他站在前面,所以直接可以排,但是要满足贪心策略,所以优先队列从

2018-02-11 22:48:21 339

原创 hdu5690 快速幂+求模化简

上面那个式子,分子分母同乘一个9后,余数最终要除回一个9。#include &lt;cstdio&gt;int t;long long x, m, k, c;long long quickpowmod(long long x, long long y, long long mod){ long long ret = 1; while(y){ if(y&a...

2018-02-10 21:23:06 404

原创 蓝桥oj algo3 k好数

这应该算是数位dp的入门题了,比较简单,但可能做得比较少,所以一开始没想出来。思路:对于一个k进制l位的数,除了最高位的每一位上都能填1到k-1这几个数(最高为不能填0),所以递推式是:dp[j][l]=Σdp[i][l-1](i!=j-1&&i != j+1),dp【j】【l】的意思为第l位填 j 这个数的好数的个数。总结:对于数位dp类型的题目,着重点还是在 位 上 ,也就是说主要是从

2018-02-10 09:07:26 314

原创 最大流(拆点)总结

51nod1442思路,拆点,一个点拆成入点和出点,再建一个超级汇点和超级源点。源点和入点相连,cap为每个点对应的初始士兵人数,出点和汇点相连,cap为移动后每个城市的士兵数。其它点之间cap为无穷大(这里无穷大是指可以任意流),需要注意的是一个点和另一个点连接,是这个点的入点和下一个出点相连而不是连去下一个点的入点,这样可以保证每个士兵只可以到相邻。最后跑一次最大流,统计最大流是否和初始人

2018-02-09 10:51:07 446

原创 kmp总结

kmp的算法详情可以参考《算法导论》,代码可以参考刘汝佳的紫书(写的很好,基本和算导的伪代码对应),这里只做一些习题的题解报告。基本题:hdu1005#include#include#includeusing namespace std;const int maxn=1e6+50;int t,n,m,a[maxn],b[maxn],f[maxn];void getFail(i

2018-02-07 23:43:52 231

原创 51nod 1640最小生成树&最大生成树

思路:首先对全图求一次最小生成树,最出来生成树的自大边便是所有情况中最小的(因为kruscal和prime每次选边都是选从小选到大),然后再从最大的边从大到小开始枚举最大生成树,求出权值和即可。代码:#include#include#include#includeusing namespace std;const int maxn=3e5+50;int n,m,u,v,w,r[

2018-02-04 15:46:20 444

原创 背包变形 思路

居民集会蓝桥村的居民都生活在一条公路的边上,公路的长度为L,每户家庭的位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距离为di。每年,蓝桥村都要举行一次集会。今年,由于村里的人口太多,村委会决定要在4个地方举行集会,其中3个位于公路中间,1个位最公路的终点。已知每户家庭都会向着远离公路起点的方向去参加集会,参加集会的路程开销为家庭内的人数ti与距离的乘积。给定每户家庭

2018-02-04 14:12:51 268

原创 树状数组进阶应用:区间更新、区间最值查询

区间最值查询:注意这里的init和原树状数组的add有点相似,但不同,add是在原来数的基础上加值,这里是直接初始化,query和sum也同样道理       poj3264(题意见 挑竞)#include#include#include#include#include#define ll long long#define inf 0x3f3f3f3fusing namesp

2018-02-03 12:48:30 274

原创 树状数组技巧总结

树状数组一般用来维护区间的前缀和,而线段树其实更适合用来解决RMQ问题。但是因为现在还没有复习线段树,所以先用着树状数组。(主要是好写)树状数组基本的操作:区间和和单点修改,都可以在刘汝佳的训练指南里找到,这里不做详细说明。主要总结以下几点:1、树状数组解题的常规套路。(其实也就是前缀和的套路)2、树状数组的区间最值查询3、树状数组的区间修改以及区间修改后的区间和查询

2018-02-03 12:36:10 334

空空如也

空空如也

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

TA关注的人

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