随笔分类 - -----其他算法 1.二分
摘要:题目链接:Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market 题意: 有n个物品,S的钱,买每个物品有个计算价钱的公式。 让你在S钱中买最多的物品。 题解: 二分瞎搞一下就行了。 1 #include<bits/stdc++.h>
阅读全文
摘要:题目链接:hdu 3400 Line belt 题意: 在二维平面上给你两条线段AB,CD,线段上的速度分别是v1,v2,在线段外的速度为v3. 问从A到D最短的时间需要多少。 题解: 三分AB上的一个点,三分CD上的一个点。 即三分套三分。 1 #include<bits/stdc++.h> 2
阅读全文
摘要:题目链接:Codeforces Round #422 (Div. 2) C. Hacker, pack your bags! 题意: 有n条线段,现在让你找两条线段,使得这两条不重合并且两条线段的长度和为x。 然后使得这两条线段的价值最小。 题解: 先将所有线段按照左端点排序,然后将对应长度的线段扔
阅读全文
摘要:题目链接:Educational Codeforces Round 24 F. Level Generation 题意: 给你n个点,让你构造ans条边,使得这ans条边中至少有一半是桥。 让你求ans的最大值。 题解: 首先我们将每一个点按顺序连起来,那么可以构成n-1个桥。 然后我们可以把其中的
阅读全文
摘要:题目链接:hdu 4355 Party All the Time 题意: 有n个人,在一个一维的坐标轴上,现在让他们聚在一起。 每个人移动一段距离会产生一个 不开心值=S3*W,现在问你最小的全部加起来的不开心值是多少。 题解: 目标函数是一个凸函数,直接上三分就行了。 1 #include<bit
阅读全文
摘要:题目链接:hdu 4717 The Moving Points 题意: 在二维平面上有n个点,每个点给出移动的方向和速度。 问在某个时刻,这些点中最大距离最小是多少,输出时刻和距离。 题解: 我们可以知道,每个点对的距离要么是单调递增,要么是有一个峰的函数。 举例画一下可知道合成的这个函数最多只有一
阅读全文
摘要:题目链接:Educational Codeforces Round 21 E - Selling Souvenirs 题意: 有n个物品,每个物品有一个重量和价值,现在有一个m大的背包,问你最大能装多少价值。 题解: 做法一: 这题是加强版的01背包,不过有个特别的地方就是w只有三种。 所以可以枚举
阅读全文
摘要:题目链接:PAT L2-005. 集合相似度 题意: 给定两个整数集合,它们的相似度定义为:Nc/Nt*100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 题解: 对于给定的n预处理一下所有的情况,然后O(1)查询就
阅读全文
摘要:题目链接:Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed 题意: 一条直线有n个点,每个点有一个速度,然后将全部的点聚在一起,问最少的时间 题解: 二分答案,然后O(n)check一下能否聚到一起。 check:维护
阅读全文
摘要:题目链接:Codeforces Round #402 (Div. 2) D. String Game 题意: 给你两个字符串a,b,然后给你n=strlen(a)个数字n1,n2,...,nn,表示依次删a[ni-1]个字符。 当a串删到有k(k任意)个子串组合起来(顺序不变)刚好等于b串时,就不能
阅读全文
摘要:题目链接:hdu_5968_异或密码 题意: 中午,不解释 题解: 前缀处理一下异或值,然后上个二分查找就行了,注意是unsigned long long 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 usi
阅读全文
摘要:题目链接:hdu_5878_I Count Two Three 题意: 给你一个n,让你找满足那个式子的不比n小的最小数 题解: 先上个预处理,然后二分查找就行 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3
阅读全文
摘要:题目链接:hdu_5884_Sort 题意: 有n个数,每个数有个值,现在你可以选择每次K个数合并,合并的消耗为这K个数的权值和,问在合并为只有1个数的时候,总消耗不超过T的情况下,最小的K是多少 题解: 首先要选满足条件的最小K,肯定会想到二分。 然后是如何来写这个check函数的问题 我们要贪心
阅读全文
摘要:题目链接:hdu_5855_Less Time, More profit 题意: 有n个工厂,每建一个工厂要花费vi,需要时间ti,然后有m个商店,每个商店需要在指定的k个工厂中进货,才能盈利,如果其中一个不在,都不能盈利,问在满足利润大于等于k的情况下的最少时间t,和在t时刻的最大利润 题解: 二
阅读全文
摘要:题目链接:poj_1743_Musical Theme 题意: 给你一串数字,让你找最长的变化相同不重叠的子串,至少长度为5 题解: 处理数据后用后缀数组加二分答案,然后用height数组check答案,运用height数组求相同不重叠的子串经典运用 1 #include<cstdio> 2 #in
阅读全文
摘要:B. Powers of Two time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output B. Powers of Two time l
阅读全文
摘要:C. Cellular Network time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output You are given n poin
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1950 题意:实际就是求最长递增子序列 题解:有两种解法,一种是利用二分,一种是用线段树 这个是这题的二分代码: 1 #include <cstdio> 2 #include<algorithm> 3 #
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4521 题意:中文题,不解释 题解:这题就是LIS的加强版,可以用二分的nlogn来做,也可以用线段树的nlogn 做这个带间隔的LIS,具体看代码 1 #include<stdio.h> 2 #incl
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1969 题意:看了老半天,就是有N个饼,要分给f+1个人,每个人只能一样多,不能拼凑,多余的丢弃,问每个人最多能分到多少 题解:将最大的那个饼拿来二分,然后无限逼近满足能分出f+1个相同大小的饼 ,的最大
阅读全文