CodeForces - 197D
开场连wa三发A题,差点心态崩了,还好坚持打完了,一共A了三题
A题,判断能不能放第一个圆,能放的话,先手比赢
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; int main()
{
ios::sync_with_stdio(false);
cin.tie();
int a,b,r;
cin>>a>>b>>r;
if(a>=*r&&b>=*r)cout<<"First"<<endl;
else cout<<"Second"<<endl;
return ;
}
/********************* *********************/
A
B题,数学题,模拟一下就好了,注意符号一定要在第一个位置,刚开始用gcd负号在第二个数那里了wa了一发
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; int gcd(int a,int b)
{
return b ? gcd(b,a%b):a;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n,m,a,b,a1,b1;
cin>>n>>m;
for(int i=;i<=n;i++)
{
cin>>a;
if(i==)a1=a;
}
for(int i=;i<=m;i++)
{
cin>>b;
if(i==)b1=b;
}
if(n>m)
{
if(a1*b1>)cout<<"Infinity"<<endl;
else cout<<"-Infinity"<<endl;
}
else if(n<m)cout<<"0/1"<<endl;
else
{
int x=gcd(a1,b1);
a1/=x;b1/=x;
if(a1*b1<)cout<<"-"<<abs(a1)<<"/"<<abs(b1)<<endl;
else cout<<abs(a1)<<"/"<<abs(b1)<<endl;
}
return ;
}
/********************* *********************/
B
C题才是最水的题。。。搞一个记录最大的数组从后往前扫一边就出来了
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; int maxx[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie();
string s;
cin>>s;
maxx[s.size()]=;
for(int i=s.size()-;i>=;i--)
maxx[i]=max(maxx[i+],s[i]-'');
string ans="";
for(int i=;i<s.size();i++)
{
if(maxx[i]==s[i]-'')ans+=s[i];
}
cout<<ans<<endl;
return ;
}
/********************* *********************/
C
D题,dfs,如果一个点能从两个方向到达的话,那就输出yes,用一个数组记录到达的位置
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; char ma[N][N];
int dx[]= {,,-,};
int dy[]= {,,,-};
bool vis[N][N];
int n,m,sx,sy;
pair<int,int>v[N][N];
bool ok(int x,int y)
{
if(ma[x][y]=='.'&&!vis[x][y])return ;
return ;
}
void dfs(int x,int y)
{
int fx=x,fy=y;
while(fx<)fx+=n;
fx%=n;
while(fy<)fy+=m;
fy%=m;
if(vis[fx][fy]&&(v[fx][fy].first!=x||v[fx][fy].second!=y))
{
cout<<"Yes"<<endl;
exit();
}
if(!ok(fx,fy))return ;
vis[fx][fy]=;
v[fx][fy]=make_pair(x,y);
for(int i=;i<;i++)
dfs(x+dx[i],y+dy[i]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cin>>n>>m;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
cin>>ma[i][j];
if(ma[i][j]=='S')
{
sx=i;
sy=j;
ma[i][j]='.';
}
}
}
memset(vis,,sizeof vis);
dfs(sx,sy);
cout<<"No"<<endl;
return ;
}
/*********************
5 5
##.##
#..##
..###
.#S..
##.##
*********************/
D
E题,计算几何,极角排序,先dfs一遍预处理出每个节点有多少子节点,然后dfs一遍,每个区间进行极角排序(刚开始以为只需要一遍极角排序就行了,后来
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; struct point {
double x,y;
int id;
}p[N];
point p0;
vector<int>v[N];
int sz[N],ans[N];
bool comp(point p1,point p2)
{
double te=(p2.x-p0.x)*(p1.y-p0.y)-(p2.y-p0.y)*(p1.x-p0.x);
if(te<)return ;
return ;
}
void dfs(int u,int fa)
{
sz[u]=;
for(int i=;i<v[u].size();i++)
if(v[u][i]!=fa)
{
dfs(v[u][i],u);
sz[u]+=sz[v[u][i]];
}
}
void dfssort(int u,int fa,int be,int en)
{
for(int i=be;i<en;i++)
if(p[i].x<p[be].x||(p[i].x==p[be].x&&p[i].y<p[be].y))
swap(p[i],p[be]);
p0=p[be];
ans[p[be].id]=u;
sort(p+be+,p+en,comp);
int te=be;
for(int i=; i<v[u].size(); i++)
{
if(v[u][i]!=fa)
{
dfssort(v[u][i],u,te+,te+sz[v[u][i]]+);
te+=sz[v[u][i]];
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n;
cin>>n;
for(int i=;i<n;i++)
{
int a,b;
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
for(int i=;i<n;i++)
{
cin>>p[i].x>>p[i].y;
p[i].id=i+;
}
dfs(,-);
// for(int i=1;i<=n;i++)cout<<sz[i]<<endl;
dfssort(,-,,n);
for(int i=;i<=n;i++)cout<<ans[i]<<" ";
cout<<endl;
return ;
}
/*********************
3
1 3
2 3
0 0
1 1
2 0
*********************/
E
发现这样子节点可能会坐标倒回来,有可能相交)
CodeForces - 197D的更多相关文章
- Codeforces 197D - Infinite Maze
197D - Infinite Maze 思路:bfs,如果一个点被搜到第二次,那么就是符合要求的. 用vis[i][j].x,vis[i][j].y表示i,j(i,j是取模过后的值)这个点第一次被搜 ...
- [CodeForces - 197D] D - Infinite Maze
D - Infinite Maze We've got a rectangular n × m-cell maze. Each cell is either passable, or is a wal ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
随机推荐
- 转!!java泛型
介绍java泛型的一篇文章,通俗易懂! 原文地址:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html 一. 泛型概念的提出(为什么需要泛型)? 首先,我 ...
- git 解决push报错:[rejected] master -> master (fetch first) error: failed to push some refs to
今天对代码进行了修改优化,然后往往远程push,但push后报错了 git操作 git add . git commit -m"fix" git push origin maste ...
- JS-排序详解:冒泡排序、选择排序和快速排序
JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在 ...
- 协程+IO切换实现并发
from gevent import monkey # 以后代码中遇到IO都会自动执行greenlet的switch进行切换 monkey.patch_all() import requests im ...
- 安全技能树简版 正式发布——BY 余弦(知道创宇)
之前留意到知道创宇发布的<知道创宇研发技能表>,对自己有很大的启发,最近听说知道创宇的余弦大神创业了(题外话),还发布了<安全技能树简版V1>,仔细研读之后总体感觉不那么复杂了 ...
- 转:用unix socket加速php-fpm、mysql、redis的连接
图虫的服务器长期是单机运行.估计除了mysql之外,php-fpm和redis还可以在单机上共存很长时间.(多说服务器早就达成了单机每日2000万+动态请求,所以我对单机搞定图虫的大流量非常乐观) 如 ...
- Part01、memcache 缓存
Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy 目录 一. Memcached Memcached安装和基本使用 Python操作Memcached2.1 se ...
- python全栈开发之OS模块的总结
OS模块 1. os.name() 获取当前的系统 2.os.getcwd #获取当前的工作目录 import os cwd=os.getcwd() # dir=os.listdi ...
- 覆盖bootstrap的样式
覆盖bootstrap的样式,很简单.在css中加上 !important 来更改自己样式的执行优先级!
- PAT 天梯赛 L1-042. 日期格式化 【水】
题目链接 https://www.patest.cn/contests/gplt/L1-042 AC代码 #include <iostream> #include <cstdio&g ...