Codeforces Beta Round #32 (Div. 2, Codeforces format)

http://codeforces.com/contest/32

A

 #include<bits/stdc++.h>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define sqr(x) ((x)*(x))
#define pb push_back
#define maxn 1000005
typedef long long ll;
typedef unsigned long long ull;
/*#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif */ int n,m;
int a[]; int main(){
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
#endif
std::ios::sync_with_stdio(false);
cin>>n>>m;
int ans=;
for(int i=;i<=n;i++) cin>>a[i];
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i!=j&&abs(a[i]-a[j])<=m){
ans++;
}
}
}
cout<<ans<<endl;
}

B

模拟

 #include<bits/stdc++.h>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define sqr(x) ((x)*(x))
#define pb push_back
#define maxn 1000005
typedef long long ll;
typedef unsigned long long ull;
/*#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif */ int n,m;
int a[]; int main(){
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
#endif
std::ios::sync_with_stdio(false);
string str;
cin>>str;
for(int i=;i<str.length();i++){
if(str[i]=='.'){
cout<<;
}
else{
if(str[i+]=='.'){
cout<<;
}
else{
cout<<;
}
i++;
}
}
}

C

水题

 #include<bits/stdc++.h>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define sqr(x) ((x)*(x))
#define pb push_back
#define maxn 1000005
typedef long long ll;
typedef unsigned long long ull;
/*#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif */ int main(){
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
#endif
std::ios::sync_with_stdio(false);
ll n,m,s;
cin >> n >> m >> s;
ll w = (n - ) / s;
ll h = (m - ) / s;
ll cnt = (w + ) * (h + );
ll a = min (s - , (m - ) % s);
ll b = min (s - , (n - ) % s);
cout << (a + ) * (b + ) * cnt << endl;
return ;
}

D

模拟

 #include<bits/stdc++.h>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define sqr(x) ((x)*(x))
#define pb push_back
#define maxn 1000005
typedef long long ll;
typedef unsigned long long ull;
/*#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif */ string a[];
int n,m,k;
int main(){
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
#endif
std::ios::sync_with_stdio(false);
cin>>n>>m>>k;
for (int i=;i<n;i++) cin>>a[i];
for (int r=;r<n;r++)
for (int i=r;i<n-r;i++)
for (int j=r;j<m-r;j++)
if (a[i][j]=='*'&&a[i+r][j]=='*'&&a[i][j+r]=='*'&&a[i-r][j]=='*'&&a[i][j-r]=='*'){
k--;
if (!k){
cout<<i+<<" "<<j+<<" "<<i-r+<<" "<<j+<<" "<<i+r+<<" "<<j+<<" "<<i+<<" "<<j-r+<<" "<<i+<<" "<<j+r+<<endl;
return ;
}
}
cout<<-<<endl;
}

E

几何

先判断AB是否可以直接相连,不能的话就做A对于镜面的对称点,连接对称点和B,判断这条线段和镜面是否有交点,再判断交点连A是否会经过墙,交点连B是否会经过墙

 #include<bits/stdc++.h>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define sqr(x) ((x)*(x))
