02 2017 档案

摘要:最近在上软件工程实践课程,想做一个类似于QQ空间或者朋友圈一样的效果。即显示所有好友发送的动态以及动态下回复的信息。 自己YY了一种方法,一开始以为不能达到效果,研究了2个小时终于实现了,感觉效果还是很棒棒的,拿来分享一下。神犇请绕道吧~~ listview可以自己排版布局,我们用listview来 阅读全文
posted @ 2017-02-28 20:40 Fighting_Heart 编辑
摘要:简单题。 分情况算一下即可。 阅读全文
posted @ 2017-02-25 21:05 Fighting_Heart 编辑
摘要:二分,贪心。 二分答案,然后贪心验证即可。 阅读全文
posted @ 2017-02-25 21:05 Fighting_Heart 编辑
摘要:排序,贪心。 从小到大排个序算一下就可以了。目测无论从哪个时间点开始算罚时,这样的贪心策略都是正确的。 阅读全文
posted @ 2017-02-25 21:04 Fighting_Heart 编辑
摘要:树的重心,树形$dp$,背包。 树的重心有两个充分必要条件: $1$.某树有两个重心$a$,$b$ $<=>$ $a$与$b$相邻,断开$a$与$b$之间的边之后,两个联通分量内的点的个数相同。 $2$.某树有一个重心$a$ $<=>$ 以$a$为根的树,去掉a之后,剩下的联通分量,除去节点个数最多 阅读全文
posted @ 2017-02-22 15:55 Fighting_Heart 编辑
摘要:$dp$。 这题的本质和求一个有向无环图的最长路径长度的路径是一样的。 $dp[i][j]$表示到第$i$天,湿度为$a[i]$,是第$j$种天气的最大概率。记录一下最大概率是$i-1$天哪一种天气推过来的,然后就可以得到路径了。 阅读全文
posted @ 2017-02-22 09:56 Fighting_Heart 编辑
摘要:排序,贪心,栈,树状数组,二分。 因为要在个数最多的情况下保证收益最多,所以任务和机器都按照$y$从小到大排序,然后看每一个机器去处理哪一个任务。肯定是在任务的$y$小于等于机器的$y$的任务中寻找一个$x$最大的,这样能保证个数最多的情况下保证收益最多。 阅读全文
posted @ 2017-02-21 19:14 Fighting_Heart 编辑
摘要:模拟退火。 退完火之后还要随机调整位置。 阅读全文
posted @ 2017-02-21 09:51 Fighting_Heart 编辑
摘要:并查集。 将每一个物品拆成两个,两个意义相反,然后并查集即可。 阅读全文
posted @ 2017-02-20 20:58 Fighting_Heart 编辑
摘要:树形$dp$,位运算。 按位统计贡献。 每一位:统计以$u$为根的子树中,一端为$u$,另一端为子树中节点的链异或为$1$和$0$的方案数,$dp$一下就可以得到。还要统计$u$的子孙$v$跨过$u$进行组合的情况。 阅读全文
posted @ 2017-02-20 20:58 Fighting_Heart 编辑
摘要:二分,排序。 首先感觉题意有问题,什么叫假设今天不喝...... 将$f$从小到大排序,$s$也从小到大排序,肯定是期日期大的先买,因此可以对$s$进行二分,然后验证。 阅读全文
posted @ 2017-02-19 20:04 Fighting_Heart 编辑
摘要:树形$dp$。 先看权值之和是否为$3$的倍数,如果不是则一定无解。 如果是$3$的倍数,可以分两次去切。每次一个节点,要求这个节点不是根,并且的子树权值和为$sum/3$,又要是某链上深度最深的。 找不到两个依然是无解,否则就有解。 阅读全文
posted @ 2017-02-19 12:48 Fighting_Heart 编辑
摘要:模拟。 情况有点多,需要仔细。另外感觉题目的$tf$有点不太对......而且数据水了。 $0$ $5$ $2$ $2$ $0$ $5$ 这组数据按照题意的话答案可以是$2$和$4$,但是好多错的答案能$AC$。 阅读全文
posted @ 2017-02-19 11:38 Fighting_Heart 编辑
摘要:枚举。 枚举两行,然后算这两行之间有多少个矩形满足条件。 阅读全文
posted @ 2017-02-16 18:33 Fighting_Heart 编辑
摘要:矩阵快速幂。 构造一个矩阵,$a[i][j]$表示一次操作后,$j$会从$i$那里得到水的比例。注意$k=0$的时候,要将$a[i][j]$置为$1$。 阅读全文
posted @ 2017-02-16 18:31 Fighting_Heart 编辑
摘要:暴力。 先删掉一些边,平行的线只保留$b$最大的。然后暴力,每次放入第$i$条边,和还没有被完全覆盖的边都算一遍,更新一下。 阅读全文
posted @ 2017-02-16 18:28 Fighting_Heart 编辑
摘要:期望$dp$。 设$dp[i][j][k]$表示已经有$i$行有棋子,有$j$列有棋子,并且放了$k$个棋子的状态下到达目标状态的期望天数。 $dp[n][m][max(n,m)..n*m]$全部置为$0$。 $dp[i][j][k] = dp[i][j][k+1]*(i*j-k)/(n*m-k)+ 阅读全文
posted @ 2017-02-15 21:50 Fighting_Heart 编辑
摘要:已经确定本题是错题了! 这题有问题,不是后台数据水了就是出题人的做法是错的。 已经发邮件给浙大陈越老师,等待回复中。 觉得自己的做法是正确的话,可以试试下面这组数据。 1 8 8 1 3 2 3 3 4 3 5 4 6 5 6 6 7 6 8 答案应该是: 6 7 1 阅读全文
posted @ 2017-02-15 15:43 Fighting_Heart 编辑
摘要:贪心,$dp$。 假设我们知道要选择哪些物品,那么这些物品应该按什么顺序选择呢? 物品$A(a1,b1)$,物品$B(a2,b3)$。 假设物品$A$在第$x$天被选择,物品$B$在第$y$天被选择。$x<y$。那么收益为:$P1=a1+(x-1)*b1+a2+(y-1)*b2$。 假设物品$A$在 阅读全文
posted @ 2017-02-15 15:39 Fighting_Heart 编辑
摘要:最小生成树。 做克鲁斯卡尔的时候,边排序的第一关键字是权值,然后是$u$,然后是$v$。记录下用了哪几条边。 因为这些边的第一关键字是权值,所以需要重新按字典序排序。 阅读全文
posted @ 2017-02-15 15:29 Fighting_Heart 编辑
摘要:分类讨论。 分几种情况讨论一下即可。 阅读全文
posted @ 2017-02-14 12:42 Fighting_Heart 编辑
摘要:二分。 二分答案,然后贪心验证一下即可。 阅读全文
posted @ 2017-02-14 12:41 Fighting_Heart 编辑
摘要:排序。把每一个长方体拆成$6$个做,然后排序做即可。 阅读全文
posted @ 2017-02-14 12:38 Fighting_Heart 编辑
摘要:前缀和。 把区间和为正的都选了即可。 阅读全文
posted @ 2017-02-14 12:30 Fighting_Heart 编辑
摘要:完全背包。 直接做个背包容量为$100000$的完全背包,这样就可以避免繁琐的分类讨论了。 阅读全文
posted @ 2017-02-14 12:29 Fighting_Heart 编辑
摘要:排序,构造。 相当于告诉我们一棵树$n$个节点,每个节点在哪一层,至少需要移动多少个节点,才能让这些节点变成一棵树。 按照层次排个序移动一下就可以了,优先选择那些不是$s$但是层次是$0$的节点,如果没有,那么再选择层次最高的。 阅读全文
posted @ 2017-02-13 13:35 Fighting_Heart 编辑
摘要:抽屉原理。 先统计最多有$sum$个船可以放,假设打了$sum-a$枪都没打中$a$个船中的任意一个,那么再打$1$枪必中。 阅读全文
posted @ 2017-02-13 13:02 Fighting_Heart 编辑
摘要:二分答案。 油量越多,显然通过的时间越少。可以二分找到最小的油量,可以在$t$时间内到达电影院。 一个油箱容量为$v$的车通过长度为$L$的路程需要的最小时间为$max(L,3*L-v)$。计算过程如下: 假设普通速度运行了距离$a$,加速运行了距离$b$,则$a+b=L$,即$b=L-a$。 因为 阅读全文
posted @ 2017-02-13 11:18 Fighting_Heart 编辑
摘要:位运算。 两个数的和:$A+B=(AandB)+(AorB)$,那么$b[i]+c[i]=n*a[i]+suma$。可以解出一组解,然后再按位统计贡献验证一下。 阅读全文
posted @ 2017-02-12 16:06 Fighting_Heart 编辑
摘要:最小生成树变形,倍增。 每条边有权值$1$和权值$2$,要求构造最小生成树,有一条边可以选择权值$2$,其余边选择权值$1$。 先对权值$1$求最小生成树,然后枚举每一条边用权值$2$去替换树中的边即可。 寻找树上某条连权值最大的边,带修改的可以采用树链剖分;无修改的可以将树有根化,然后计算两点到公 阅读全文
posted @ 2017-02-10 17:52 Fighting_Heart 编辑
摘要:模拟。 连续的一段$a$合成一个$b$。每段中如果数字只有$1$个,那么可以合成。如果数字个数大于等于$2$个,如果都是一样的,那么无法合成,否则要找到一个可以移动的最大值位置开始移动。一开始写了一个模拟,没考虑到严格大于,$WA$在$106$组数据了...... 阅读全文
posted @ 2017-02-10 11:21 Fighting_Heart 编辑
摘要:矩阵快速幂。 邻接矩阵的$P$次方就是走$P$步之后的方案数,这里只记录能否走到就可以了。然后再判断一下三种情况即可。 阅读全文
posted @ 2017-02-09 22:35 Fighting_Heart 编辑
摘要:计算几何,暴力。 题目中有一句话:$The$ $mass$ $of$ $each$ $brick$ $is$ $equally$ $distributed$ $and$ $it$ $will$ $be$ $stable$ $if$ $it$ $is$ $placed$ $on$ $bases$ $o 阅读全文
posted @ 2017-02-09 22:32 Fighting_Heart 编辑
摘要:边双连通分量。 这题有一点构造的味道。一个有向图,经过强连通缩点之后会形成一个有向无环图。 如果将最大的强连通分量放在顶端,其余的强连通分量都直接或间接指向他,那么这样就构造出了符合要求的图。 接下来就是要去寻找强连通分量。对于一个无向图来说,每一个边-双联通分量都可以将每条边定向之后构造成一个强连 阅读全文
posted @ 2017-02-08 17:12 Fighting_Heart 编辑
摘要:贪心,优先队列。 将$s$按照从小到大的顺序扔进优先队列。从小的开始与电脑配对,如果找不到合适的电脑,那么再变小一次,直到找到与之配对的电脑或者作废。 阅读全文
posted @ 2017-02-08 14:31 Fighting_Heart 编辑
摘要:区间并。 对于上下两个数字,如果不一样,那么可以计算出哪一段范围内可以保证字典序,并且后面所有位置都无需再考虑。对所有范围求交集就是答案了。 求交集写起来有点烦,直接对不可取的范围求并即可。 阅读全文
posted @ 2017-02-06 16:48 Fighting_Heart 编辑
摘要:枚举,前缀和。 先从小到大排序,然后枚举最小的数字选择哪一个。接下来就是计算比他大的数做出的贡献。因为肯定是连续的一段贡献都是一样的,因此二分一下就可以了。这样$800$多$ms$能水过。 #pragma comment(linker, "/STACK:1024000000,1024000000") 阅读全文
posted @ 2017-02-06 14:32 Fighting_Heart 编辑
摘要:$dfs$,构造。 类似于$k$度限制生成树的想法,可以将$s$和$t$先从图中删去,将剩下的部分求连通块,每个连通块内部很容易构造生成树,每个连通块缩成一个点来处理。 连通块分三种: $1$.只与$s$有边 $2$.只与$t$有边 $3$.与$s$和$t$都有边 前两种没办法,只能和$s$和$t$ 阅读全文
posted @ 2017-02-05 11:33 Fighting_Heart 编辑
摘要:构造。 (1)如果数字中带有$0$: 1.只有个位是$0$,这种情况就是给输入的数字$+10$再输出即可。 2.其余情况就是给输入的数字$+1$再输出即可。 (2)如果数字中没有$0$: 从个位开始一位一位拆掉。如果发现能凑出比某一位大一点点的数字,那么剩下的高位就不动了,再从个位开始构造目前能凑出 阅读全文
posted @ 2017-02-03 21:17 Fighting_Heart 编辑
摘要:线段树,延迟标记。 记录一下每个节点代表的区间的最小值,以及左右端点是否为最小值,记录区间被下压几次作为延迟标记,再记录一下这个区间中有多少个最小值的连通块。 $n$最大有$1$亿,可以开动态线段树避免离散化。 阅读全文
posted @ 2017-02-03 21:12 Fighting_Heart 编辑
摘要:暴力枚举,状态压缩。 枚举哪几行放,复杂度为$O(2^{25})$,大概有$3000$多万种情况。假设有$x$行放了,没放的那几行状态或起来为$st$,如果$st$中$1$的个数大于$x$,那么不可取;否则用$x$更新答案。 阅读全文
posted @ 2017-02-02 18:28 Fighting_Heart 编辑
摘要:$dp$,斜率优化。 设$dp[j][i]$表示前$i$个位置分成$j$段的最小值,递推式很好写,预处理几个前缀和就可以了,然后斜率优化即可。 阅读全文
posted @ 2017-02-02 12:45 Fighting_Heart 编辑
摘要:$dp$,斜率优化。 设$dp[i]$表示前$i$个位置调整成$K-Anonymous$的最小花费。 那么,$dp[i]=min(dp[j]+sum[i]-sum[j]-x[j+1]*(i-j))$。 直接算是$O(n^2)$,进行斜率优化即可。 阅读全文
posted @ 2017-02-01 21:06 Fighting_Heart 编辑