WC 联训 Round #9
Posted cjoiershiina-mashiro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WC 联训 Round #9相关的知识,希望对你有一定的参考价值。
Contest
(2020cj_105)
0+10+20
T1忽略了插入一个数要减掉原来的贡献导致样例没看懂跳了,后面回来写费用流没空写了。
T2第二档写个LCT思维受限?只想着原树的根不能变没想到可以改根之后再改回来。
然后有三个(O(n^2))或者(O(n^2log n))的暴力,我写了一个(10)分的,另外两个是(30)和(40)分的。。。。
T3拿了20。后面有一个(n=15)和一个(n=20)爆搜跑了四个小时过不了。
C
按照题目给的移动顺序来爆搜的话可以得到(n=5)的一个方案。
然后发现这东西可以很轻松地从(5*5)扩展到(5n*5n)。
#include<cstdio>
const int N=1001;
int n,p[][2]={0,0,2,2,4,4,1,4,3,2,1,0,4,0,4,3,1,3,3,1,3,4,0,4,0,1,2,3,4,1,1,1,3,3,0,3,2,1,2,4,0,2,2,0,4,2,1,2,3,0},a[N][N],t;
void work(int X,int Y,int d)
{
if(X>=n/5||Y>=n/5) return ;
for(int i=d,j=0,x,y;j<25;i=(i+24+d*2)%25,++j)
{
x=p[i][0],y=p[i][1],a[x+5*X][y+5*Y]=++t;
if(d&&x==2&&y==4&&!X) work(X,Y+1,1);
if(d&&x==2&&!y) work(X+1,Y,0);
if(!d&&!x&&y==2&&!X) work(X,Y+1,0);
if(!d&&x==4&&y==2) work(X+1,Y,1);
}
}
int main()
{
scanf("%d",&n),work(0,0,0);
for(int i=0,j;i<n;++i,puts("")) for(j=0;j<n;++j) printf("%d ",a[i][j]);
}
以上是关于WC 联训 Round #9的主要内容,如果未能解决你的问题,请参考以下文章
Contest1900 - 2019年6月多校联训a层测试1
[Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3)][C. Playing Piano](代码片段