X-man

导航

2013年4月13日 #

hdu 1411(校庆神秘建筑)

摘要: 补充知识: 欧拉四面体问题 Euler's Tetrahedron Problem 以六条棱表示四面体的体积. 涉及的知识点 : 知识点一: 矢量的数量积 知识点二: 矢量的向量积 用六条棱长表示的四面体体积公式 内容:将四面体放入直角坐标系内,利用矢量混合积的几何意义及坐标运算公式,结合矢量数量积的坐标运算公式、定义及余弦定理得到用六条棱长表示的四面体体积公式。 参考资料:http://course.szu.edu.cn/weijifen/picture/MC50024.htm公式: 欧拉四面体公式,用来求三棱椎的体积。 V=sqrt((4*a*a*b*b*c*c-a*... 阅读全文

posted @ 2013-04-13 20:24 雨钝风轻 阅读(213) 评论(0) 推荐(0) 编辑

hdu1895(最小长方形)

摘要: #include<stdio.h>int main(){ int x1,y1; int x,y; int xm,ym,xa,ya; while(scanf("%d %d",&x1,&y1)!=EOF&&(x1!=0||y1!=0)) { xm=x1;//最小的x xa=x1;//最大的y ym=y1; ya=y1; while(scanf("%d %d",&x,&y)!=EOF&&(x!=0||y!=0)) { if(x<xm)xm=x; ... 阅读全文

posted @ 2013-04-13 19:53 雨钝风轻 阅读(200) 评论(0) 推荐(0) 编辑

hdu 2037(今年暑假不AC)

摘要: 题目: 有n个区间,[ai, bi),统计不相交区间最多有多少个?贪心策略: 将这n个区间按bi由小到大排序,然后从前向后遍历,每当遇到不相交的区间就加入目标集合,遍历完成后就找到了最多的不相交区间。具体证明,上篇博客有:#include<stdio.h>#include<algorithm>using namespace std;struct Node{ int s,e;}N[105];bool cmp(Node a,Node b){ if(a.e<b.e)return true; //else return a.s<b.s; return false;} 阅读全文

posted @ 2013-04-13 17:20 雨钝风轻 阅读(132) 评论(0) 推荐(0) 编辑

选择不相交区间(贪心:求不相交区间最多个数)

摘要: 选择不相交区间(转) 数轴上有n个区间[ai,bi],要求选择尽量多个区间,使得这些区间两两没有公共点。贪心策略: 按照b1<=b2<=b3…的方式排序,然后从前向后遍历,每当遇到可以加入集合的区间,就把它加入集合。(集合代表解的集合)证明: 我们对a1,a2……的关系分以下几种情况考虑: 1、a1>a2。 此时区间2包含区间1。这种情况下显然不会选择区间2,因为选择区间1会留下更多的剩余空间。 不仅区间2如此,以后所有区间中只要有一个 i 满足a1 > ai,i 都不要选。 即此种情况下,选择区间1是明智的,与策略一致。 ... 阅读全文

posted @ 2013-04-13 15:52 雨钝风轻 阅读(950) 评论(0) 推荐(0) 编辑

刻骨铭心

摘要: 刻骨铭心 是时光流逝后 记忆中还有你完整的样子 From:竹马翻译官 生活不是小说,不能太过计较。 年少时有过的期盼和梦想 一点一滴攒积于心。 雾散,梦醒 ... 阅读全文

posted @ 2013-04-13 15:50 雨钝风轻 阅读(155) 评论(0) 推荐(0) 编辑

hdu 4503(湫湫系列故事——植树节)

摘要: 题解: 这题不太好想,参考了下别人的思想,加自己的详细补充: 1. 从反面想,若能求出3个人之间有一条关系或者两条关系的总数,问题便可解(余下就是三人两两相互关系和两两无关系)。 2.对于点i,剩下的n-1个点可分为两个集合,一个是和i有关系的a[i],一个是没有关系的(n-1-a[i]), 从这俩集合里分别取一个点,组成三个点,便符合了三个人之间有一条关系或者两条关系的条件。res=Σ(a[i] * (n-1-a[i])), 3.在求和后的res中, 你会发现三人有一条关系的情况下,有关系的两人被算了两次。 有两条关系的情况下,无关系的两人被... 阅读全文

posted @ 2013-04-13 10:51 雨钝风轻 阅读(141) 评论(0) 推荐(0) 编辑

hdu 2099(整除的尾数)

摘要: #include<stdio.h>int main(){ int a,b; while(scanf("%d %d",&a,&b)!=EOF&&a!=0&&b!=0) { int k=0; for(int i=0;i<100;i++) { if((a*100+i)%b==0) { if(k==0)k=1,printf("%02d",i); else printf(" %02d",i); } } ... 阅读全文

posted @ 2013-04-13 09:55 雨钝风轻 阅读(140) 评论(0) 推荐(0) 编辑