#define pb push_back
#define eps 1e-8
#define PI acos(-1.0)
#define maxn 1000005
typedef long long ll;
typedef unsigned long long ull; /*#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif */
int sgn(double x){
if(fabs(x)<eps) return ;
if(x<) return -;
else return ;
}
struct Point{
double x,y;
Point(){}
Point(double _x,double _y){
x=_x;
y=_y;
}
void input(){
scanf("%lf %lf",&x,&y);
}
void output(){
printf("%.2f %.2f\n",x,y);
}
bool operator == (const Point &b)const{
return sgn(x-b.x) == && sgn(y-b.y)== ;
}
bool operator < (const Point &b)const{
return sgn(x-b.x)==?sgn(y-b.y)<:x<b.x;
}
Point operator - (const Point &b)const{
return Point(x-b.x,y-b.y);
}
//叉积
double operator ^ (const Point &b)const{
return x*b.y-y*b.x;
}
//点积
double operator * (const Point &b)const{
return x*b.x+y*b.y;
}
//返回长度
double len(){
return hypot(x,y);
}
//返回长度的平方
double len2(){
return x*x+y*y;
}
//返回两点的距离
double distance(Point p){
return hypot(x-p.x,y-p.y);
}
Point operator + (const Point &b)const{
return Point(x+b.x,y+b.y);
}
Point operator * (const double &k)const{
return Point(x*k,y*k);
}
Point operator / (const double &k)const{
return Point(x/k,y/k);
} //计算pa和pb的夹角
//就是求这个点看a,b所成的夹角
///LightOJ1202
double rad(Point a,Point b){
Point p=*this;
return fabs(atan2(fabs((a-p)^(b-p)),(a-p)*(b-p)));
}
//化为长度为r的向量
Point trunc(double r){
double l=len();
if(!sgn(l)) return *this;
r/=l;
return Point(x*r,y*r);
}
//逆时针转90度
Point rotleft(){
return Point(-y,x);
}
//顺时针转90度
Point rotright(){
return Point(y,-x);
}
//绕着p点逆时针旋转angle
Point rotate(Point p,double angle){
Point v=(*this) -p;
double c=cos(angle),s=sin(angle);
return Point(p.x+v.x*c-v.y*s,p.y+v.x*s+v.y*c);
}
}; struct Line{
Point s,e;
Line(){}
Line(Point _s,Point _e){
s=_s;
e=_e;
}
bool operator==(Line v){
return (s==v.s)&&(e==v.e);
}
//根据一个点和倾斜角angle确定直线,0<=angle<pi
Line(Point p,double angle){
s=p;
if(sgn(angle-PI/)==){
e=(s+Point(,));
}
else{
e=(s+Point(,tan(angle)));
}
}
//ax+by+c=0;
Line(double a,double b,double c){
if(sgn(a)==){
s=Point(,-c/b);
e=Point(,-c/b);
}
else if(sgn(b)==){
s=Point(-c/a,);
e=Point(-c/a,);
}
else{
s=Point(,-c/b);
e=Point(,(-c-a)/b);
}
}
void input(){
s.input();
e.input();
}
void adjust(){
if(e<s) swap(s,e);
}
//求线段长度
double length(){
return s.distance(e);
}
inline double operator * (const Point &p) const {
return (e - s) * (p - s);
}
//返回直线倾斜角 0<=angle<pi
double angle(){
double k=atan2(e.y-s.y,e.x-s.x);
if(sgn(k)<) k+=PI;
if(sgn(k-PI)==) k-=PI;
return k;
}
//点和直线的关系
//1 在左侧
//2 在右侧
//3 在直线上
int relation(Point p){
int c=sgn((p-s)^(e-s));
if(c<) return ;
else if(c>) return ;
else return ;
}
//点在线段上的判断
bool pointonseg(Point p){
return sgn((p-s)^(e-s))==&&sgn((p-s)*(p-e))<=;
}
//两向量平行(对应直线平行或重合)
bool parallel(Line v){
// cout<<sgn((e-s)^(v.e-v.s))<<endl;
return sgn((e-s)^(v.e-v.s))==;
}
//两线段相交判断
//2 规范相交
//1 非规范相交
//0 不相交
int segcrossseg(Line v){
int d1=sgn((e-s)^(v.s-s));
int d2=sgn((e-s)^(v.e-s));
int d3=sgn((v.e-v.s)^(s-v.s));
int d4=sgn((v.e-v.s)^(e-v.s));
if((d1^d2)==-&&(d3^d4)==-) return ;
return (d1==&&sgn((v.s-s)*(v.s-e))<=||
d2==&&sgn((v.e-s)*(v.e-e))<=||
d3==&&sgn((s-v.s)*(s-v.e))<=||
d4==&&sgn((e-v.s)*(e-v.e))<=);
}
//直线和线段相交判断
//-*this line -v seg
//2 规范相交
//1 非规范相交
//0 不相交
int linecrossseg(Line v){
int d1=sgn((e-s)^(v.s-s));
int d2=sgn((e-s)^(v.e-s));
if((d1^d2)==-) return ;
return (d1==||d2==);
}
//两直线关系
//0 平行
//1 重合
//2 相交
int linecrossline(Line v){
if((*this).parallel(v))
return v.relation(s)==;
return ;
}
//求两直线的交点
//要保证两直线不平行或重合
Point crosspoint(Line v){
double a1=(v.e-v.s)^(s-v.s);
double a2=(v.e-v.s)^(e-v.s);
if(a1==a2) return Point(1e9,1e9);
return Point((s.x*a2-e.x*a1)/(a2-a1),(s.y*a2-e.y*a1)/(a2-a1));
}
Point PointtoLine(const Point &p){
return crosspoint(Line(p,p+(s-e).rotleft()));
}
Point SymPoint (const Point &p) {
return PointtoLine (p) * - p;
}
//点到直线的距离
double dispointtoline(Point p){
return fabs((p-s)^(e-s))/length();
}
//点到线段的距离
double dispointtoseg(Point p){
if(sgn((p-s)*(e-s))<||sgn((p-e)*(s-e))<)
return min(p.distance(s),p.distance(e));
return dispointtoline(p);
}
//返回线段到线段的距离
//前提是两线段不相交,相交距离就是0了
double dissegtoseg(Line v){
return min(min(dispointtoseg(v.s),dispointtoseg(v.e)),min(v.dispointtoseg(s),v.dispointtoseg(e)));
}
//返回点P在直线上的投影
Point lineprog(Point p){
return s+(((e-s)*((e-s)*(p-s)))/((e-s).len2()));
}
//返回点P关于直线的对称点
Point symmetrypoint(Point p){
Point q=lineprog(p);
return Point(*q.x-p.x,*q.y-p.y);
}
};
///两点之间,两点和镜子之间,镜子和墙
int main(){
#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif
std::ios::sync_with_stdio(false);
Point v,p;
v.input();
p.input();
Line w,m,L;
w.input();
m.input();
L.s=v,L.e=p;
if(L.segcrossseg(w)==){
if(L.segcrossseg(m)==||L.parallel(m)){
cout<<"YES"<<endl;
return ;
}
}
else{
Point tt=m.symmetrypoint(p);
if(m.segcrossseg(Line(v,tt))!=){
Point pp=m.crosspoint(Line(v,tt));
if(pp.x==1e9&&pp.y==1e9){
pp=p;
}
Line l1,l2;
l1.s=v,l1.e=pp;
l2.s=p,l2.e=pp;
// cout<<l1.segcrossseg(w)<<" "<<l2.segcrossseg(w)<<endl;
if(l1.segcrossseg(w)==&&l2.segcrossseg(w)==){
cout<<"YES"<<endl;
return ;
}
}
}
cout<<"NO"<<endl;
return ;
}

