您的位置:首页 > 其它

2015 AlBaath Collegiate Programming Contest(2月14日训练赛)

2017-02-14 18:08 429 查看
A (By ggg):

 

题意:一个人还有x秒到红绿灯,这个红绿灯有g秒绿灯,y秒黄
灯,r秒红灯,问你到红绿灯的时候是什么灯。值得注意的是绿
灯变黄灯时,第g秒是黄灯了。


  

  

B (By Anxdada):

Gym - 100947B

C(By Kresnt):

显然,当 n 时偶数的时候,只有 2 种取法(取下标为奇数的,或是取下标为偶数的)

当 n 为奇数时,按照隔一取一的方式遍历序列
Seq A:1 5 3 2 4
遍历为 Seq B:1 3 4 5 2

然后问题就变成了从 *B* 序列中取 *连续的* n/2+n&1 个数

开一个前缀和sum[] 就解决啦


  

D (By ggg) :

  

题意:给你一个n,要你输出三个数,相互给予后都能成为n,每次给予的数的大小是被给予的数的大小。数学思维题,直接贴代码感受

void solve() {
int n;  scanf("%d", &n);
if (n%8!=0)  puts("Impossible");
else {
printf("%d %d %d\n", n/8*11, n/8*7, n/8*6);
}

}
int main() {
int t = 1;
scanf("%d", &t);
while(t--)
solve();
return 0;
}


  

E(By):

F(By pipixia):

Gym - 100947F

G(By Cyril1317):

Gym - 100947G Square Spiral Search

H(By Cyril1317):

Gym - 100947H Phobia

I(By xgg):

gym 100947I (求因子)

J(By):

K(By Kresnt):

这是一道模拟题

(0,0)

–> 右移

{

–> 向左下角移

–> 到边界,

1)左边界的话向下

2) 下边界的话向右

–> 向右上移

}

summarize 一下,发现 “{” “}”内的是重复的,故写成循环就好了

然后发现第一步右移到了右上角是有问题的,就改成

1)在上边界的话右移

2)在右边界的话下移

以


  

while(true){
ans.push_back(mp[x][y]);
if(y < n-1) y++;
else x++;

while(y > 0 && x < n-1)
ans.push_back(mp[x++][y--]);
ans.push_back(mp[x][y]);

if(x < n-1)  x++;
else y++;

while(y < n-1 && x > 0)
ans.push_back(mp[x--][y++]);

if(x == n-1 && y == n-1) break;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