HDU 4946 Area of Mushroom

这题WA了7发才过,队友做的,然后一起debug了好久。

刚開始是没排序。

然后是在同一个位置的点没有处理好。

然后把这两个问题搞定就A了。

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <ctype.h>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#define eps 1e-10
#define INF 0x7fffffff
#define maxn 10005
#define PI acos(-1.0)
#define seed 31//131,1313
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
int x[505],y[505],v[505],vis[505];
int cmp(double x)
{if(fabs(x)<eps)return 0;if(x>0)return 1;return -1;
}
inline double sqr(double x)
{return x*x;
}
struct point//点
{double x,y;int pos;int o;point() {}point(double a,double b):x(a),y(b) {}void input(){scanf("%lf%lf",&x,&y);}friend point operator + (const point &a,const point &b){return point(a.x+b.x,a.y+b.y);}friend point operator - (const point &a,const point &b){return point(a.x-b.x,a.y-b.y);}friend bool operator == (const point &a,const point &b){return cmp(a.x-b.x)==0 &&cmp(a.y-b.y)==0;}friend point operator * (const point &a,const double &b){return point(a.x*b,a.y*b);}friend point operator * (const double &a,const point &b){return point(a*b.x,a*b.y);}friend point operator / (const point &a,const double &b){return point(a.x/b,a.y/b);}double norm(){return sqrt(sqr(x)+sqr(y));}//到原点距离void out () const{printf("%.2f %.2f",x,y);}
} p[505];
double det (const point &a,const point &b)
{return a.x*b.y-a.y*b.x;
}//叉积
double dot (const point &a,const point &b)
{return a.x*b.x+a.y*b.y;
}//点乘
double dist (const point &a,const point &b)
{return (a-b).norm();
}//距离
point rotate_point(const point &p,double A)
{double tx=p.x,ty=p.y;return point (tx*cos(A)-ty*sin(A),tx*sin(A)+ty*cos(A));
}//旋转,A是弧度
struct polygon_convex
{vector <point> P;polygon_convex(int size=0){P.resize(size);}
} p_c;
bool comp_less(const point &a,const point &b)
{return cmp(a.x-b.x)<0||cmp(a.x-b.x)==0&&cmp(a.y-b.y)<0;
}
polygon_convex convex_hull(vector <point> a)
{polygon_convex res(2*a.size()+5);sort(a.begin(),a.end(),comp_less);a.erase(unique(a.begin(),a.end()),a.end());int m=0;for(int i=0; i<a.size(); i++){while(m>1 && cmp(det(res.P[m-1]-res.P[m-2],a[i]-res.P[m-2]))<0)m--;res.P[m++]=a[i];}int k=m;for(int i=int(a.size())-2; i>=0; i--){while(m>k && cmp(det(res.P[m-1]-res.P[m-2],a[i]-res.P[m-2]))<0)m--;res.P[m++]=a[i];}res.P.resize(m);if(a.size()>1)res.P.resize(m-1);return res;
}
bool cmp3(point a,point b)
{return a.x<b.x||((a.x==b.x)&&(a.y<b.y));
}
int main()
{int T,tt=0;while(scanf("%d",&T)){tt++;vector<point>pp;pp.clear();memset(vis,0,sizeof(vis));if(T==0)break;int pos=-1;int max_v=0;for(int i=1; i<=T; i++){scanf("%d%d%d",&x[i],&y[i],&v[i]);if(v[i]>max_v)max_v=v[i];}int top=0;for(int i=1; i<=T; i++){if(v[i]==max_v){p[top].x=(double)x[i];p[top].y=(double)y[i];p[top].pos=i;p[top].o=0;top++;}}printf("Case #%d: ",tt);if(max_v==0){for(int i=1; i<=T; i++)printf("0");printf("\n");continue;}sort(p,p+top,cmp3);for(int i=0; i<top; i++){if((i<top-1&&(p[i].x)==(p[i+1].x)&&(p[i].y)==(p[i+1].y))||(i>0&&(p[i].x)==(p[i-1].x)&&(p[i].y)==(p[i-1].y)))p[i].o=1;}pp.push_back(p[0]);for(int i=1; i<top; i++){if(p[i].x!=p[i-1].x||p[i].y!=p[i-1].y)pp.push_back(p[i]);}if(pp.size()<=3){for(int i=0; i<pp.size(); i++)if(pp[i].o==0)vis[pp[i].pos]=1;}else{polygon_convex ans=convex_hull(pp);for(int i=0; i<ans.P.size(); i++){//cout<<ans.P[i].ok<<" "<<ans.P[i].pos<<endl;if(ans.P[i].o==0)vis[ans.P[i].pos]=1;}}for(int i=1; i<=T; i++)printf("%d",vis[i]);printf("\n");}return 0;
}
/*
3
2 2 3
2 2 3
2 3 3
6
1 1 3
1 -1 3
2 0 3
-1 1 3
-1 -1 3
-2 0 3
4
1 1 1
1 2 1
1 3 1
1 4 1
15
1 1 0
1 1 1
2 1 1
3 1 1
4 1 1
5 1 1
5 2 1
5 3 1
5 4 1
4 4 1
3 4 1
2 4 1
1 4 1
1 3 1
1 2 1
9
1 4 1
1 3 1
1 2 1
1 1 1
2 1 1
3 1 1
4 1 1
3 2 1
2 3 1
*/

HDU 4948 Kingdom

这题比赛的时候遗憾了。我看了这道题。然后认为挺简单的。

刚開始一看题上,想到的就是拓扑排序。然后脑子想啊想……感觉就是拓扑排序的逆序。然后发现挺水的……

由于说了要想发展某个城市的话,就必须有还有一个城市作为它发展的前提,即城市u->w这样连边,表示要想发展城市w,前提是u已经是发展过的城市了。那这种话不是非常easy嘛。

即统计出出度最多的就是第一个要发展的城市了。由于u->w这样连边能够看出算出出度最多的依次从大到小排序即可了。

哎呀。只是可惜了。由于看见没人交这题。然后也不敢把自己想的告诉队友,然后自己也没敲……然后错过进第一版的机会了真是被第一梯队的带错路被坑了……

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define llson j<<1,l,mid
#define rrson j<<1|1,mid+1,r
#define INF 0x7fffffff
#define maxn 11010
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
char s[500][505];
struct abc
{int i,out;bool operator<(const abc &a)const{return out>a.out;}
}a[501];
int main()
{//freopen("1.txt","r",stdin);int n,i,j;while(scanf("%d",&n)&&n){for(i=0;i<n;i++)scanf("%s",s[i]),a[i].i=i,a[i].out=0;for(i=0;i<n;i++)for(j=0;j<n;j++)if(s[i][j]=='1')a[i].out++;sort(a,a+n);printf("%d",a[0].i+1);for(i=1;i<n;i++)printf(" %d",a[i].i+1);puts("");}return 0;
}

HDU 4951 Multiplication table

乘法表。

看每行。两个数都相等的就是0了。

然后看第一位不相等的个数,多少个不同就是哪个数了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define llson j<<1,l,mid
#define rrson j<<1|1,mid+1,r
#define INF 0x7fffffff
#define maxn 11010
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int a[511][1011],vis[511];
int main()
{//freopen("1.txt","r",stdin);int n,i,j,ii=1;while(scanf("%d",&n)&&n){int flag,b[512];for(i=0; i<n; i++){for(j=0,flag=0; j<n; j++){scanf("%d%d",&a[i][j<<1],&a[i][j<<1|1]);if(a[i][j<<1]!=a[i][j<<1|1]) flag++;}if(!flag) b[0]=i;}for(i=0;i<n;i++){if(i==b[0]) continue;mem(vis,0);int sum=0;for(j=0;j<(n<<1);j+=2)if(!vis[a[i][j]]) sum++,vis[a[i][j]]=1;b[sum]=i;}printf("Case #%d: %d",ii++,b[0]);for(i=1;i<n;i++)printf(" %d",b[i]);puts("");}return 0;
}

HDU 4952 Number Transformation

这题规律题,输出前面100个值与倍数就会发现往后的倍数都是一样的了,倍数一样就是每次都加同样的数到最后,这种话就变成简单的乘法了。

代码中凝视的三句就是用来找规律的。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define INF 10000010
#define maxn 80010
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int main()
{ll n,m;int ans=1;while(scanf("%I64d%I64d",&n,&m)&&(n||m)){//int cnt=0;ll a=-1,b=-1,sum=0,i;int flag=0;for(i=2LL;i<=m;i++){if(n%i){b=n/i+1LL;n=b*i;//if(cnt++<100)//cout<<"+++ "<<n<<' '<<(int)(n/i)<<' '<<i<<endl;if(b==a) break;else a=b;flag=1;}}if(flag&&i<m){sum=m-i;sum=sum*a+n;}else sum=n;printf("Case #%d: %I64d\n",ans++,sum);}return 0;
}

多第八田间学校:几何+图论出度+模拟+找到规律相关推荐

  1. 八维计算机学校张家口,八维学校真实校园情况?

    摘要:当你不够优秀的时候,就该沉下心去学习,努力变得优秀,然后去惊艳所有人.这就是我的八维校园生活,属于我的大学生活,让我真正感受到了成长带来的满足与充实,愿我们在人生前进的道 八维教育25载办学历史 ...

  2. 八年级上册计算机期末考试题,八年级上册数学期末考试模拟试题及答案

    <八年级上册数学期末考试模拟试题及答案>由会员分享,可在线阅读,更多相关<八年级上册数学期末考试模拟试题及答案(10页珍藏版)>请在人人文库网上搜索. 1.八年级上册数学期末考 ...

  3. 靠二进制画几何[图论]

    @Kaike 今天来浅谈一下图,听说自己写总结的人grade++,rp++. 像我这样可爱的人怎么能错过这个机会呢嘤嘤嘤. 毕竟图至少啃了15day++. 恩曾经的小弱渣从来都是仰望高端玩家虐图论 听 ...

  4. Cesium教程(八):绘制几何形体

    目录 1.点要素 2.线要素 2.1 折线要素 2.2 轮廓线 3.面要素 4.体要素 三维几何形体所涉及的几何要素种类丰富,从类型上划分为点.线.面.体四大类.

  5. Revit API创建几何实体Solid并找到与之相交的元素

    几何实体的创建方法之一: 构成封闭底面,指定拉伸方向与拉伸高度.GeometryCreationUtilities //自创几何实体相交法 [TransactionAttribute(Autodesk ...

  6. ZEMAX | 在OpticStudio中通过几何光线追迹来模拟杨氏双缝干涉实验

    这篇文章旨在介绍杨氏双缝干涉实验背后的理论知识,并在OpticStudio中用几何光线追迹模拟该实验,最后比较理论和模拟的结果. 下载 联系工作人员获取附件 简介 杨氏双缝干涉实验是物理学中最著名的实 ...

  7. 中等职业学校计算机等级考试模拟题,中等职业学校计算机等级考试题库四(含答案)...

    <中等职业学校计算机等级考试题库四(含答案)>由会员分享,可在线阅读,更多相关<中等职业学校计算机等级考试题库四(含答案)(3页珍藏版)>请在人人文库网上搜索. 1.中等职业学 ...

  8. R语言几何布朗运动 GBM模拟股票价格优化建立期权定价概率加权收益曲线可视化

    最近我们被客户要求撰写关于几何布朗运动的研究报告,包括一些图形和统计输出. 对于模拟股票价格,几何布朗运动 (GBM) 是 事实上的首选 模型. 它有一些很好的属性,通常与股票价格一致,例如对数正态分 ...

  9. SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。...

    Vibrance这个单词搜索翻译一般振动,抖动或者是响亮.活力,但是官方的词汇里还从来未出现过自然饱和度这个词,也不知道当时的Adobe中文翻译人员怎么会这样处理.但是我们看看PS对这个功能的解释: ...

  10. PAT甲级1154 Vertex Coloring :[C++题解]图论、模拟、结构体存边

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 这题的边不用邻接矩阵.邻接表来存,仅仅用结构体来存即可,结构体正好存边的两个端点,我们只要遍历每条边,判断端点的颜色是否相同即可. ...

最新文章

  1. linux 添加banner,OpenWrt:Linux下生成banner
  2. 解决IntelliJ IDEA 2019.3.5 启动无反应
  3. elastic学习笔记
  4. 【渝粤题库】国家开放大学2021春2302供应链管理题目
  5. leetcode 112路径总和
  6. 从决策树到xgboost(二)
  7. javaweb中mysql数据库的回滚操作代码
  8. np.radians_带有Python示例的math.radians()方法
  9. 计算分数加减表达式的值(信息学奥赛一本通-T1079)
  10. idea怎么把代码放到git_在IntelliJ IDEA中同步代码到华为云git仓库 (on windows)
  11. 【华为云技术分享】当我们在谈论卡片时,我们到底在谈论什么?
  12. Arduino射频识别RC522至数据库
  13. python获取windows窗口的内容_Python实现遍历windows所有窗口并输出窗口标题的方法...
  14. 打印机扫描显示服务器没有响应,打印机扫描一体机能够打印却不能扫描,提示缺少WIA的驱动程序...
  15. ftw, nftw - file tree walk
  16. 计算机xp bios密码设置方法,如何设置电脑的密码
  17. 抖音2018大数据分析报告
  18. 移动硬盘安装Ubuntu,并确保在任何电脑都可用
  19. python股票指标计算库_GitHub - unclevicky/stock: stock,股票系统。使用python进行开发。...
  20. Docker 安装 TensorFlow GPU 实战

热门文章

  1. 深度学习:什么是自编码器(Autoencoder)
  2. 机器学习之特征选择(feature_selection)
  3. 64位 setupdienumdeviceinterfaces_win7 32位重装系统详细教程
  4. 举例HTML的图像标记,教案html之css滤镜及练习层div块及span标记举例窗口内例题演示功能的实现总结.pdf...
  5. tensorflow如何微调时如何只训练后两层_XLNet只存在于论文?都替你封装好了还不来用!...
  6. 表单元素设置disabled后 支持点击事件
  7. 分寸:切记别把话说得太死 — 《别输在不会表达上》
  8. 《Flutter 从0到1构建大前端应用》读后感—第5章【动画】
  9. JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
  10. python第六课——判断结构