![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
暖i
这个作者很懒,什么都没留下…
展开
-
区间贪心
给出n个开区间(x,y,从中尽可能的选择可能多的开区间,使得这些开区间两两没有交集例如开区间(1,3),(2,4),(3,5),(6,7).,可以最多选出3个区间,(1,3),(3,5),(6,7).#include<iostream>#include<cstdio>#include<algorithm>using namespace std;cons...原创 2019-03-25 19:19:00 · 138 阅读 · 0 评论 -
POJ3276-翻转奶牛
Language:Face The Right WayTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 7909 Accepted: 3656DescriptionFarmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them ...原创 2019-09-28 10:29:44 · 165 阅读 · 0 评论 -
(待)反转开关问题
1、一维 题目#include <cstdio>#include <cstring>const int SZ = 5007;int dir[SZ];bool f[SZ];int calc(int k, int n) { memset(f, false, sizeof f); int ans = 0, sum = 0; ...原创 2019-09-18 18:38:09 · 142 阅读 · 1 评论 -
1214:八皇后
1214:八皇后时间限制: 1000 ms 内存限制: 65536 KB提交数: 5048 通过数: 3084【题目描述】会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 × 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...原创 2019-09-04 11:11:36 · 363 阅读 · 0 评论 -
1212:LETTERS
【题目描述】给出一个roe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。【输入】第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。接着输出R行S列字母矩阵。【输出】最多能走过的不同字母的个数。【输入样例】3 6HFDFFBAJHGDHDGAGEH【输出样例】6【来源】No#incl...原创 2019-09-02 15:30:15 · 269 阅读 · 0 评论 -
1360:奇怪的电梯(lift)
1360:奇怪的电梯(lift)时间限制: 1000 ms 内存限制: 65536 KB提交数: 2309 通过数: 982【题目描述】大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N)上有一个数字Ki(0≤=Ki≤=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代...原创 2019-04-18 20:03:17 · 893 阅读 · 0 评论 -
1314:【例3.6】过河卒(Noip2002)
【题目描述】棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的,C≠A且C≠B。现在要求你计算出卒从...原创 2019-04-15 15:51:59 · 2389 阅读 · 2 评论 -
1335:【例2-4】连通块
题目描述】一个n * m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0。问有多少个四连通的黑色格子连通块。四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每个黑色格子能通过四连通的走法(上下左右),只走黑色格子,到达该联通块中的其它黑色格子。【输入】第一行两个整数n,m(1≤n,m≤100),表示一个n * m的方格图。接下来n行,每行m个整数,分别为0或1...原创 2019-04-17 15:48:27 · 767 阅读 · 0 评论 -
1333:【例2-2】Blah数集
【题目描述】大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下:(1)a是集合Ba的基,且a是Ba的第一个元素;(2)如果x在集合Ba中,则2x+1和3x+1也都在集合Ba中;(3)没有其他元素在集合Ba中了。现在小高斯想知道如果将集合Ba中元素按照升序排列,第N个元素会是多少?【输入】输入包括很多行,每行输入包括两个数字,集合的基a(1≤a≤5...原创 2019-04-16 21:27:29 · 1408 阅读 · 0 评论 -
1191:流感传染
时间限制: 1000 ms 内存限制: 65536 KB提交数: 4279 通过数: 2327【题目描述】有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。【输入】第一行一...原创 2019-04-11 20:52:37 · 352 阅读 · 0 评论 -
寻找无序数组的第K项
3种做法,1.最简单,sort排完序,然后输出下表k-1,但是复杂度最高2.堆排序(大根堆)#include<iostream>#include<cstdio>#include<cmath>#include<queue>using namespace std;const int maxn=100000;int a[maxn];in...原创 2019-03-26 20:57:10 · 167 阅读 · 0 评论 -
快速排序 c++
快速排序 排序算法中平均时间复杂度为Log(nlogn)还是很运用two pointers 的思想,先将最简单的一种 把temp=a[0]作为中轴,left=0,right=n-1;1.只要temp<a[right] ,right --;如果a[right]<=temp,就 a[left] =a[right] ,循环22.只要temp>a[left] left++,如果te...原创 2019-03-26 20:12:33 · 475 阅读 · 0 评论 -
two pointers
two pointers 是一种编程技巧,可以提高算法效率一个栗子 给定一个递增的正整数序列,和一个正整数M,求序列中的两个不同位置的数a和数b,使得他们的和恰好为M,输出所有满足条件的方案,比如{1,2,3,4,5,6},M=8 就存在 2+6=8 ,3+5 =8;最直观的做法是二重循环枚举 for(int i=0;i<n;i++){ for(int j= i+1;j<n;...原创 2019-03-26 09:24:51 · 153 阅读 · 0 评论 -
快速幂运算 c++
如果要求 a^b %m 简单的用循环就能出来,但是复杂度 O(b)在,a,b很大的时候复杂度就很高了,在算法笔记上介绍了两种算法1.递归思想快速幂基于二分的思想,有时也称二分幂(1) 如果b是奇数,那么 a^b=a * a^b-1(2)如果b是偶数,那么a^b=a ^b/2 * a ^b/2这样在log(b) 级别的次数转换后,就可以把 b 变成0 ,而任何正整数的0次方都是1 ,这也...原创 2019-03-26 08:48:26 · 598 阅读 · 0 评论 -
POJ 3061 Subsequence(尺取法)
DescriptionA sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, and a positive integer S (S < 100 000 000) are given. Write a program to find the mini...原创 2019-09-28 11:49:51 · 99 阅读 · 0 评论