
ACM
文章平均质量分 50
i是一只程序猿
苟利国家生死以, 岂因祸福避趋之
展开
-
uva11300
中位数问题。#include#include#include#include#define LL long long#define maxn 1000000+10using namespace std;LL a[maxn],c[maxn],M,n;int main(){ while(scanf("%lld",&n)!=EOF) { LL sum原创 2015-03-15 17:37:55 · 396 阅读 · 0 评论 -
hdu1556Color the ball
线段树解决区间修改,单点查询问题#include#include#include#include#define fora(i,n) for(int i=1;i<=n;i++)using namespace std;const int maxn = 100000+10;int T,n,tree[maxn<<2],x,y,ans;void build(int left,int原创 2014-12-30 16:27:43 · 492 阅读 · 0 评论 -
hdu1166敌兵布阵
单点修改,区间查询的线段树实现,自己的第一颗线段树。。#include#include#include#includeusing namespace std;const int maxn = 50000+10;int T,n,a[maxn],tree[maxn<<2],x,y;void pushUp(int cur){ tree[cur]=tree[cur*2]+tre原创 2014-12-30 13:03:31 · 622 阅读 · 0 评论 -
poj1990MooFest
树状数组专题最后一题,一排牛要互相说话,每个人都有一个听力入口值(我的理解是要听见东西最小的分贝),两头牛说话当然最小要等于两头牛之中听力入口值大的那个了。本题的解法是用听力入口值最大的牛和其他比它低的牛说话,首先按照牛的听力入口值升序排序,从第一头牛开始遍历,每次第一头牛肯定是当前听力入口值最大的牛,找出其他的牛的位置和当前这头牛左右牛的个数,就可以解决这道题了。#include#原创 2014-12-29 22:06:33 · 670 阅读 · 0 评论 -
poj2155Matrix
这年头想A一道题不容易啊,二维树状数组的题,一般都是点修改,区间查询,但这道题是区间修改点查询,那就得换个姿势了,不太明白原理。。。。0变1,1变0用异或符号,也是学习了。#include#include#include#includeusing namespace std;const int maxn = 1010;int X,T,n,b[maxn][maxn],x1,x2,y原创 2014-12-29 17:51:17 · 465 阅读 · 0 评论 -
取对数小技巧
对于一些连乘的数,和以10为底以e为底或者以2为底的数比较,可以采用取对数的方法。就拿uva10916做例子吧,具体代码如下#include#include#include#include#include#include#include#includeusing namespace std;int solve(int n){ int f=0,k=2; dou原创 2014-12-29 16:47:59 · 3450 阅读 · 0 评论 -
hdu2642Stars
二维树状数组,单点更新区间查询,标记一下黑暗的星星亮,亮的星星黑暗,就变成了+1-1的操作了。再就是注意x1,y1,x2,y2不能0,得先++。#include#include#include#include#include#define LL long longconst int maxn = 1010;using namespace std;int b[maxn][max原创 2014-12-28 00:43:19 · 554 阅读 · 0 评论 -
hdu1892See you~
二维树状数组,就是一维树状数组的推广。今晚BC想用树状数组解决第三题,可是不行,TLE。需要多做题巩固,现在还是半懂不懂状态。。。但是推广的时候思想是对的。#include#include#include#include#include#define LL long longconst int maxn = 1010;using namespace std;int b[max原创 2014-12-27 23:51:54 · 755 阅读 · 0 评论 -
hdu3743Frosh Week
用树状数组求逆序对数,没说编号由1到n所以要将其编号离散化,否则总是数组越界啊,吃一堑长一智啊。。。区间修改,点查询是向下修改,向后求和。点修改,区间查询是向后修改,向前求和。#include#include#include#include#include#define LL __int64const int maxn = 1000111;using namespace std原创 2014-12-27 16:44:22 · 613 阅读 · 0 评论 -
codeforce499C - Crazy Town
#include#include#include#include#include#include#include#include#include#define LL long longusing namespace std;const int maxn = 310;LL n,x,m;int sum1[maxn],sum2[maxn];struct node{原创 2014-12-25 15:22:34 · 624 阅读 · 0 评论 -
总结
好久不来更,寒假一直在看数论的书,算法导论也看了一点,还是那么高深,不过有些东西你看多了就懂了,伪代码也是看的想吐,马上就开学了,陆陆续续也把之前刷过的题更上来,留念一下吧。。。看到各位寒假都那么拼,我也是丝毫不敢懈怠啊。极客学院这玩意真不错,充分利用时间的利器啊,也学到很多项目上的东西,最初我们三个人的目标是做出个产品来,看来这是又要延后了,真是拖拉害死人,距离300题还好远啊,慢慢刷自己的数论原创 2015-02-28 23:48:46 · 393 阅读 · 0 评论 -
pku2769
#include#include#include#define LL long long#define uLL long long#define maxn 100000+1using namespace std;int p[maxn],d[10*maxn];int main(){ int cas; scanf("%d",&cas); while(cas-原创 2015-03-02 17:02:38 · 360 阅读 · 0 评论 -
hdu2035
#include#include#define LL long longusing namespace std;int solve(int aa,int bb){ int ans = 1; for(int i=1; i<=bb; i++) { ans=ans*aa%1000; } printf("%d\n",ans);}int原创 2015-03-02 21:53:26 · 390 阅读 · 0 评论 -
uva11093
这个题有点高效。。。。。就不写题解了。。。#include#include#define maxn 200002using namespace std;struct node{ int p,q,temp;} node[maxn];int main(){ int T,n,bj; scanf("%d",&T); for(int k=1; k<=T;原创 2015-03-12 22:04:36 · 577 阅读 · 0 评论 -
uva12627
根据图形推公式设g(k,i)为k小时后最下面i行红气球个数#include#define LL long long#define maxn 1000using namespace std;LL c[maxn];LL pow(LL x,LL n){ LL res = 1; while(n > 0) { if(n&1)res=res*x;原创 2015-03-12 21:31:19 · 414 阅读 · 0 评论 -
uva714Copying Books
最大值最小化问题,由于是一个单峰函数,可以用二分求出最小值来,然后从后往前划分,使后面的划分尽可能大,这样能保证题目所要求的S(1)尽量小。#include#include#include#define LL long longusing namespace std;const int maxn = 10000000+10;int num[maxn],n,k,bj[maxn];原创 2015-03-10 17:50:04 · 357 阅读 · 0 评论 -
uva1152
中途相遇法不好好读题害死人啊,空行的问题!#include#include#include#define LL long longconst int maxn = 4000+10;using namespace std;int a[maxn],b[maxn],c[maxn],d[maxn],p[maxn*maxn];int main(){ int T,n;原创 2015-03-09 23:30:23 · 427 阅读 · 0 评论 -
uva1471
LIS的一种变形。#include#include#include#define INF 1000000000+10using namespace std;const int maxn = 200010;int num[maxn],l[maxn],r[maxn],g[maxn];int main(){ int T,n; scanf("%d",&T); w原创 2015-03-09 19:45:32 · 505 阅读 · 0 评论 -
UVA1606 Amphiphilic Carbon Molecules
选定一个点作为基点,依次求出每个点的极角并排序,虚拟出一条直线开始旋转,动态统计两侧黑白点的个数。#include#include#include#include#define maxn 100000+10using namespace std;int n;struct node{ int x,y,cl; double rad; node(int x=0原创 2015-03-09 08:24:40 · 502 阅读 · 0 评论 -
UVA1428
n个人,从左到右排列,每个人都有一个不一样技能值 arr[i], 每场比赛3个人: 两名选手, 一名裁判。 裁判必须在两名选手中间, 并且技能值也在两名选手之间, 问一共能组织多少种比赛。树状数组的基本应用。#include#include#include#define LL long long#define maxn 100010using namespace std;原创 2015-03-05 16:04:36 · 483 阅读 · 0 评论 -
佩尔方程
形如x^2-dy^2=1,且d不为完全平方数的不定方程为佩尔方程。如果d是完全平方数无解。解佩尔方程一般需要两步,用暴力法求出特解,在用矩阵迭代公式求出所有正整数解。暴力法求特解代码int x,y;void search(){ y=1; while(1) { x=(long long)sqrt(d*y*y+1); if(x原创 2015-03-05 11:14:57 · 509 阅读 · 0 评论 -
pku1305
本元毕达哥拉斯三元组。#include#include#include#include#include#define maxn 1000001using namespace std;bool flag[maxn];int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b);}void solve(原创 2015-03-05 00:32:52 · 381 阅读 · 0 评论 -
codeforce499B - Lecture
#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 100;int n,x,m;mapstl;struct node{ int l,r;} c[maxn];int main(){ s原创 2014-12-25 15:21:41 · 571 阅读 · 0 评论 -
codeforce499A - Watching a movie
#include#include#include#includeusing namespace std;const int maxn = 100;int n,x;struct node{int l,r;}c[maxn];int main(){ scanf("%d %d",&n,&x); for(int i=0; i<n; i++) scanf(原创 2014-12-25 15:20:36 · 611 阅读 · 0 评论 -
uva-11292-Dragon of Loowater
#include#include#include#define maxn 20000+10using namespace std;int nn[maxn],mm[maxn];int main(){ int n,m,k,j; while(scanf("%d %d",&n,&m)&&n) { if(n>m) {原创 2014-08-04 17:25:05 · 583 阅读 · 0 评论 -
11462—Age Sort
超级大水题。#include#includeusing namespace std;int main(){ int T; while(scanf("%d",&T)==1&&T) { int s[T+1]; for(int i=0; i { scanf("%d",原创 2014-08-01 19:17:05 · 501 阅读 · 0 评论 -
12108 - Extraordinarily Tired Students
水题,模拟一下就可以了。还shuchucuow原创 2014-08-01 13:35:08 · 759 阅读 · 0 评论 -
uva10954
优先队列的题。#include#includeusing namespace std;int main(){ int n,x; while(~scanf("%d",&n)&&n) { priority_queue ,greater >q; for(int i=0; i<n; i++) {原创 2015-03-09 20:54:40 · 308 阅读 · 0 评论 -
uva11529 Strange Tax Calculation
题目要求是给你n个点,求n个点形成的所有三角形中包含的点的总数的平均值。 题目可以理解为求每个点能在多少三角形内。我们枚举一个点x,然后将其他点按照极角排序,那么每一个点i到与点i成pi的范围内的所有点组成的三角形都不包含点x,然后我们就可以求出所有的解。 里面有一些小的需要注意的问题,就是有的点形成的极角会在(0,-pi),我们求解的时候会有一点小小的麻烦,我们可以将其+2pi来解原创 2016-04-06 15:25:13 · 371 阅读 · 0 评论 -
SGU414 Orthogonal Circles
题意:给你n个圆,让你找出公共的正交圆。圆的正交就是两圆的圆心分别和交点连线,夹角为90度。 我们可以设出要找的圆,圆心为O,然后我们根据直角三角形的规则列出方程式,最后我们可以得知要找的圆的圆心在两圆连线的某条垂线上,假设两圆的圆心分别为a,b,过圆心O做垂线,在ab上垂足为m,可以得到am^2-bm^2=r1^2-r2^2(为定值),所以满足条件的圆的圆心在Om那条垂线上。后面就可以根据n个圆原创 2016-03-26 14:40:08 · 363 阅读 · 0 评论 -
hdu1242(BFS+优先队列)
BFS+优先队列的题目,很好写,就发上来水一篇。。。#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>using namespace std;int n,m;const int maxn = 500;char s[maxn][maxn];int d[maxn][maxn];int dx[4]={原创 2016-05-13 11:30:24 · 369 阅读 · 0 评论 -
复习之树的遍历
已知树的后序遍历和中序遍历求树的先序遍历#include<stdio.h>#include<string.h>using namespace std;const int maxn = 100;void getpre(int *post,int *in,int n){ if(n<=0)return; int root = post[n-1]; int k; f原创 2016-08-02 11:26:42 · 330 阅读 · 0 评论 -
hdu5793 A Boring Question
这个题的传送地址:http://acm.hdu.edu.cn/showproblem.php?pid=5793题意很简单,大家看过即明白。这个题是关于二项式定理和推理的应用,可能是因为数学是对规律的把握,很多人都是直接打表找规律了。 ∑0≤k1,k2,⋯km≤n∏1≤j<m(kj+1kj)=∑0≤k1≤k2≤⋯≤km≤n∏1≤j<m(kj+1kj)=∑km=0n∑km−1=0km⋯∑k1=0k2∏原创 2016-08-05 22:38:43 · 427 阅读 · 0 评论 -
UVA11538-Chess Queen
又是一道math水题。原创 2014-08-14 11:23:35 · 612 阅读 · 0 评论 -
UVA1262——password
水题,练代码能力。原创 2014-08-14 21:09:41 · 761 阅读 · 0 评论 -
bestcoder#22NPY and girls
离线处理加莫队算法,再就是找转移的规律,进行处理,莫队算法我的理解就是将查询分格化,用的上限复杂度是nsqrtn,莫队算法在处理左右区间查询时,有很大的作用。自己画画图会更容易理解。#include#include#include#include#include#include#define LL long longusing namespace std;const int m原创 2014-12-17 20:45:41 · 4055 阅读 · 0 评论 -
hdu1166敌兵布阵
树状数组裸题,区间查询,区间加,区间减#include#include#include#include#include#include#includeusing namespace std;const int maxn = 50010;int T,n,a[maxn],b[maxn];string cmd;int lowbit(int x){ return x&原创 2014-12-25 15:17:35 · 511 阅读 · 0 评论 -
hdu3874Necklace
树状数组的题,求区间内不同的数的和,离线处理,有个小技巧,按照右边查询r排序,每次都将相同的数更新到最右边,这样每次查询就可以计算不同的数的和。#include#include#include#include#include#define LL __int64#pragma comment(linker,"/STACK:1024000000,1024000000")using原创 2014-12-24 17:27:00 · 491 阅读 · 0 评论 -
hdu2144Evolution
这个在矩阵的专题里,不知道为什么,知道用LCS和并查集了就好做了。题意是给你N个DNA序列,两个DNA序列最长公共子串在DNA序列都大于给你的占总长度的百分比P,就属于同一个物种,问有多少个不同类物种。#include#include#include#include#include#include#include#include#include#pragma comment(原创 2014-12-23 19:46:52 · 683 阅读 · 0 评论 -
zoj3497Mistwald
这道题如果不是刷矩阵专题,我肯定会把他搞成图论,但是学习了矩阵,对这种x步可以到达终点,或者从某地到某地X步有几条路。#include#include#include#define LL long long#pragma comment(linker,"/STACK:102400000,102400000")using namespace std;LL T,n,p,q,k,m;s原创 2014-12-23 00:12:34 · 443 阅读 · 0 评论