随笔分类 -  ---------基础算法---------

摘要:problem有n个人,第i个人重量ai每艘船载重为w,最多可乘2个人求能装载所有人的最少的船数n #includeusing namespace std;const int maxn = 30010;int a[maxn];int main(){ int w,... 阅读全文
posted @ 2018-07-23 21:12 gwj1139177410 阅读(192) 评论(0) 推荐(0)
摘要:枚举形式按照状态空间的规模大小,有如下几种常见的枚举和遍历形式: 1、多项式->循环,递推 2、指数->递归,位运算//从1~n这n个数中随机取多个,输出可能的方案vectorchosen;void calc(int x){ if(x==n+1){//问题边界 ... 阅读全文
posted @ 2018-05-26 13:16 gwj1139177410 阅读(128) 评论(0) 推荐(0)
摘要:problemsolutioncodes//二分答案//QAQ注意:起点和终点也是有石头的w#include#include#define maxn 100010using namespace std;int ll, n, m;int a[maxn];bool che... 阅读全文
posted @ 2018-05-22 13:27 gwj1139177410 阅读(120) 评论(0) 推荐(0)
摘要:problemsolutioncodes#include#include#includeusing namespace std;mapma, mm;string ans;int main(){ bool flag = true; string a, b; ... 阅读全文
posted @ 2018-05-22 13:15 gwj1139177410 阅读(103) 评论(0) 推荐(0)
摘要:problemtan90solutiontan90codes#includeusing namespace std;int main(){ int flag = 0, t = 0, res = 0; for(int i = 0; i >x; ... 阅读全文
posted @ 2018-05-22 12:54 gwj1139177410 阅读(160) 评论(0) 推荐(0)
摘要:problem有n堆果子每次可以将两堆果子合并,代价为新堆的果子数。求把所有果子合并成一堆的最小代价。solution每次合并最小的两堆用堆或者两个队列维护证明?反证法。codes#include#includeusing namespace std;priority... 阅读全文
posted @ 2018-05-21 21:43 gwj1139177410 阅读(119) 评论(0) 推荐(0)
摘要:problemn头奶牛要在指定的时间内吃草,而一个机器只能同时给一个奶牛吃草。给你每头奶牛吃草的开始时间和结束时间,问你最小需要多少机器和每头牛对应的方案。 n#include#includeusing namespace std;const int maxn = 5... 阅读全文
posted @ 2018-05-21 21:26 gwj1139177410 阅读(109) 评论(0) 推荐(0)
摘要:problem有C个奶牛去晒太阳,第i头奶牛需要minSPF[i]和maxSPF[i]单位强度之间的阳光。每头奶牛晒太阳之前要涂防晒霜,防晒霜有L种,涂上第i种以后阳光强度就会稳定为SPF[i],第i种防晒霜有cover[i]瓶。求最多可以满足多少头奶牛晒太阳。(1 ... 阅读全文
posted @ 2018-05-21 20:39 gwj1139177410 阅读(187) 评论(0) 推荐(0)
摘要:problemT组数据,每组包含n对ai,bi和一个p。 每组输出一个答案,∑i=1naibi%p" role="presentation" style="position: relative;">∑ni=1aibi%p∑i=1naibi%... 阅读全文
posted @ 2018-05-21 13:16 gwj1139177410 阅读(231) 评论(0) 推荐(0)
摘要:problem给出n头牛的身高,和m对关系(a[i]与b[i]可以相互看见。即他们中间的牛都比他们矮)。已知最高的牛为第p头,身高为h。求每头牛的身高最大可能是多少。solution计算牛的相对大小关系。 第p头最高h,比他矮的最高一定是h-1,,,所以最后每头牛的身... 阅读全文
posted @ 2018-05-20 21:48 gwj1139177410 阅读(196) 评论(0) 推荐(0)
摘要:problem给出n个点,每个点有一个价值,问一个边长为r的正方形最大能覆盖多大价值。solution维护二维前缀和即可,复杂度O(n^2)注意代码容易被卡: MLE:空间太大,只能比5000大一点。以及前缀和开成一个,不要用两个数组。 RE:空间太小,,不要开500... 阅读全文
posted @ 2018-05-20 21:26 gwj1139177410 阅读(163) 评论(0) 推荐(0)
摘要:problem给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序排序分为两种 1:(0,l,r)表示将区间[l,r]的数字升序排序 2:(1,l,r)表示将区间[l,r]的数字降序排序 最后询问第q位置上的数字。solution考虑二分答案 对于mid ... 阅读全文
posted @ 2018-05-18 06:09 gwj1139177410 阅读(146) 评论(0) 推荐(0)
摘要:题解显然纸牌总数必为n的倍数,否则无解(题目也说了每个人和平均数(最后的纸牌数)差多少,就要从旁边的人手中拿多少张牌。即使某个时刻某人手中的牌是负数也没有关系,可以认为是他a[i]从a[i+1]手中拿牌发生在a[i-1]从a[i]手中拿牌之前。所以,直接算出平均数。 ... 阅读全文
posted @ 2018-05-12 13:17 gwj1139177410 阅读(150) 评论(0) 推荐(0)
摘要:solution直接sort按原声数最大,字幕数第二排序即可。codes#include#includeusing namespace std;const int maxn = 200010;int b[maxn], c[maxn];mapma;//语言i有多少科学家... 阅读全文
posted @ 2018-05-11 13:17 gwj1139177410 阅读(126) 评论(0) 推荐(0)
摘要:题面传送门 传送门2题解如果没有相邻限制的话,我们开一个大根堆每一次取最大的就行了,但是如果存在限制,我们就加入一个后悔操作,来做调整贪心。 首先如果我们选择了一个点i,那么其相邻的点i−1,i+1,都不能选了,所以我们删除这两个点,因为i与它们两个是互斥的。 所以我... 阅读全文
posted @ 2018-04-24 21:28 gwj1139177410 阅读(158) 评论(0) 推荐(0)
摘要:描述:有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。... 阅读全文
posted @ 2017-01-25 18:58 gwj1139177410 阅读(92) 评论(0) 推荐(0)
摘要:描述: 在n*n方陈里填入1,2,…,n*n,要求填成蛇形。例如n=4时方陈为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 输入: 直接输入方陈的维数,即n的值。(n#includeint main(){ int a[100]... 阅读全文
posted @ 2017-01-25 18:40 gwj1139177410 阅读(103) 评论(0) 推荐(0)
摘要:描述: 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(aint main (){ int a, b, c; ... 阅读全文
posted @ 2017-01-25 18:37 gwj1139177410 阅读(109) 评论(0) 推荐(0)
摘要:描述: 请判断一个数是不是水仙花数。 其中水仙花数定义各个位数立方和等于它本身的三位数。 输入: 有多组测试数据,每组测试数据以包含一个整数n(100int main(){ int n; while(scanf("%d",&n)){ if(n... 阅读全文
posted @ 2017-01-25 17:15 gwj1139177410 阅读(106) 评论(0) 推荐(0)

选择