入门经典例题
吃货妍
努力学习中
展开
-
例题7:偶数矩阵
题面见《算法竞赛入门经典》以后同。。。。 可以交题的传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=24665 题解: 枚举第一行的所有情况,这里给出一种简单的枚举方法,假设n=3,则第一行的情况是从000到111,这正好对应了二进制从0到2^n-1.剩下小细节在代码中给出 代码: #include #原创 2016-05-03 21:13:06 · 869 阅读 · 0 评论 -
第三章例题8 (频繁出现的数值)RMQ
给你长度为n的非递减数组,m次询问,问[l,r]内出现最多的值所出现的次数。 可交题的链接 题解: 真是好题,书上刚讲了RMQ,然后给出这道题,我一看两者也没啥联系啊,后来才知道,通过变化, 就是一道RMQ题。 因为是非递减的,所以相等的元素一定是连续出现的,然后我们记录每个连续块的数值(value),长度(coun),左端点(lef),右端点(righ),以及每个数属于哪个连续块(num原创 2016-10-07 19:29:07 · 414 阅读 · 0 评论 -
第三章例题4 k个最小和
可交题的传送门 挺好的姿势。 代码:#include using namespace std; const int maxn=800; void merge(int *A,int *B,int *C,int n) { priority_queue pq; for(int i=0;i<n;i++) { pq.push((node){A[i]+B[0],0原创 2016-10-06 19:26:44 · 236 阅读 · 0 评论 -
第三章 例题三 阿格斯(自定义优先队列)
题目链接:可交题的传送门 记得刚入门的时候问过学长可不可以自己定义一个优先队列,不过学长没搭理我。。。 代码:#include using namespace std; struct node//注意优先队列里的比较函数,跟正常的正好相反。 { int Qnum,Period,Time; bool operator < (const node &t)const{ r原创 2016-10-06 18:02:17 · 387 阅读 · 0 评论 -
例题25(侏罗纪)(中途相遇法)!
可交题的传送门 题解:好题,就是看着书上的讲解也理解了好长时间。 在代码中给出详细的解释。 代码: #include #include #include #include using namespace std; const int maxn=24; maptable; int solo(int x) { return x==0?0:solo(x/2)+(x&1);//求对应的二进原创 2016-09-28 19:58:35 · 437 阅读 · 0 评论 -
例题23 遥远的银河
可交题的传送门 代码:原创 2016-09-27 19:52:23 · 469 阅读 · 0 评论 -
例题20
能交题的传送门 题解:把模型建立出来还是很好想的,就是求在某一时刻,被扫到线段的条数个数最多。 代码: #include #include #include #include #include #include #include using namespace std; struct node { double x; int type; bool operator <原创 2016-09-26 19:29:21 · 251 阅读 · 0 评论 -
例题15 网络
可以交题的传送门:叫我萌萌哒的传送门。 题解: 想求用最少的服务器覆盖整个客户端,我们贪心的想,对于每个服务器,我们把他放在距目前最远的的客户端k位置上。更新未满足的客户端,继续这个操作。代码给出详细解释。#include #include #include #include using namespace std; const int MAXN=1010; vectorgr[MAXN],原创 2016-08-22 21:30:13 · 412 阅读 · 0 评论 -
例题12组装电脑
提交传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=13338 主要是map的使用和二分答案。 代码: #include #include #include #include #include #include #include #include #include #inclu原创 2016-05-08 12:37:14 · 282 阅读 · 0 评论 -
第三章 例题7(乒乓比赛)基础树状数组
可交题的链接 一直WA,错在add 操作时,我把上限设成n,设成n不对吗? 不解。。。 枚举每一个数,记录在它左边且比他小的数,在它右边且比他小的数,然后随便乘一下就好。 代码:#include #include #include #include #define ll long long using namespace std; const int maxn=20100;原创 2016-10-07 17:07:29 · 425 阅读 · 0 评论