#1097: 題目刪除通知


1164007-3@g.puiching.edu.mo (S5A15林鉑洪)

School : No School
ID : 774
IP address : [192.168.120.33]
Last Login :
2024-11-18 18:55:47
b060. 洗牌(hard version) | From: [192.168.120.33] | Post Date : 2023-05-27 11:56

P6E17區叡恆

S1F28黃皓紀

P6E40羅振軒

P6E06余汶憲

劉皓正P5B33

 

以上用户涉嫌抄袭题目 b060 的参考程序,考虑到公平性,题目 b060 以及题目 a948 将会在今日 12:00 移除

以下是 b060 和 a948 的内容以及参考程序,想要挑战自己的 OIer 可以用自己的程序和参考程序得出的答案来进行测试

题面:

小明手上有 x 张有着编号分别为 1, 2, ... , x 的牌。一开始,他把牌堆放在桌上,牌堆从上到下的编号为 1, 2, ... , x

为了准备接下来的比赛,小明要进行 N 次洗牌。一次洗牌过程如下

  1. 将牌堆上方的 x / 2 张牌放在一旁,组成一个新牌堆(堆 A ),牌堆从上到下的编号次序不会改变
  2. 将 堆 A 和剩下的牌堆(堆 B )拿起,并将它们底部的两张牌放在一侧(堆 C ), 其中从 堆 A 拿的牌在 堆 B 拿的牌之下
  3. 进行以下操作,直至 堆 A 和 堆 B 为空牌堆:
    1. 将 堆 A 最下面的一张牌放在 堆 C 顶上
    2. 将 堆 B 最下面的一张牌放在 堆 C 顶上
  4. 堆 C 成为洗牌过后的牌堆,洗牌结束

这种洗牌方式是众多方式中最快的一个,但也很容易被算出来,请你输出经过 N 次洗牌的牌堆从上到下的编号序

参考程序:

#include<bits/stdc++.h>

using namespace std;

bitset<20> l[1000005],ans[1000005];

bitset<1000005>ap;

int main(){

ios_base::sync_with_stdio(false);

cin.tie(NULL);

int x, n;

cin >> x >> n;

int hx=x/2;

int nw =1,cnt;

while(nw<=x){

while(ap[nw]) nw++;

if(nw>x) break;

cnt=0;

while(!ap[nw]){

l[cnt]=nw;

ap[nw]=true;

cnt++;

if(nw > hx) nw = ((nw-hx)<<1)-1;

else nw = nw<<1;

}

int md = n%cnt;

for(int i =0; i < cnt; i++) ans[l[(md+i)%cnt].to_ulong()]= l[i];

}

for(int i = 1; i <= x; i++){

printf("%d ",ans[i].to_ulong());

}

printf("\n");

return 0;

}

 

 
#1098: Re:題目刪除通知


1452945-9@g.puiching.edu.mo (S2F38羅振軒)

School : Pui Ching Middle School
ID : 1704
IP address : [192.168.120.33]
Last Login :
2024-11-21 10:13:15
b060. 洗牌(hard version) | From: [192.168.120.33] | Post Date : 2023-05-27 12:08

P6E17區叡恆

S1F28黃皓紀

P6E40羅振軒

P6E06余汶憲

劉皓正P5B33

 

以上用户涉嫌抄袭题目 b060 的参考程序,考虑到公平性,题目 b060 以及题目 a948 将会在今日 12:00 移除

以下是 b060 和 a948 的内容以及参考程序,想要挑战自己的 OIer 可以用自己的程序和参考程序得出的答案来进行测试

题面:

小明手上有 x 张有着编号分别为 1, 2, ... , x 的牌。一开始,他把牌堆放在桌上,牌堆从上到下的编号为 1, 2, ... , x

为了准备接下来的比赛,小明要进行 N 次洗牌。一次洗牌过程如下

  1. 将牌堆上方的 x / 2 张牌放在一旁,组成一个新牌堆(堆 A ),牌堆从上到下的编号次序不会改变
  2. 将 堆 A 和剩下的牌堆(堆 B )拿起,并将它们底部的两张牌放在一侧(堆 C ), 其中从 堆 A 拿的牌在 堆 B 拿的牌之下
  3. 进行以下操作,直至 堆 A 和 堆 B 为空牌堆:
    1. 将 堆 A 最下面的一张牌放在 堆 C 顶上
    2. 将 堆 B 最下面的一张牌放在 堆 C 顶上
  4. 堆 C 成为洗牌过后的牌堆,洗牌结束