最新文章

  1. android 性能优化-电量篇
  2. 手机APP开发:学JAVA转安卓APP开发是不是很容易?
  3. Struts2:效验器——注解
  4. ContentProvider备份短信,以xml文件存储
  5. BZOJ 2600: [Ioi2011]ricehub
  6. POJ 3349:Snowflake Snow Snowflakes(数的Hash)
  7. oracle interval-partition 解决range分区大难题
  8. ssh docker container
  9. PLSQL developer 连接不上64位Oracle 的解决方法
  10. 创建GIF loading图片
  11. 转换成maven时报错
  12. Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
  13. 实例说明Java中的null
  14. SQL SERVER 2012 AlwaysOn - 操作系统层面 01
  15. Java8 Lambda和Stream的用法
  16. tensorFlow(五)深层神经网络
  17. 【洛谷P1854】花店橱窗 线性dp+路径输出
  18. 安装oracle经验
  19. 使用IntelljIDEA生成接口的类继承图及装饰器模式
  20. spring boot对输入的字符串进行html转码

热门文章

  1. day23-类的封装
  2. 回溯法 leetcode题解 Combination Sum 递归法
  3. javascript:查看一个图片是否加载完成
  4. Python使用xlwt模块 操作Excel文件
  5. Linux sort命令使用方法
  6. android如何快速查看APK包名和activity
  7. PL/SQL 日期时间类型函数及运算
  8. ArcGIS案例学习笔记_3_2_CAD数据导入建库
  9. C++ 与 CDC相关的知识,点滴总结
  10. css样式中的绝对路径的参考对象