07 2013 档案
hdu1166 线段树,点修改,区间求和
摘要:链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166题意:中文的。求若干个区间中工人的个数。思路:简单线段树,点修改。只更新叶子节点,然后把信息用PushUP(int r)这个函数更新上来。#include#include#include#include#includeusing namespace std;#define lson l,m,rt>1; build(lson); build(rson); PushUP(rt);}void update(int p,int add,int l,int r,int rt){//对p进行... 阅读全文
posted @ 2013-07-29 14:03 ∑求和 阅读(272) 评论(0) 推荐(0)
LightOj1163 数论
摘要:链接:http://lightoj.com/volume_showproblem.php?problem=1163题意:一个数A,把它的最后一个数字去掉,得到一个新数B,给出A-B的值,求A。思路:找一下A,B,A-B之间的关系就行了。#includeusing namespace std;typedef unsigned long long LL;int main(){ int t,ca=1; LL c,a,b; scanf("%d",&t); while(t--) { scanf("%llu",&c); printf("Ca 阅读全文
posted @ 2013-07-22 22:04 ∑求和 阅读(164) 评论(0) 推荐(0)
zoj 2369 Two Cylinders 辛普森积分 几何
摘要:链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1345题意:给两个无限高的圆柱的半径,它们垂直放置,坐标轴相交,求相交部分的体积。思路:数值积分,用辛普森公式来算。把三重积分转化为一重的。假设半径为r1的圆柱沿y轴,r2的圆柱沿z轴,那么从x轴看过去,相交部分在yoz平面的切面是个矩形。矩形在y轴方向的长度为2*y=sqrt(r12-x2),在z轴方向上的长度为2*sqrt(r22- x2),这样积分算出来的体积是yoz平面上半部分的体积,还有下半部分的,总的体积要乘以2.如果是从z方向看过去,则平行于xOy平面所做 阅读全文
posted @ 2013-07-22 21:53 ∑求和 阅读(571) 评论(0) 推荐(0)
zoj3725 组合数学,递推
摘要:链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3725题意:有n个格子,只能涂红、蓝两种颜色。要求至少有m个连续的格子涂上红色,求有多少种方法。思路:一开始是直接算,结果T了,不得不转变思想。要求至少m个格子连续的话,可以枚举连续m个格子的首位置。假如第i个格子开始往后的m个格子都是红色的,则后面的(n-(i+m)+1)个格子随意涂,有2^(n-(i+m)+1)种。此时第i-1个格子必然要为蓝色。且要求在前面的1到i-2个格子中不能有连续m个红格子。计前面i-2个格子有b[i]种放法。当i<m时,肯定不会出现连续 阅读全文
posted @ 2013-07-22 13:20 ∑求和 阅读(377) 评论(0) 推荐(0)
zoj 3720 计算几何,期望
摘要:链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5043题意:给一个矩形,矩形内一个多边形,朝矩形内投掷落在某点上,由于磁力的作用,该点会移到离它最近的整点处,如果这个整点(x,y)在多边形内,则有分数S=A*x+B*y,求分数的平均期望。思路:枚举矩形内的整点,判断它是否在多边形内,如果在,那么有分数,计算出来。由于每个整点的吸收范围是[x-0.5,x+0.5],[y-0.5,y+0.5],所以相应的概率P为这个小矩形的面积除以大矩形的面积。期望即是Si 乘以P,再求和。期望公式 ∑ i*Pi .#include#i 阅读全文
posted @ 2013-07-21 20:41 ∑求和 阅读(414) 评论(0) 推荐(0)
zoj 3716 计算几何
摘要:链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3716题意:给一个四边形,在每个顶点处画一个圆,要求圆不能重叠,求四个圆最大的半径和。思路:一般一点的想法是四个圆里面有三个圆是两两相切,然后枚举最后一个圆。这个题我现在也还想不明白。求各位指教。下面是传说中世界冠军YY的的思路。在矩形中取一三边为a,b,c的三角形,设三相切圆半径为r1,r2,r3.设r1+r2=a,r1+r3=b,r2+r3=c.假设r4与三圆中的R2相切,则{r4+r2=b ,r1+r2=a,r1+r3=b,r2+r3=c }解方程组得r4=( 阅读全文
posted @ 2013-07-21 13:52 ∑求和 阅读(439) 评论(4) 推荐(0)
CF331C1暴力
摘要:链接:http://codeforces.com/problemset/problem/331/C1题意:省略它。。。思路:暴力,没什么好说的。话说C2,C3是不是要用数位DP来做呢?以后学了再做做吧。#include#include#includeusing namespace std;int main(){ int n,m,k,maxn,ans=0; int s[7]; cin>>n; while(n) { m=n;k=0; while(m) { s[k++]=m%10; m... 阅读全文
posted @ 2013-07-19 19:31 ∑求和 阅读(416) 评论(0) 推荐(0)
CF331A1,331A2
摘要:链接:http://codeforces.com/problemset/problem/331/A1题意:不翻译了。思路:A1题数据范围小,暴力是可行的,我果断暴力了。不过,话说,除了暴力我还会什么。。。闲话少说。A2的话,采用线段树。不过我不会,哈哈哈。找了位仁兄的代码看了一下,思路比较巧妙,值得学习,虽然没有用到数据结构,但是可以解决。不过我忘记是哪位仁兄的了,你要是看到了的话,提醒我一下。就贴那位仁兄的代码吧。#include #include #include using namespace std;#define INF 3000000000llmap last;int a[3000 阅读全文
posted @ 2013-07-19 19:25 ∑求和 阅读(1597) 评论(0) 推荐(0)
CF327A 暴力
摘要:链接:http://codeforces.com/problemset/problem/327/A题意:给一串数,只由0和1组成,在某个区间内,把1变成0,0变成1,再把所有数求和,求能达到的最大的和。思路:暴力嘛,就一个区间一个区间的试咯。这样的话是O(n^3)的复杂度。如果预处理求出前 i 个数的和,可以降到O(n^2)。采用动态规划可以降到O(n)。#include#includeusing namespace std;int a[102],s[102];int n;int main(){ int sum,minm,i,j; s[0]=0; while(~scanf("... 阅读全文
posted @ 2013-07-19 19:09 ∑求和 阅读(191) 评论(0) 推荐(0)
CF327B 数学
摘要:链接:http://codeforces.com/problemset/problem/327/B题意:输出n个数,满足:升序排列,后面的任意一个数不能被前面的数整除。思路:输出n,n+1,n+2...n+n-1即可。一开始想的很复杂,原来这么做就可以了。数学真是个奇妙的东西。由于要求后面的数不能被前面的数整除,n的最小倍数是2n(除了一倍),在n到2n-1的闭区间内就有n个数,且是满足条件的。#include#includeusing namespace std;int main(){ int n; while(~scanf("%d",&n)) { for(i.. 阅读全文
posted @ 2013-07-19 18:59 ∑求和 阅读(150) 评论(0) 推荐(0)
CF327C 快速幂,费马小定理
摘要:链接:http://codeforces.com/problemset/problem/327/C题意:给一串数,这串数重复k次,求去掉一些数后得到的新数能被5整除,问有多少种方法得到满足条件的数。思路:要求能被5整除,则数的末位必然是0或5,求出原始串中0和5的位置,从0开始计数,位置为i1,i2,i3,,,in,则有a=2^i1+2^i2+...+2^in种方法。则在所有中的方法总数为:s=a*(q^n-1)/(q-1),q=2^len,len为原始串的长度。这个公式推一下就出来了。由于数据范围很大,所以要模1e9+7。在求幂的时候采用的是快速幂来做。除以(q-1)的话,求出它的逆元。由欧 阅读全文
posted @ 2013-07-19 18:48 ∑求和 阅读(357) 评论(0) 推荐(0)
LightOj1077 最大公约数
摘要:链接:http://www.lightoj.com/volume_showproblem.php?problem=1077题意:给出平面上两个点,求这两点连成的线段上的整点个数。数据范围是32位有符号整数。思路:一开始觉得是几何题,但是用几何的方法来做很明显会T。简单的方法是求出gcd(abs(x2-x1),abs(y2-y1))+1即可。想象一下,一条斜着的线段,要求线段上的整点个数,求出横坐标差与纵坐标差的最大公约数就差不多了。#include#include#include#include#includeusing namespace std;typedef long long LL;. 阅读全文
posted @ 2013-07-19 13:07 ∑求和 阅读(323) 评论(2) 推荐(0)
LightOj1007欧拉函数
摘要:链接:http://lightoj.com/volume_showproblem.php?problem=1007题意:给一段闭区间,求区间中每一个数的欧拉函数值的平方和。思路:思路很简单,先打表,求出1到5e6的欧拉函数值,然后再求平方和。思路虽然简单,但是这道题还是A得好艰难。T,WA,超内存都出现了,泪。一个要注意的是由于数据过大,要用unsigned long long,不然就WA了。还有就是求平方和的时候,如果每次都用一个循环来求的话,会T掉,所以预先求出前 i 项的平方和。在求平方和的过程中,如果再开一个数组来保存前 i 项和的话,会超内存。有点奇怪的是,a,b都是小于等于5e6, 阅读全文
posted @ 2013-07-18 23:03 ∑求和 阅读(576) 评论(0) 推荐(0)
poj3347线段相交,扩大数据运算
摘要:链接:http://poj.org/problem?id=3347题意:一系列正方形立着排列,正方形互不重叠,能贴着放就贴着,求俯视的时候能看到哪些正方形。思路:把正方形的重叠问题转化为线段相交问题。正方形投影到x轴上就是横着的那条对角线,如果把正方形边长扩大根号2倍的话,对角线长就是整数,便于处理。然后再来对线段长进行裁剪,如果某部分被遮住了的话,就去掉这部分。还有个重要的地方是求正方形的左边顶点的横坐标,对于某个正方形,假定他和前面的正方形都是贴着的,求出相应的横坐标,取最大,即可。#include#include#includeusing namespace std;struct squ 阅读全文
posted @ 2013-07-14 19:41 ∑求和 阅读(272) 评论(0) 推荐(0)
poj1039 线段与直线相交
摘要:链接:http://poj.org/problem?id=1039题意:给一段曲折的管道,管道宽度为1,从管口射入光线,管子不透光、不反射,求光线最远能射到的地方的横坐标,如果光线能完全穿过管子,也输出。思路:入射得最远的光线必然过管道的上下两个折点,由于数据量不大,所以可枚举两个折点得到一条直线。然后求直线与管道的交点。可以从左到右,通过比较在折点的横坐标处直线的纵坐标和对应折点纵坐标的大小来判断直线是与上下哪个管壁相交,然后求交点。最后取最大的横坐标值。#include#include#include#includeusing namespace std;int n;const int m 阅读全文
posted @ 2013-07-14 18:56 ∑求和 阅读(404) 评论(0) 推荐(0)