当前进度
2024-05-10 13:03:11
发布于:广东
32阅读
0回复
0点赞
#include <iostream>
#include <cstdio>
using namespace std;
int house[105][105], money[105], level[105];//记录房子当前的钱及每个等级的钱
int loc[2];//记录位置
int d[105];
int id[105];//记录房子归属,小码君是1,小码酱是-1
int n, m, q, l, jun, jiang, flag, k, cur = 1, ct;
bool check(){
return (cur == 1 && jun >= money[loc[cur]]) || (cur == 0 && jiang >= money[loc[cur]]);
}
int move(int k){
cur ^= 1, ct++;//交换操作
loc[cur] -= k;
while(loc[cur] < 0) loc[cur] += n;
loc[cur] %= n;//移动
if(id[loc[cur]] == 0) return 0;//没人买就return
if(id[loc[cur]] == 1 && cur == 1) jun += money[loc[cur]];
else if(id[loc[cur]] == -1 && cur == 0) jiang += money[loc[cur]];//加钱
else if(id[loc[cur]] == 1 && cur == 0){
if(check()){
jiang -= money[loc[cur]], jun += money[loc[cur]];//转钱
}else return -1;
}else{
if(check()){
jun -= money[loc[cur]], jiang += money[loc[cur]];
}else return 1;
}return 0;
}void buy(int k){
for(int i = level[loc[cur]]; i <= l && i <= k; i++){
//cout << house[loc[cur]][i] << ' ';
if(cur == 1){
if(jun >= house[loc[cur]][i]){
if(level == 0) id[loc[cur]] = 1;
jun -= house[loc[cur]][i];
level[loc[cur]]++, money[loc[cur]] += house[loc[cur]][i];
}
else break;
}else{
if(jiang >= house[loc[cur]][i]){
if(level == 0) id[loc[cur]] = -1;
jiang -= house[loc[cur]][i];
level[loc[cur]]++, money[loc[cur]] += house[loc[cur]][i];
}
else break;
}
}
}
int main(){
cin >> n >> m >> q >> l;
jun = jiang = m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= l; j++){
cin >> house[i][j];
}
}for(int i = 1; i <= n; i++){
cin >> d[i];
}
while(cin >> flag >> k){
cout << jun << ' ' << jiang << endl;
if(flag == 1){
int x = move(k);
if(x == 1){
cout << "JUN";
return 0;
}else if(x == -1){
cout << "JIANG";
return 0;
}
}else buy(k);
if(ct % 2 == 0 && ct != 0){
for(int i = 1; i <= n; i++){
if(id[i] == 1) jun += d[i];
if(id[i] == -1) jiang += d[i];
}
}
}
return 0;
}
全部评论 3
这个比不比猪国杀(P2482 )好写
2024-05-09 来自 江苏
0看看有没有错的
2024-05-08 来自 广东
06
2024-05-08 来自 广东
0
有帮助,赞一个