这种洗牌方式是众多方式中最快的一个,但也很容易被算出来,请你输出经过 N 次洗牌的牌堆从上到下的编号序

参考程序:

#include<bits/stdc++.h>

using namespace std;

bitset l[1000005],ans[1000005];

bitsetap;

int main(){

ios_base::sync_with_stdio(false);

cin.tie(NULL);

int x, n;

cin >> x >> n;

int hx=x/2;

int nw =1,cnt;

while(nw<=x){

while(ap[nw]) nw++;

if(nw>x) break;

cnt=0;

while(!ap[nw]){

l[cnt]=nw;

ap[nw]=true;

cnt++;

if(nw > hx) nw = ((nw-hx)<<1)-1;

else nw = nw<<1;

}

int md = n%cnt;

for(int i =0; i < cnt; i++) ans[l[(md+i)%cnt].to_ulong()]= l[i];

}

for(int i = 1; i <= x; i++){

printf("%d ",ans[i].to_ulong());

}

printf("\n");

return 0;

}

 


老師教我們的

 
#1099: Re:題目刪除通知


1360467-8@g.puiching.edu.mo (tetris)

School : No School
ID : 1791
IP address : [192.168.120.33]
Last Login :
2024-11-22 16:25:07
b060. 洗牌(hard version) | From: [192.168.120.33] | Post Date : 2023-05-27 12:21

P6E17區叡恆

S1F28黃皓紀

P6E40羅振軒

P6E06余汶憲

劉皓正P5B33

 

以上用户涉嫌抄袭题目 b060 的参考程序,考虑到公平性,题目 b060 以及题目 a948 将会在今日 12:00 移除

以下是 b060 和 a948 的内容以及参考程序,想要挑战自己的 OIer 可以用自己的程序和参考程序得出的答案来进行测试

题面:

小明手上有 x 张有着编号分别为 1, 2, ... , x 的牌。一开始,他把牌堆放在桌上,牌堆从上到下的编号为 1, 2, ... , x

为了准备接下来的比赛,小明要进行 N 次洗牌。一次洗牌过程如下

  1. 将牌堆上方的 x / 2 张牌放在一旁,组成一个新牌堆(堆 A ),牌堆从上到下的编号次序不会改变
  2. 将 堆 A 和剩下的牌堆(堆 B )拿起,并将它们底部的两张牌放在一侧(堆 C ), 其中从 堆 A 拿的牌在 堆 B 拿的牌之下
  3. 进行以下操作,直至 堆 A 和 堆 B 为空牌堆:
    1. 将 堆 A 最下面的一张牌放在 堆 C 顶上
    2. 将 堆 B 最下面的一张牌放在 堆 C 顶上
  4. 堆 C 成为洗牌过后的牌堆,洗牌结束

这种洗牌方式是众多方式中最快的一个,但也很容易被算出来,请你输出经过 N 次洗牌的牌堆从上到下的编号序

参考程序:

#include<bits/stdc++.h>

using namespace std;

bitset l[1000005],ans[1000005];

bitsetap;

int main(){

ios_base::sync_with_stdio(false);

cin.tie(NULL);

int x, n;

cin >> x >> n;

int hx=x/2;

int nw =1,cnt;

while(nw<=x){

while(ap[nw]) nw++;

if(nw>x) break;

cnt=0;

while(!ap[nw]){

l[cnt]=nw;

ap[nw]=true;

cnt++;

if(nw > hx) nw = ((nw-hx)<<1)-1;

else nw = nw<<1;

}

int md = n%cnt;

for(int i =0; i < cnt; i++) ans[l[(md+i)%cnt].to_ulong()]= l[i];

}

for(int i = 1; i <= x; i++){

printf("%d ",ans[i].to_ulong());

}

printf("\n");

return 0;

}

 


老師教我們的


對啊

 
#1101: Re:題目刪除通知


1164007-3@g.puiching.edu.mo (S5A15林鉑洪)

School : No School
ID : 774
IP address : [192.168.120.33]
Last Login :
2024-11-18 18:55:47
b060. 洗牌(hard version) | From: [192.168.120.33] | Post Date : 2023-05-27 12:30

想和我吵架争论的去另外一个讨论去说,这里是公告,不要随意留言

 
ZeroJudge Forum