![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构 STL
文章平均质量分 83
Fsss_7
这个作者很懒,什么都没留下…
展开
-
bzoj3687: 简单题
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3687题意:中文题。。分析:要求计算子集算术和的异或和。首先我们设dp[i]表示由这n个数能有多少种方案组成i,显然这样dp[1~sum]就将所有的子集和统计完了,那么计算的时候只要判断(dp[i]&1)就有ans^=i。这样的复杂度是sum*n,对于n=10^3,sum=2*10^6是原创 2016-03-07 20:33:57 · 1238 阅读 · 0 评论 -
hdu5716带可选字符的多字符串匹配
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5716题意:中文题。分析:之前补过一次百度之星的复赛,补到这题的时候没去找人问怎么做。后来做了一个XG出的多校hdu5745这个题知道了这种优化,但是当时没有联想到怎么做。直到这次打大连现场赛的时候看到B题。???这TM和百度之星那题不是一模一样?然后就后悔当时没有补完这个题。回到正题,这个题的这种原创 2016-10-19 01:56:26 · 1439 阅读 · 2 评论 -
hdu5890Eighty seven
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5890题意:给定n个数,q个询问,每次询问要求n个数中去掉a[i],a[j],a[k]然后问是否能在剩下的数中找出10个数使得和为87。分析:询问的次数为10^5然而不同的询问只有20000多一点,所以我们先预处理出所有询问的答案,每一个询问我们可以用背包dp来求解,但是如果直接算背包的话会超时,我原创 2016-09-17 18:27:25 · 1089 阅读 · 0 评论 -
hdu5884Sort
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5884题意:给定n个数和一个上界sum,求最小的k满足将这n个数合并成一个数的花费小于等于sum,每次最多能取出k个数合并花费为这些数的和。分析:这个模型很像石子合并,其实原理也差不多就是多次合并最优是让小的数去做多次合并大的数少做,这样才会更优。但是这里是求最小的k,比较容易想到二分答案,我们原创 2016-09-17 19:25:43 · 1022 阅读 · 3 评论 -
hdu5876Sparse Graph
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876题意:给定一个无向图的m条边,求其补图以点s为起点的最短路。分析:用一个队列维护用于更新的点和一个set维护哪些点还没有被更新,每次将于当前点直接相连的边丢进没有被更新的set中即可。代码:#include#include#include#include#include#in原创 2016-09-16 14:31:30 · 487 阅读 · 0 评论 -
hdu5745La Vie en rose
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5745题意:给定一个母串s和一个子串p。问s中有多少个位置可以匹配p,可以不完全匹配,p字符串中的每个位置的字符最多可以变动一次(不变的,与前面的字符交换,与后面的字符交换)。分析:做多校学姿势。xg的题解解释得很好,但是对于我这种没写过这种优化的人来说还是要看代码学习一遍,我说下我的理解吧。首先x原创 2016-07-23 14:37:06 · 1029 阅读 · 0 评论 -
Codeforces Round #353 (Div. 2)D. Tree Construction
链接:http://codeforces.com/contest/675/problem/D题意:按二叉搜索树的方法插入n个互不相等的数,然后要求输出除根以外n-1个点的父亲的权值。分析:当我们建好整棵树后,我们会知道这棵二叉树的中序遍历就是这些数从小到大排列,那么每个数的父亲就是比它小的中最大的那个数或者比它大的数中最小的。知道了这些之后我们随便用点结构或者stl里面的容器都行啦。我用的原创 2016-05-17 21:24:15 · 395 阅读 · 0 评论 -
bzoj3166: [Heoi2013]Alo
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3166题意:中文题。分析:枚举每个元素,将它当成那个次大值,然后在它所作用的区间内找异或最大值即可。怎么找它作用的区间呢?用set和priority_queue一起,用优先队列使得大的元素的位置先进set。然后对于每一个新位置找他前面和后面的位置边界即可。我写得好丑~O(nlog(max原创 2016-04-13 23:32:49 · 514 阅读 · 0 评论 -
Codeforces Round #342 (Div. 2)
链接:http://codeforces.com/contest/625problemA:很经典的问题,你有n元钱,有两种牛奶,A:a元一瓶,B:b元一瓶,喝完返还瓶子退回c元,问最大能喝多少瓶牛奶。分析:贪心先全买A或者B,取最大的即可。代码:#include#include#include#include#include#include#include#inclu原创 2016-02-25 01:39:55 · 608 阅读 · 0 评论 -
Codeforces Round #378 (Div. 2)D. Kostya the Sculptor
链接:http://codeforces.com/contest/733/problem/D题意:给定n个长方体,求一个最大的内切球的半径,可以是两块石头将两个完全匹配的面合起来的或者就用一块石头,输出切出最大内切球的那1/2个石头是哪些。分析:我们先考虑用一块石头的最大内切球半径,一定是ans=max(min(a,b,c))。令a代码:#include#include#inc原创 2016-11-01 14:21:07 · 450 阅读 · 0 评论