社区讨论
开心的错了,求调
P1460[USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m6akmc5k
- 此快照首次捕获于
- 2025/01/24 17:40 去年
- 此快照最后确认于
- 2025/11/04 10:43 4 个月前
CPP
#include<iostream>
#include<queue>
using namespace std;
struct wss//维生素子结构体 暂时用
{
int ans;//料饲个数
int num[30];//饲料编号
int wtm[30]; //素子之和
};
int v,wtm[10000];
int g,sl[10000][10000];
int ans;
queue<wss> q;
int main(){
//输入
cin>>v;
for(int i=0;i<v;i++){
cin>>wtm[i];
}
cin>>g;
for(int i=0;i<g;i++){
for(int j=0;j<v;j++){
cin>>sl[i][j];
}
}
//初始状态1种饲料的情况
for(int i=1;i<=g;i++)
{
wss n1;
n1.ans=1;
n1.num[n1.ans]=i;
for(int j=0;j<v;j++){
n1.wtm[j]=sl[i][j];
}
q.push(n1);//入了个队
}
//队列非空,重复执行
while(!q.empty())
{
wss n1;
n1=q.front();//保留
q.pop();//出队
bool b=true;
for(int i=0;i<v;i++)
{
b=b&&(n1.wtm[i]>=wtm[i]);
}
if(b)
{
cout<<n1.ans;
for(int i=0;i<n1.ans;i++)cout<<n1.num[i]<<" ";
return 0;
}
//拓展新状态
int start=n1.num[n1.ans];
for(int i=start+1;i<=g;i++)
{
wss n2;
n2.ans=n1.ans+1;
n2.num[n2.ans]=i;
for(int j=1;j<=v;j++)
n2.wtm[j]=n1.wtm[j]+sl[i][j];
//合法新状态
q.push(n2);
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...