CodeForces
来源:互联网 发布:时时彩巴丁算法 编辑:程序博客网 时间:2024/05/21 06:38
根据弧度排个序,扫一遍就好了
如果用acos求弧度需要long double ,如果用atan求只需要double,主要就卡在精度问题
#include<bits/stdc++.h>using namespace std;struct node{ long double ve; int index;}num[100005];int cmp(node u ,node v){ return u.ve<v.ve;}int main(){ int n,i,x,y; long double minn,t; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d %d",&x,&y); t=sqrt(x*x+y*y); t=x/t; if(y<0) { num[i].ve=2*acos(-1.0)-acos(t); } else { num[i].ve=acos(t); } num[i].index=i; } sort(num+1,num+n+1,cmp); int ans1,ans2; minn=1000; num[n+1].ve=num[1].ve+2.0*acos(-1.0); num[n+1].index=num[1].index; for(i=2;i<=n+1;i++) { t=num[i].ve-num[i-1].ve; if(t>acos(-1.0)) t=2.0*acos(-1.0)-t; // printf("%.30lf %.30lf\n",t,2.0*acos(-1.0)); if(minn>t) { minn=t; ans1=num[i].index; ans2=num[i-1].index; } } printf("%d %d\n",ans1,ans2); return 0;}/*4-6427 6285-5386 52673898 -72393905 -7252*/
不难的一个bfs,一直t在memset上,每次bfs是不需要memset标记数组的,只要你记录一下,每个点就只需要扫一次了
#include<bits/stdc++.h>using namespace std;char mapp[1005][1005];bool book[1005][1005],visit[1005][1005];int anss[1005][1005];int n,m;struct node{ int x,y;}road[1000000];int ne[4][2]={0,1,0,-1,1,0,-1,0};int check(node t){ if(t.x<1||t.x>n||t.y<1||t.y>m||book[t.x][t.y]) return 1; return 0;}int bfs(node beginn){ int ans=0; node re,pe; int i,j=0; book[beginn.x][beginn.y]=1; queue<node>q; q.push(beginn); while(!q.empty()) { re=q.front(); road[j++]=re; visit[re.x][re.y]=1; q.pop(); for(i=0;i<4;i++) { pe=re; pe.x+=ne[i][0]; pe.y+=ne[i][1]; if(mapp[pe.x][pe.y]=='*') { ans++; continue; } if(check(pe)) continue; book[pe.x][pe.y]=1; q.push(pe); } } for(i=0;i<j;i++) anss[road[i].x][road[i].y]=ans; // printf("haha%d %d %d\n",beginn.x,beginn.y,ans); return 0;}int main(){ int k,i,x,y,j; node beginn; scanf("%d %d %d",&n,&m,&k); for(i=1;i<=n;i++) scanf("%s",mapp[i]+1); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(mapp[i][j]=='.'&&visit[i][j]==0) { beginn.x=i; beginn.y=j; bfs(beginn); } } } while(k--) { scanf("%d %d",&x,&y); printf("%d\n",anss[x][y]); } return 0;}
其实这两个题都不是很难,错就错在方法选择上,在代码实现之前,应好好想想选择的方法是否可行
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 快速排序的多种实现(一)
- 简单分辨网站服务器的语言和中间件和数据库
- druid使用 资料
- Git和Github简单教程 (个人使用以及团队开发)
- eclipse alt+/智能提示错误问题
- CodeForces
- Pixhawk遥控器无法检测&bootloader烧写
- DNS原理
- bootstrap selectpicker 通过代码指定选中值
- 1054 电梯
- 贪心——The Martian Challenge 2017 #G. Pick Your Team
- [LibreOffice]Calc文档开发_001:Calc文档的创建
- C++中的IO库
- 蓝桥杯-队列操作(java)