- 博客(21)
- 收藏
- 关注
原创 POJ3320
尺取法做,在某个区间[s,t]已经覆盖了所有的知识点的情况。 有了如下的等价关系,所有的知识点被覆盖等价于每个知识点出现的次数不少于1.附上代码。#include<iostream> #include<cstdio> #include<queue> #include<set> #include<algorithm> #include<map> using namespace std; const
2016-05-13 12:15:06 326
原创 POJ3061
http://poj.org/problem?id=3061 先说一种nlogn的算法,预先以O(N)的时间计算好sum,二分搜索,序列和不小于的结尾T的最小值。#include<iostream> #include<algorithm> #include<cstdio> #include<queue> #include<cstring> using namespace std; const int
2016-05-13 09:00:55 491
原创 POJ1064
http://poj.org/problem?id=1064 题意:知道N段电缆的长度,从他们中切割出K条长度相同的电缆,求最大可以切多长,答案保留2位小数。二分搜索。#include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include<cmath> using namespace std; const in
2016-05-11 20:53:51 548
原创 noi2010超级钢琴
优先队列+st#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> using namespace std; typedef long long ll; const int INF=1E9; const int maxn=5e5+10; int n,k,minlen,maxlen
2016-05-11 13:27:17 408
原创 NOI能量采集
http://www.lydsy.com/JudgeOnline/problem.php?id=2005 这道题第一个想到了一种解法,和挑战上求线段的格点数一样,只要求出gcd(x-0,y-0)-1就是当前点的于(0,0)点的格点数,于是这里只要枚举x,y即可求解。。80的算法。。对于数据大的会超时。。下面先附上算法。#include<iostream> #include<cstdio> #incl
2016-05-10 11:30:08 979
原创 POJ2395最小生成树水
题意是从1号点出发最短路遍历所有点求其中最长的边。 思路,很明显是最小生成树问题,用kruskal去做每次更新最大边即可。 附上代码。#include<iostream> #include<cstdio> #include<algorithm> #include<queue> using namespace std; const int maxn=1e4+10; const int maxa=2
2016-05-07 09:06:54 459
原创 POJ3469
线段树解法: 本题需要成段更新区间,所以 为了保护线段树的高效,对每个节点,我们维护一下两个数据。a.给这个节点对应的区间内的所有原始共同加上的值。 b.在这个节点对应的区间中除去a之外其他的值的和。通过单独维护共同加上的值,给区间同时加上一个值的操作就可以高效的进行了。如果对于父亲节点同时加上一个值,那么这个值就不会在儿子节点被重复考虑。#include<iostream> #include<
2016-05-30 11:52:48 317
转载 stl vector
如果单纯的unique如果输入3 2 1 1 2 3,它的输出是1 2 3 2 3 3——没到达要求。 unique只是把重复的元素放到容器的后面,而它本身会返回一个迭代器,只向这些元素的开始部分。因此要向真正删除这些元素,还是要“手工”处理一下。对于上面的例子,可以用vector窗口的erase。
2016-05-23 21:57:11 232
原创 POJ3111
http://poj.org/problem?id=3111 二分+贪心 对于这个问题,我们定义C(x):=可以选择使得单位重量的价值不低于x。 因此问题就变成了sigama(vi)/sigame(wi)>=x. 变形得 sigama(vi-x*wi)>=0 因此就可以对(vi-x*wi)进行贪心的选取。 那么问题就变成了C(x)=((vi-x*wi)从大到小
2016-05-12 19:11:48 448
原创 POJ2456
题意:有N间牛舌,排成一条直线(第i号牛舍在xi位置),有M头牛,要让每头牛都放在离其他牛尽可能元的牛舍。 二分搜索+贪心#include<iostream> #include<algorithm> #include<cstdio> #include<queue> using namespace std; const int INF=1E9; const int maxn=1e5; int a[m
2016-05-11 23:02:45 524
原创 cqm 解题报告e
http://acm.cqu.edu.cn/oj/problem_show.php?pid=21463 这题本人较弱。。赛间只会TLE的算法。赛后看标程才会的。 下面附上代码。#include<iostream> #include<algorithm> #include<queue> #include<cstdio> #include<cstring> using namespace std; c
2016-05-09 21:40:51 351
原创 输入挂C++模板
可能会用上先记录学习下inline long long readlongint()//优化接受int数,省时间,具体内容自己看懂,当成模板使用 { char ch = getchar(); long long data = 0; while (ch < '0' || ch > '9') ch = getchar(); do {
2016-05-08 19:46:48 628
原创 cqm解题报告F
http://acm.cqu.edu.cn/oj/problem_show.php?pid=21464 本题不是很难,仔细观察就可以得知x+n-i是恒定的(x是每个人的金钱树,n是队列的长度,i是在当前位置。如果那么很显然的一点是如果出现相同的xi+n-i,那么一定是无限交换队列。 下面附上AC代码。#include<iostream> #include<algorithm> #include<c
2016-05-08 14:36:50 343
原创 cqm解题报告03
这题现场的时候我看了一眼感觉是个并查集就跳过,,赛后发现这是个拓扑排序,,于是学了波。。这题用拓扑做,如果构成了环表示不能构成拓扑排序,即题意中的记错了。 下面附上代码。#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cstring> using namespace std; cons
2016-05-08 12:25:42 253
原创 cqm解题报告I
http://acm.cqu.edu.cn/oj/problem_show.php?pid=21467 题意就是让我们找一个数只能有三个约数,很明显素数有两个,那么容易找到规律,这个数只能有着三个约数。1和自己还有sqrt(n)。sqrt(n)自然要是素数。 但是这题还是挺容易犯错的,数组会越界之类的都要小心,先打个素数表会快很多。 下面附上AC代码,#include<iostream> #in
2016-05-08 00:36:24 347
原创 cqm题解报告04
这题是道字符串匹配问题。。比较容易,赛间TLE了多次。。我真是傻。 用两次stack模拟就可以做了。 下面附上代码。#include<iostream> #include<queue> #include<cstdio> #include<cstring> using namespace std; const int maxn=2e5+10; char a[maxn]; int main() {
2016-05-07 22:01:08 305
原创 cqm解题报告02
又是一道签到题。。只能做签到题,唉。位运算判断每一位上是否为1,int范围,for到32就可以了。#include<stdio.h> #include<iostream> using namespace std; int n; int main() { int t; scanf("%d",&t); while(t--){ scanf("%d",&n);
2016-05-07 19:25:57 319
原创 cqm解题报考01
这题一开始很不小心理解错意思导致wa了好多次,后面重读题面才过的。 就是个水题,只要枚举找出第几层删除了,然后for一遍找出最大的距离。#include<iostream> #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int maxn=1e6+10; const ll I
2016-05-07 19:08:40 470
原创 POJ1258最小树水。。
题意,给了你N个农村,和每个农村之间的关系,问最小耗费。 很明显是裸的最小生成树。 下面贴上prime算法#include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include<set> using namespace std; const int maxn=1e4+10; const int INF=1e
2016-05-06 20:05:41 384
原创 POJ3268最短路水题
题意大概是有n个农场n头牛,要去x农场的牛。去和返回都要走最短路,问耗费时间最长的那条路是多少。 首先想到就的就是floyd算法果然TLE了。 先附上TLE的代码#include<iostream> #include<queue> #include<algorithm> #include<cstdio> using namespace std; const int maxn=1000+10; c
2016-05-06 16:37:58 530
原创 大数模板
由于平常遇到的问题会出现爆ll的情况。所以贴上大数模板。(JAVA大数实在太慢了。struct bign { int len, s[MAXN]; bign () { memset(s, 0, sizeof(s)); len = 1; } bign (int num) { *this = num; } bign (cons
2016-05-04 15:36:56 370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人