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

来源:互联网 发布:绝地游戏画面优化 编辑:程序博客网 时间:2024/05/16 03:35
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;  }

  

阅读全文
0 0
原创粉丝点击