ACM-基础算法+思维
文章平均质量分 50
hahahahhahello
这个作者很懒,什么都没留下…
展开
-
FZU - 2203 单纵大法好(贪心+二分)
两年前的坑现在补上,经典的贪心+二分#include <stdio.h>#include <string.h>const int maxn = 200005;int N,K,A,M;int pos[maxn];bool vis[maxn];bool judge(int m){ int i,cnt,len; memset( vis,fals...原创 2019-05-23 21:17:05 · 370 阅读 · 0 评论 -
ZOJ - 3203 Light Bulb (几何+三分)
题意:高度为H的灯泡固定,有一面墙距离灯泡水平D,一个高度h的人站在灯和墙之间移动,问人的影子的最长距离为多少?思路:训练时卡在了这个题上面,实际上就是一个初中水平的几何题,作几条辅助线,我们设人与灯的水平距离为x,在影子没有射到墙上之前,离灯越远影子越长,所以我们只考虑影子恰好射到墙上到影子与墙重合的过程,可以计算出墙上的影子的长度为 H-D*(H-h)/ x,地上的影子为D - x,x的取值范...原创 2018-04-20 18:17:42 · 261 阅读 · 0 评论 -
浙江省赛 Mahjong Sorting(分类讨论)
Mahjong SortingTime Limit: 1 Second Memory Limit: 65536 KBDreamGrid has just found a set of Mahjong with suited tiles and a White Dragon tile in his pocket. Each suited tile has a suit (Characte...原创 2018-04-30 20:19:36 · 1220 阅读 · 0 评论 -
对开根号判断素数的优化
恼人的素数连羽疲倦的推开公主阁的门,“啊啊啊,怎么会留这么麻烦的作业。”“既然布置了,那就没有办法了啊,今晚一起算就好了。”连辰拍了拍连羽的背,表示鼓励。荆盈将做好的菜端到餐桌上,看着勉强露出笑容的两人问道:“所以你们老师布置了什么题啊?”“关于素数的题,老师给了一个很大的数,问是不是素数。”连辰解释道。“素数啊,我到是知道些比较快的判断方法。”“真的?”连羽如同见了救星一般。作为立志要成为计算机...原创 2017-09-16 22:35:53 · 3208 阅读 · 0 评论 -
HDU - 2209 翻纸牌游戏(贪心)
HDU - 2209 翻纸牌游戏 当前的这张牌是否翻转取决于它的前一张牌是否朝上,如果朝上,不翻转,朝下,则翻转,这是贪心的思想,但是,对于第一张牌来说,它的前面没有牌了,所以可以翻转,也可以不翻转,分两种情况来判断,参考的别人的代码 #include<stdio.h>#include<algorithm>#include<string.h>u...原创 2017-08-26 10:21:26 · 453 阅读 · 0 评论 -
CodeForces - 735B Urbanization (贪心)
CodeForces - 735B Urbanization 题意:两个城市,第一个城市去n1个人,第二个城市去n2个人,每个人都有一定的资产,输出两个城市的平均资产最大和 思路:贪心,对人的资产先从大到小排序,假设n1小,就把前n1大的人去第一个城市,就是让资产高的人去容纳人数较小的城市#include<stdio.h>#include<iostream>#i...原创 2017-09-01 11:40:49 · 307 阅读 · 0 评论 -
CodeForces - 344C Rational Resistance(贪心)
题意:给出两个数a,b,问最少用多少个电阻为1的电阻用串联或并联的方式凑成a/b的电阻思路:n个为1的电阻并联之后电阻为1/n,如果a/b的电阻大于1,所以整数部分我们用整数个为1的电阻串联,然后我们得到一个小于1的的电阻,这个电阻肯定是并联得到,由并联电阻公式,我们可以取这个分数的倒数,然后继续贪心,直到a为1,a为1时,1/b就是b个电阻并联#include <iostream>...原创 2018-04-09 22:44:01 · 200 阅读 · 0 评论 -
HDU - 2962 Trucking 最短路加二分
HDU - 2962 TruckingA certain local trucking company would like to transport some goods on a cargo truck from one place to another. It is desirable to transport as much goods as possible each trip. Unf...原创 2017-08-05 22:52:01 · 415 阅读 · 0 评论 -
codeforces 812C Sagheer and Nubian Market (二分)
codeforces 812C Sagheer and Nubian MarkeOn his trip to Luxor and Aswan, Sagheer went to a Nubian market to buy some souvenirs for his friends and relatives. The market has some strange rules. It conta...原创 2017-08-20 20:30:09 · 359 阅读 · 0 评论 -
HDU 5094 Maze(状态压缩+BFS)
MazeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others)Total Submission(s): 1729 Accepted Submission(s): 597 Problem DescriptionThis story happened on the ...原创 2018-07-17 13:12:22 · 238 阅读 · 0 评论 -
杭电多校第一场 Distinct Values(贪心+set)
Distinct ValuesTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2922 Accepted Submission(s): 946 Problem DescriptionChiaki has an arra...原创 2018-07-24 20:57:25 · 211 阅读 · 0 评论 -
HDU - 6185 Covering (高斯消元 矩阵快速幂)
CoveringTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1774 Accepted Submission(s): 677Problem Description Bob's school has a big playground...原创 2018-07-14 21:05:16 · 285 阅读 · 0 评论 -
POJ - 3279 Fliptile(反转)
题意:一个01矩阵,每翻转一个格子,这个格子的上下左右的格子都会被翻转,要把整个矩阵的格子都翻转为0,求需要翻转的最小次数,最小次数的解为多个时,输出字典序最小的一组。解不存在输出IMPOSSIBLE。思路:如果暴力搜索的话有种翻转的方法,超时。如果第一行是否翻转已经确定,那么第二行是否翻转也确定了,同理除了最后一行其余所有的格子是否翻转都已确定了,如果最后一行有1的话就说明不存在可行解。所以...原创 2019-05-15 14:40:24 · 656 阅读 · 0 评论 -
POJ - 3320 Jessica's Reading Problem(尺取法)
题意:求最少的连续读的页数能读到所有的知识点思路:尺取法,把所有的知识点的编号放到set里求出知识点的个数,在尺取过程中用map记录当前以学知识点的个数。#include <map>#include <set>#include <stdio.h>#include <algorithm>#define maxn 1000005usi...原创 2019-05-15 14:20:28 · 214 阅读 · 0 评论 -
POJ - 3734 Blocks(矩阵快速幂)
题意:个球,有红黄蓝绿4种颜色,要求红球和绿球有偶数个,有多少种排列方式?思路::红球与绿球都为偶数的个数:红球与绿球恰有一个为偶数的个数:红球与绿球都为奇数的个数#include <stdio.h>#include <vector>using namespace std;const int mod = 10007;typedef ...原创 2019-05-20 09:41:19 · 226 阅读 · 0 评论 -
ACM-ICPC 2018 北京赛区网络预赛 Tomb Raider(暴力)
时间限制:1000ms单点时限:1000ms内存限制:256MB描述Lara Croft, the fiercely independent daughter of a missing adventurer, must push herself beyond her limits when she discovers the island where her father disa...原创 2018-09-22 19:39:29 · 486 阅读 · 0 评论 -
杭电多校第十场 CSGO
Problem J. CSGOTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 294 Accepted Submission(s): 145 Problem DescriptionYou are playing C...原创 2018-08-22 22:47:00 · 328 阅读 · 0 评论 -
杭电多校第七场 Sequence(分段+矩阵快速幂求斐波那契数列)
SequenceTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1672 Accepted Submission(s): 608Problem DescriptionLet us define a sequence as...原创 2018-08-14 21:25:40 · 265 阅读 · 0 评论 -
杭电多校第四场 Problem E. Matrix from Arrays(找规律 + 二维前缀和)
Problem E. Matrix from ArraysTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1169 Accepted Submission(s): 526 Problem DescriptionKa...原创 2018-08-03 19:51:23 · 205 阅读 · 0 评论 -
牛客网ACM多校第二场 I car(规律)
链接:https://www.nowcoder.com/acm/contest/140/I来源:牛客网 White Cloud has a square of n*n from (1,1) to (n,n).White Rabbit wants to put in several cars. Each car will start moving at the same time and ...原创 2018-07-22 09:55:57 · 230 阅读 · 0 评论 -
CodeForces - 732D Exams(二分+贪心)
CodeForces - 732D Exams(二分+贪心) 题意:要在n天内通过m科考试,考每一科目是,都必须要有一定的准备时间,准备时间可以不连续,给出n天内每一天可以考的科目,输出最少需要多少天才能通过所有的科目。 思路:对需要多少天才能通过所有科目进行二分...原创 2017-08-25 09:40:57 · 394 阅读 · 1 评论 -
CodeForces - 734C Anton and Making Potions(二分)
CodeForces - 734C Anton and Making Potions题目:有n个药剂需要制作,制作每个药剂需要time秒钟,并且最初有w的能量;魔法师现在有两种催化剂,第一种可以消耗fc[i]的能量,使得所有药剂的所需时间变为fw[i];第二种消耗能量sc[i],使得sw[i]个数的药剂瞬间制作好;但两种催化剂每种只能最多选择一种,问最后最少需要多少时间;思路:注意到第二种的催...原创 2017-08-25 20:46:48 · 302 阅读 · 0 评论 -
FZU 2140 Forever 0.5 (构造思维)
题意:找出n个点,满足一下条件,任意两点的距离不大于1,任意一个点与原点的距离不大于1,有n对点的距离等于1,n个点组成的面积不小于0.5,不大于0.75。思路:在一个单位圆上,以圆点为一个顶点,另外两个顶点在圆上的等边三角形,那条圆弧上的点和三个顶点都满足条件。#include <iostream>#include <cstdio>#include <cmath...原创 2018-04-14 20:24:18 · 185 阅读 · 0 评论 -
FZU - 2141 Sub-Bipartite Graph (二分图+贪心)
题意:给出n个点,m条边,找出一个子二分图,让这个子二分图的变数至少为m/2,题目保证一定存在这样的子二分图。题目中给了二分图与子图的定义,二分图的定义是:如果一个图的所有顶点可以被分为U V两个集合,并且所有边的两个顶点恰好一个属于U,一个属于Y,即每个集合内的顶点没有边相连,那么此图就是二分图。二分图里并不含有奇圈。这道题贪心的来做,假设前i个点已经形成了二分图,再添加第i+1个点的时候,判断...原创 2018-04-14 19:52:35 · 206 阅读 · 0 评论 -
codeforces 719B:Anatoly and Cockroaches(思维)
codeforces 719B:Anatoly and Cockroaches(思维)DescriptionAnatoly lives in the university dorm as many other students do. As you know, cockroaches are also living there together with students. Coc原创 2017-10-15 10:25:06 · 321 阅读 · 0 评论 -
CodeForces - 330C Purification (思维)
CodeForces - 330C Purification 题意:一个n阶矩阵,' . '代表这一股邪恶力量,'E'代表着多股的邪恶力量,在一个格子上施法,与这个格子同行同列的邪恶力量都会被消除,但是不能在‘E’上施法,即使这个E上的邪恶力量已经被消除,这个矩阵每个点都有邪恶力量,求把所有邪恶力量都消除的最小施法次数对应的施法位置,如果不能消灭所有的邪恶力量,则输出-1思路:当有一个原创 2017-09-27 09:37:40 · 484 阅读 · 0 评论 -
CodeForces - 330B Road Construction 思维
CodeForces - 330B Road Construction A country has n cities. Initially, there is no road in the country. One day, the king decides to construct some roads connecting pairs of cities. Roads can原创 2017-09-26 21:59:41 · 560 阅读 · 0 评论 -
CodeForces - 735C Tennis Championship(思维+fib数列)
CodeForces - 735C Tennis Championship 题意:一个淘汰赛制比赛,规定比赛的双方的胜场不超过一场,输入人数,输出冠军能够参加的最大比赛场数 思路:一开始没有注意比赛双方胜场不超过一场,错,转变一下思维,用 F[i] 数组表示最大比赛场数为 i 场时所需要的最小人数,在冠亚军比赛之前冠军赢了 i - 1 场,并且与冠军比赛的人和与亚原创 2017-09-01 10:34:40 · 542 阅读 · 0 评论 -
51Nod—1717 好数(思维)
思维题,显然反转奇数次后为1,偶数次为0 对于一个数6=1*6 6=2*3, 10=1*10,10=2*5 ,9=1*9 9=3*3 可以发现这个数有多少因子就反转几次,而因子都是成对出现的,但是如果一个数是一个数的平方的话,这一对数是相同的,于是:是一个数的平方的数反转奇数次,其余的都反转偶数次 1e15的数据量,一开始没注意,wa了好几次 #inc原创 2017-08-23 13:19:30 · 234 阅读 · 0 评论 -
HDU 2047 阿牛的EOF牛肉串 (递推)
一看到这道题,很明显是排列组合问题,我就回想高中时老师讲的各种方法,明显正的求不好求,于是求反着的,最后拿总情况减掉不符合的,我各种方法都用上了,什么挡板法、捆绑法等,可是情况太多了,越求越乱。 在一想高中做的排列组合题大都给的是一个确定的数值,而这里给的是n,看了题解才明白用的是递推的方法,类似于斐波那契数列,f(n)表示长度为n时的涂法,当第n个不是O时,共有f(n)=2*f(n原创 2017-08-23 13:08:51 · 373 阅读 · 0 评论 -
51nod1267 四个数和为0
先得到任意两个数的和,从小到大排序,从两边向中间扫一遍就行了#include <stdio.h>#include <algorithm>using namespace std;typedef long long ll;int a[1005];struct node{ int l,r; ll sum;}sum[1005 * 1005];bool cmp(...原创 2018-04-09 21:38:33 · 158 阅读 · 0 评论 -
FZU - 2214 Knapsack problem(思维)
很好的一道思维题,三场比赛随意抽两场比赛跑男团都不能全输,也就是说,随意抽两场出现跑男团都输的情况跑男团输,所以敌方把所有的人数都投入的两轮中。(1)当M为偶数时,即敌方队的人数为偶数时,设2*k=M;则跑男团的三轮人数为:k, k, k-1这样的安排会使敌方队任选两轮,不可能都赢。且这是最优的了所以N>=(k+k+k-1);(2)当M为奇数时, 即敌方队的人数为奇数时,设2*K+1=M;则...原创 2018-04-15 19:47:31 · 186 阅读 · 0 评论 -
FZU - 2216 The Longest Straight(二分枚举或队列)
题意:有n张牌,最大为m,其中0能充当1-m的任意牌,求顺子的最大长度思路:这道题开始我是用了一个队列维护顺子,从1到m开始枚举,如果这张牌存在的话,直接push进去,如果不存在的话,我们也push进去,但0的个数我们要减去1,如果此时0的个数为0的话,我们开始pop,直到pop出一个需要用0来代替的数。此过程队列的最大长度就是答案。看了题解后发现二分也能做#include <iostrea...原创 2018-04-15 20:35:00 · 177 阅读 · 0 评论 -
UVA1121 Subsequence 二分+前缀数组
Subsequence Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 40 Accepted Submission(s) : 17Problem DescriptionA sequence of N positive integers ...原创 2017-10-16 22:27:42 · 259 阅读 · 0 评论 -
POJ 2456 疯牛(二分+贪心)
疯牛时间限制:1000 ms | 内存限制:65535 KB难度:4描述农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000,000,000).但是,John的C (2 <= C <= N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们...原创 2017-10-22 09:35:55 · 1016 阅读 · 1 评论 -
UVA - 1152 Values whose Sum is 0 (lower_bound,upper_bound)
给出4个大小为n的数组,从四个数组中分别取出一个数,使它们的和为0,问总共有多少种取法?先处理处前两个数组任意两个数的和,从小到大排序,枚举后两个数组的数,二分,利用了lower_bound,upper_bound函数#include <stdio.h>#include <iostream>#include <algorithm>using namesp...原创 2018-04-09 21:46:41 · 122 阅读 · 0 评论 -
ZOJ - 2974 Just Pour the Water(矩阵快速幂)
矩阵快速幂的题,之前没怎么写过,参考的别人的代码。#include <iostream>#include <vector>#include <cstdio>using namespace std;typedef vector<double> vec;typedef vector<vec> mat;typedef long l...原创 2018-04-18 21:27:44 · 228 阅读 · 0 评论 -
CodeForces - 652C Foe Pairs
思路:记录下来每一个数在序列里的位置,然后记录每一个位置向右最远能到达哪个位置#include <stdio.h>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 3 * 1e5 + 10;int a[maxn],pos[maxn],mx[maxn];...原创 2018-04-07 09:17:57 · 241 阅读 · 0 评论 -
HDU - 6025 Coprime Sequence(前缀GCD+后缀GCD)
题意:给出一个序列,这个序列所以数的最大公因数为1,要求去掉任意一个数,是这个序列所有数的最大公因数最大,输出这个最大公因数思路:用两层for循环肯定会超时,我们可以用两个数组,left数组记录这个数(包括这个数)左边所有数的最大公因数,right数组同理,然后,去掉第i个数之后的所有数的最大公因数为gcd(left[i - 1],right[i + 1]),然后特判第一个位置和最后一个位置#in...原创 2018-04-07 08:53:12 · 213 阅读 · 0 评论 -
sdut 3903 CF(贪心+背包)
题意:在T分钟内完成n道题,每一道题花费时间c,每一道题完成时的得分为a-d*t,即完成这道题所给的初始分数减去完成这道题时所用的时间乘这道题每分钟减掉的分数,问在T分钟内能得到的最大分数是多少?思路:首先假设有2道题,先做1,在做2,得到的分数为 a1 - d1 * c1 + a2 - (c1 + c2) * d2 先做2,在做1,得到的分数为a2 - d2 * c2 + a1 - (c1 +...原创 2018-04-04 21:19:48 · 198 阅读 · 0 评论