[FZYZOJ 1202] 金坷垃

P1202 -- 金坷垃

时间限制:1000MS

内存限制:131072KB

Description

金坷垃,金坷垃,小麦亩产一千八。金坷垃,金坷垃,一袋能当两袋撒。某牛看准了金坷垃的光明前途,已经储存了整整一满仓的金坷垃,这个仓库能放下N的金坷垃。

日本资源太缺乏,非洲农业不发达,日本和非洲纷纷要求购入。为了避免被偷被抢,作为奸商的某牛,又另外租了两个容量分别为Q和P的仓库。他每次可以把一个仓库中的金坷垃不停地运到另一个仓库,直到目标仓库满了,或者当前仓库空了。他如此这番折腾了很多次。至于多少次,某牛自己也忘了。终于,某牛只知道,容量为Q的仓库终于是空了。那么现在,最初容量为N的那个仓库,可能会有多少金坷垃咧?(显然某些金坷垃已经直接或者间接地运到了容量为P的仓库)

Input Format

输入三个数Q,P,N。分别表示新租的两个仓库的容量和原来的仓库容量。

Output Format

输出一行,从小到大输出最初的仓库可能的金坷垃数量。(本题的金坷垃单位,全部为Kg)

Sample Input

8 9 10

Sample Output

1 2 8 9 10

Hint

30%:Q,P,N<=10

60%:Q,P,N<=100

100%:Q,P,N<=1000

【题解】无力吐槽题目

有点像倒油的搜索题

加上读入优化2.0竟然0.001s=-=不给我0s

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int q,p,n;
 4 bool vis[1001][1001],ans[1001];
 5 char B[1<<15],*S=B,*T=B;
 6 char getchar2() {
 7     return S==T&&(T=(S=B)+fread(B,1,1<<15,stdin),S==T)?0:*S++;
 8 }
 9 int read() {
10     int x=0,f=1;
11     char ch=getchar2();
12     while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar2();}
13     while(ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar2();}
14     return x*f;
15 }
16 void f(int x,int y,int z) {
17     if(vis[x][y])return;
18     if(x==0)ans[z]=1;
19     vis[x][y]=1;
20     if(p-y>=x) f(0,x+y,z);
21     else f(x-p+y,p,z);
22     if(q-x>=y) f(x+y,0,z); 
23     else f(q,y-q+x,z);
24     if(n-z>=x) f(0,y,x+z);
25     else f(x-n+z,y,n);
26     if(q-x>=z) f(x+z,y,0);
27     else f(q,y,z-q+x);
28     if(n-z>=y) f(x,0,y+z);
29     else f(x,y-n+z,n);
30     if(p-y>=z) f(x,y+z,0);
31     else f(x,p,z-p+y);
32 }
33 int main() {
34     q=read();p=read();n=read();
35     f(0,0,n);
36     for (int i=0;i<=n;++i) if(ans[i]) printf("%d ",i);
37     return 0;
38 }
View Code

 

转载于:https://www.cnblogs.com/TonyNeal/p/fzyzoj1202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值