PKU Campus 2015


第一次打ACM现场赛

记得那天恰好在下雨,比赛前去看了看未名湖


至于比赛,我大概乱做了一下下。。。。。。


A

貌似是读入优化写挂了?不过看了几遍没有啊,把read()改成cin就A了

作死A了之后又wa一次,居然还算罚时,而且因为这个没进第一版不开森。。。


B

看起来是一道模拟题,看不懂样例是什么鬼


C

无向图,每次删一种颜色的边,求联通块个数

按时间分治+并查集。。。。。。。

当时往另外一道题套去了,结果就没想到这


D

给定三个圆,求公共的外切圆

不会做。。。

比赛中看到有人码这题

说公式推出来了,我看了一下

嗯。。。。大概满屏幕的公式看不懂

最后他们因为精度问题没过233333


E

极坐标系下求面积

不会极坐标系,圆心的公式半天没推出来。。。。弃疗。。。。


F

这题是用1,1,2,2...n,n构造一个排列

使得i与i之间的距离为i

拿到了唯一的silver ballon 好开森>w<

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int read(){int r=0,k=1;char c=getchar();
for(;c<'0'||c>'9';c=getchar())if(c=='-')k=-1;
for(;c>='0'&&c<='9';c=getchar())r=r*10+c-'0';return r*k;}
#define rep(i,l,r) for(int i=(l),_=(r);i<=_;i++)
#define per(i,r,l) for(int i=(r),_=(l);i>=_;i--)
#define INE(i,u) for(int i=head[u];~i;i=e[i].next)
#define MS(arr,x) memset(arr,x,sizeof(arr))
#define LL long long
/
int n;
/

/
void input()
{
     scanf("%d",&n);
}
void solve()
{
     if(n<=2) puts("0");
     else if(n%4==3)
     {
         int m=(n+1)/4;
         for(int i=4*m-4;i>=2*m;i-=2) printf("%d ",i);
         printf("%d ",4*m-2);
         for(int i=2*m-3;i>=1;i-=2) printf("%d ",i);
         printf("%d ",4*m-1);
         for(int i=1;i<=2*m-3;i+=2) printf("%d ",i);
         for(int i=2*m;i<=4*m-4;i+=2) printf("%d ",i);
         printf("%d ",2*m-1);
         for(int i=4*m-3;i>=2*m+1;i-=2) printf("%d ",i);
         printf("%d ",4*m-2);
         for(int i=2*m-2;i>=2;i-=2) printf("%d ",i);
         printf("%d %d ",2*m-1,4*m-1);
         for(int i=2;i<=2*m-2;i+=2) printf("%d ",i);
         for(int i=2*m+1;i<=4*m-3;i+=2) printf("%d ",i);
         puts("");
     }
     else if(n%4==0)
     {
          int m=n/4;
          for(int i=4*m-4;i>=2*m;i-=2) printf("%d ",i);
          printf("%d ",4*m-2);
          for(int i=2*m-3;i>=1;i-=2) printf("%d ",i);
          printf("%d ",4*m-1);
          for(int i=1;i<=2*m-3;i+=2) printf("%d ",i);
          for(int i=2*m;i<=4*m-4;i+=2) printf("%d ",i);
          printf("%d ",4*m);
          for(int i=4*m-3;i>=2*m+1;i-=2) printf("%d ",i);
          printf("%d ",4*m-2);
          for(int i=2*m-2;i>=2;i-=2) printf("%d ",i);
          printf("%d %d ",2*m-1,4*m-1);
          for(int i=2;i<=2*m-2;i+=2) printf("%d ",i);
          for(int i=2*m+1;i<=4*m-3;i+=2) printf("%d ",i);
          printf("%d %d ",2*m-1,4*m);
          puts("");
     }
     else puts("0");
}
int main()
{
    int t;cin>>t;
    while(t--)
    input(),solve();
    return 0;
}


H

给定一个序列,每次选择一个长度为l的区间

存在最大值有个贡献A

存在次小值有个贡献B

求每个数的平均贡献

嗯。。。。队友说这题很神,让我弃疗

于是我就没去想。。。。结果tm这么简单QwQ


I

sb题,读完题就秒了,不求方案数差评


J

给定n个点,求四个顶点属于点集的矩形数目

=w=队友表示题目太长不想翻译于是没看题

这么经典的原题怎么才两个人A掉

扫描线+sqrt分情况暴力分分钟切掉


比赛完了 雨好大……

你可能感兴趣的:(Contest)