8.13早上比赛
This commit is contained in:
parent
0ad8939399
commit
65b6b8310f
|
@ -5,7 +5,7 @@ https://vjudge.net/contest/508277#problem/I
|
||||||
### 做法
|
### 做法
|
||||||
用Graham法(看PPT即按逆时针顺序找点左转入栈,右转上一个出栈直到变成是右转)求凸包,再加上一个以L为半径的⚪的周长(在转角的地方,外角和=360)
|
用Graham法(看PPT即按逆时针顺序找点左转入栈,右转上一个出栈直到变成是右转)求凸包,再加上一个以L为半径的⚪的周长(在转角的地方,外角和=360)
|
||||||
### 关键词
|
### 关键词
|
||||||
Graham、凸包、结构体、栈、PI、eps、计算几何
|
Graham、凸包、结构体、栈、PI、eps、计算几何、构造函数、
|
||||||
### 易错点
|
### 易错点
|
||||||
(int)()记得加括号、scanf与&
|
(int)()记得加括号、scanf与&
|
||||||
### 工具箱
|
### 工具箱
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
#include<iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include<cmath>
|
||||||
|
using namespace std;
|
||||||
|
struct Point
|
||||||
|
{
|
||||||
|
int x,y;
|
||||||
|
}p[4];
|
||||||
|
struct Edge
|
||||||
|
{
|
||||||
|
int x,y,val;
|
||||||
|
}e[4];
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
for(int i=1;i<=3;i++)
|
||||||
|
{
|
||||||
|
scanf("%d%d",&p[i].x,&p[i].y);//!!!!&
|
||||||
|
}
|
||||||
|
int sum=0;
|
||||||
|
for(int i=1;i<=3;i++)
|
||||||
|
{
|
||||||
|
int j=i%3+1;
|
||||||
|
e[i].x=p[j].x-p[i].x;
|
||||||
|
e[i].y=p[j].y-p[i].y;//i,j
|
||||||
|
e[i].val=abs(e[i].x)+abs(e[i].y);
|
||||||
|
sum+=e[i].val;
|
||||||
|
}
|
||||||
|
int ans=1;
|
||||||
|
for(int i=2;i<=3;i++)
|
||||||
|
{
|
||||||
|
if(sum-e[i].val<sum-e[ans].val)
|
||||||
|
{
|
||||||
|
ans=i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ans=ans%3+1;
|
||||||
|
int j=ans%3+1;
|
||||||
|
int tot=0;
|
||||||
|
if(e[ans].x!=0) tot++;
|
||||||
|
if(e[ans].y!=0) tot++;
|
||||||
|
if(e[j].x!=0) tot++;
|
||||||
|
if(e[j].y!=0) tot++;
|
||||||
|
if(e[j].y*e[ans].y>0)
|
||||||
|
{
|
||||||
|
tot--;
|
||||||
|
}
|
||||||
|
printf("%d\n",tot);
|
||||||
|
Point now;
|
||||||
|
now=p[ans];
|
||||||
|
if(e[ans].x!=0)
|
||||||
|
{
|
||||||
|
// if()
|
||||||
|
printf("%d %d ",now.x,now.y);
|
||||||
|
now.x+=e[ans].x;
|
||||||
|
printf("%d %d\n",now.x,now.y);
|
||||||
|
}
|
||||||
|
int been=0;
|
||||||
|
if(e[ans].y!=0)
|
||||||
|
{
|
||||||
|
printf("%d %d ",now.x,now.y);
|
||||||
|
now.y+=e[ans].y;
|
||||||
|
if(e[j].y*e[ans].y>0)
|
||||||
|
{
|
||||||
|
been=1;
|
||||||
|
now.y+=e[j].y;
|
||||||
|
}
|
||||||
|
printf("%d %d\n",now.x,now.y);
|
||||||
|
}
|
||||||
|
if(e[j].x!=0)
|
||||||
|
{
|
||||||
|
printf("%d %d ",now.x,now.y);
|
||||||
|
now.x+=e[j].x;
|
||||||
|
printf("%d %d\n",now.x,now.y);
|
||||||
|
}
|
||||||
|
if(!been&&e[j].y!=0)
|
||||||
|
{
|
||||||
|
printf("%d %d ",now.x,now.y);
|
||||||
|
now.y+=e[j].y;
|
||||||
|
printf("%d %d\n",now.x,now.y);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
# 题目
|
||||||
|
* 链接
|
||||||
|
### 题意
|
||||||
|
|
||||||
|
### 做法
|
||||||
|
|
||||||
|
### 关键词
|
||||||
|
|
||||||
|
### 易错点
|
||||||
|
|
||||||
|
### 工具箱
|
||||||
|
*
|
||||||
|
### 题面
|
||||||
|
|
||||||
|
### Input
|
||||||
|
|
||||||
|
### Output
|
||||||
|
|
||||||
|
### Sample
|
||||||
|
#### input
|
||||||
|
|
||||||
|
#### output
|
||||||
|
|
||||||
|
### Hint
|
||||||
|
|
||||||
|
|
||||||
|
![](sketch.jpg)
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
# 题目
|
||||||
|
* 链接
|
||||||
|
### 题意
|
||||||
|
|
||||||
|
### 做法
|
||||||
|
|
||||||
|
### 关键词
|
||||||
|
|
||||||
|
### 易错点
|
||||||
|
|
||||||
|
### 工具箱
|
||||||
|
*
|
||||||
|
### 题面
|
||||||
|
|
||||||
|
### Input
|
||||||
|
|
||||||
|
### Output
|
||||||
|
|
||||||
|
### Sample
|
||||||
|
#### input
|
||||||
|
|
||||||
|
#### output
|
||||||
|
|
||||||
|
### Hint
|
||||||
|
|
||||||
|
|
||||||
|
![](sketch.jpg)
|
|
@ -0,0 +1,65 @@
|
||||||
|
#include<iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include<cmath>
|
||||||
|
using namespace std;
|
||||||
|
const int N=1e9+5,M=4e4;//const
|
||||||
|
int ans[M],dp[3][3],t,n,len;
|
||||||
|
void pre()
|
||||||
|
{
|
||||||
|
ans[1]=0;
|
||||||
|
ans[2]=2;
|
||||||
|
ans[3]=6;
|
||||||
|
dp[0][1]=1;
|
||||||
|
dp[1][1]=1;
|
||||||
|
dp[2][1]=1;
|
||||||
|
bool b=1;
|
||||||
|
for(int i=4;b;i+=3)
|
||||||
|
{
|
||||||
|
for(int j=0;j<3;j++)
|
||||||
|
{
|
||||||
|
dp[j][1]++;
|
||||||
|
int r=(j+1)%3,l=(r+1)%3;
|
||||||
|
ans[i+j]=ans[i+j-1]+dp[l][1]*2+dp[r][1]*2;
|
||||||
|
// printf("%d:%d\n",i+j,ans[i+j]);
|
||||||
|
if(ans[i+j]>=N-5)
|
||||||
|
{
|
||||||
|
b=0;
|
||||||
|
len=i+j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int find(int u,int l,int r)
|
||||||
|
{
|
||||||
|
int mid=(l+r)/2;
|
||||||
|
if(l==r)
|
||||||
|
{
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
if(ans[mid]==u)
|
||||||
|
{
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
if(u<ans[mid])
|
||||||
|
{
|
||||||
|
return find(u,l,mid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return find(u,mid+1,r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// freopen("bout.txt","w",stdout);
|
||||||
|
pre();
|
||||||
|
scanf("%d",&t);
|
||||||
|
while(t--)
|
||||||
|
{
|
||||||
|
scanf("%d",&n);
|
||||||
|
printf("%d\n",find(n,1,len));
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
2
|
||||||
|
2
|
||||||
|
3
|
||||||
|
83
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#include<iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include<cmath>
|
||||||
|
using namespace std;
|
||||||
|
int n,m,k;
|
||||||
|
int gcd(int a,int b)
|
||||||
|
{
|
||||||
|
while(b!=0)
|
||||||
|
{
|
||||||
|
int tmp=a;
|
||||||
|
a=b;
|
||||||
|
b=tmp%b;
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// freopen("bout.txt","w",stdout);
|
||||||
|
|
||||||
|
scanf("%d%d%d",&n,&m,&k);
|
||||||
|
int s=n*m/k*2;
|
||||||
|
if(n*m*2%k!=0)
|
||||||
|
{
|
||||||
|
printf("NO");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int nm=gcd(n,m),n1=n/nm,m1=m/nm;
|
||||||
|
int x=gcd(k,n1),xy=gcd(k,nm),y=gcd(k,m1);
|
||||||
|
printf("%d %d %d %d\n",nm,x,y,xy);
|
||||||
|
if(gcd(x*y*xy,s)==s)
|
||||||
|
{
|
||||||
|
printf("YES\n0 0\n%d 0\n0 %d\n",x*xy,y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("NO");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
# 题目
|
||||||
|
* 链接
|
||||||
|
### 题意
|
||||||
|
|
||||||
|
### 做法
|
||||||
|
|
||||||
|
### 关键词
|
||||||
|
|
||||||
|
### 易错点
|
||||||
|
|
||||||
|
### 工具箱
|
||||||
|
*
|
||||||
|
### 题面
|
||||||
|
|
||||||
|
### Input
|
||||||
|
|
||||||
|
### Output
|
||||||
|
|
||||||
|
### Sample
|
||||||
|
#### input
|
||||||
|
|
||||||
|
#### output
|
||||||
|
|
||||||
|
### Hint
|
||||||
|
|
||||||
|
|
||||||
|
![](sketch.jpg)
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
Loading…
Reference in New Issue