![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 70
NoendHu
这个作者很懒,什么都没留下…
展开
-
Average UVA - 1451 斜率优化
题意:给定长度为N的01串,选一个长度不小于L的区间,使得子串中,数字的平均值最大。如果有多解,区间尽量小,如果任然有多解,起点下边尽量小。首先求出前缀和a[i],为前n项数字和。区间i-j的平均值即为(a[j]-a[i-1])/(j-i+1);算法思路,从小到大枚举t,找出t'中间重点在求t'时,需要维护一个凹区间,凹区间具有斜率递增的性质,因此可以再插入一个新的节点时,将区间内新形成的原创 2018-01-06 19:36:56 · 226 阅读 · 1 评论 -
反转子串 HihoCoder - 1671
给定一个只包含括号和小写字母的字符串S,例如S="a(bc(de)fg)hijk"。 其中括号表示将里面的字符串翻转。(注意括号可能嵌套)请你输出翻转之后的字符串。Input字符串S。对于50%的数据,|S| ≤ 1000 对于100%的数据, |S| ≤ 5000000Output输出反转后的字符串(不带括号)。Sample Inputa(bc(de)fg)hijkSample Output...原创 2018-03-06 18:01:32 · 1428 阅读 · 1 评论 -
Meeting point-1 HDU - 4311
题意:给出平面坐标系上若干个点,求出一点,使得其他点到其的曼哈顿距离和最小。It has been ten years since TJU-ACM established. And in this year all the retired TJU-ACMers want to get together to celebrate the tenth anniversary. Because the ...原创 2018-03-06 17:14:56 · 153 阅读 · 0 评论 -
Minimum Sum LCM UVA - 10791 思维题
题意为 给你一个数N,让你求出若干个数使得这若干个数的最小公倍数为N,并且这若干个数的和最小。例如N=12时,这若干个数则为3,4.和为7 N= 10时,这若干个数为2,5.和为7参照了其他大佬的解法将n分解成n = p1 ^ k1 * p2 ^ k2 * ... * pm ^ km,然后求解sum = ∑(1≤i≤m)pi ^ ki.此时sum即我们需要的答案,虽然我也不知道为什么这...原创 2018-03-06 16:44:33 · 171 阅读 · 0 评论 -
多重背包-Holding Bin-Laden Captive!-hdu1085
此问题可以用母函数做也可以用多重背包解法解得。多重背包解法代码(多重背包转换为简单01背包):#include<bits/stdc++.h>using namespace std;int dp[8010];int main(){ int a[3]; int num[3]={1,2,5}; while(~scanf("%d%d%d",&a[0],&...原创 2018-03-10 11:16:45 · 194 阅读 · 0 评论 -
母函数模板题 Holding Bin-Laden Captive! hdu-1085
题意:给出你1元,2元,5元硬币的个数,求出最小的不能组合成的金额.代码:#include<bits/stdc++.h>using namespace std;int sum1[8010];int sum2[8010];int main(){ int a[3]; int num[3]={1,2,5}; while(~scanf("%d%d%d",&a...原创 2018-03-10 10:45:40 · 201 阅读 · 0 评论 -
线段树基本操作
sum[manx<<2]代表建立的线段树,区间和。add[maxn<<2]为区间更新的懒惰标记。A[maxn]为原数据代码://PushUp函数更新节点信息void PushUp(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];};//建树void build(int l,int r,int rt)...原创 2018-03-09 20:47:20 · 224 阅读 · 0 评论 -
二分图最大匹配
例子:m个男生,n个女生用line[m][n]代表n,m是否能配对used[n]代表n是否被占有了。match[n]代表n个女生的匹配对象核心代码:bool found(int x){ for(int i=0;i<n;i++) { if(line[x][i]&&!used[i]) { used[i]=1...原创 2018-03-09 17:53:45 · 121 阅读 · 0 评论 -
并查集的实现
用int par[n]代表每个节点的父亲rank[n]代表树的高度//初始化void init(int n){ for(int i=0;i<n;i++) { par[i]=i; rank[i]=0; }}//查询根节点int find(int x){ if(par[x]==x) return x; ...原创 2018-03-09 11:33:46 · 131 阅读 · 0 评论 -
Safe Or Unsafe hdu2572 优先队列 哈弗曼编码
Safe Or UnsafeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3120 Accepted Submission(s): 1275Problem DescriptionJavac++ 一天在看计算机的书籍的时候,看到了一个...原创 2018-03-09 10:38:53 · 161 阅读 · 0 评论 -
Hyper Prefix Sets UVA - 11488 字典树裸题
Prefix goodness of a set string is length of longest common prefix*number of strings in the set. Forexample the prefix goodness of the set {000,001,0011} is 6.You are given a set of binary strings. Fi...原创 2018-03-07 18:59:02 · 258 阅读 · 0 评论 -
Defense Lines UVA - 1471
题意:给出一序列,求删除一段连续的序列之后,求出长度最长的上升子序列。这道题需要在NlogN以下的复杂度。首先对数组进行预处理,我们用F[i]记录以a[i]为开头的最长子序列长度,g[i]记录以a[i]为结尾的最长子序列长度。我们按a[i]从头到尾进行遍历,然后维护一个存有包含a[i]与g[i]结构体的集合。在集合中寻找大小小于a[i]的数值时,二分查找。这样时间负责度便为NlogN在维护集合时,...原创 2018-03-06 19:41:17 · 152 阅读 · 0 评论 -
The King's Ups and Downs UVALive - 6177
看大佬的题解学到的题目意思就是给你一个N,代表有n个人身高分别从1到n,求出共有多少种排法使得身高是高低交错的。f[i][0]代表长度为i的,最后结尾为高低排法的种数f[i][1]代表长度为i的,最后结尾为低高排法的种数ans[i]代表长度为i的,总的排法 因此f[i][0]+f[i][1]=ans[i]当我们求ans[i]时,即插入身高为i的人时,新插入的身高是最高的,因原创 2018-01-30 11:57:48 · 137 阅读 · 0 评论 -
计蒜客-园艺布置 01分数二分 + 最大字段和
近期,法师康采纳了员工们的提议,计划在总部大楼内部种植园艺,以提供更加温馨的工作环境。公司将园艺设计的任务交给了晓萌同学。公司总部大楼内部的构造可以分为n个区域,编号为0, 1, …, n–1,其中区域i与i + 1是相邻的(0 ≤ i < n – 1)。根据员工的投票和反馈,晓萌拿到了一份数据,表明在区域i种植园艺可以获得员工的满意度为Ai。晓萌希望园艺的布置方案满足条件:1.至少覆盖m个...原创 2018-01-31 20:46:58 · 228 阅读 · 0 评论 -
Corporative Network UVALive - 3027 并查集
A very big corporation is developing its corporative network. In the beginning each of the N enterprisesof the corporation, numerated from 1 to N, organized its own computing and telecommunication c原创 2018-01-06 20:02:56 · 143 阅读 · 0 评论 -
Mike and Foam CodeForces - 548E
题意是:有n个数,q次查询。有一个集合初始状态为空,每次查询给出n个数中下标,若集合中没有这个数,则将这个数插入集合,否则将这个数从集合中删除,每次查询给出集合中gcd(x,y)==1的对数。解法:令F(t)为gcd(x,y)%t==0的对数,f(t)为gcd(x,y)==t的对数 则$$F(n)=\sum_{n|d}f(d)$$根据莫比乌斯函数可得$$f(n)=\sum_{n|d}u(\frac...原创 2018-05-02 09:04:27 · 220 阅读 · 0 评论