【BFS】CODE[VS] 1226 倒水問題 (BFS+模擬)
這道題主要考察程式碼能力
模擬倒水的過程,結果因為碼力太弱,漏了兩種情況(x和y全倒入一個(x或y)不滿)
然後就沒有然後了
最近超喜歡壓程式碼怎麼破???
程式碼如下:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
const int maxn = 333;
using namespace std;
int x,y,z ;
bool vis[maxn][maxn];
struct state{
int x,y,step;
};
state f;
queue<state>q;
int bfs()
{
q.push(f);
vis[f.x][f.y] = 1;
while(q.size())
{
f = q.front();
q.pop();
if(f.x == z|| f.y == z) return f.step;//最近超喜歡壓程式碼!
if(f.x < x && vis[x ][f.y] == 0) { q.push((state){x,f.y,f.step+1}); vis[x][f.y] = 1;}//倒滿x
if(f.y < y && vis[f.x][y] == 0) { q.push((state){f.x,y,f.step+1}); vis[f.x][y] = 1;}//倒滿y
if(f.x && vis[0][f.y] == 0) { q.push((state){0,f.y,f.step+1}); vis[0][f.y] = 1;}//倒空x
if(f.y && vis[f.x ][0] == 0) { q.push((state){f.x,0,f.step+1}); vis[f.x][0] = 1;}//倒空y
if(f.x >= y-f.y && vis[f.x-(y-f.y)][y] == 0){ q.push((state) {f.x-(y-f.y),y,f.step+1}); vis[f.x-(y-f.y)][y] = 1;}//從x倒入y中填滿y
if(f.y >= x-f.x && vis[x][f.y-(x-f.x)] == 0){ q.push((state) {x,f.y-(x-f.x),f.step+1}); vis[x][f.y-(x-f.x)] = 1;}//從y倒入x中填滿x
if(f.x < y-f.y && vis[0][f.x+f.y] == 0) { q.push((state){0,f.x+f.y,f.step+1}); vis[0][f.x+f.y] = 1;}//全部x加入y
if(f.y < x-f.x && vis[f.x+f.y][0] == 0) { q.push((state){f.x+f.y,0,f.step+1}); vis[f.x+f.y][0] = 1;}//全部y加入x
}
return -1;
}
int main()
{
scanf("%d%d%d",&x,&y,&z);
int ans = bfs();
if(ans != -1)
{
printf("%d\n",ans);
return 0;
}
printf("impossible\n");
return 0;
}
THE END
By Peacefuldoge
相關推薦
【BFS】CODE[VS] 1226 倒水問題 (BFS+模擬)
這道題主要考察程式碼能力 模擬倒水的過程,結果因為碼力太弱,漏了兩種情況(x和y全倒入一個(x或y)不滿) 然後就沒有然後了 最近超喜歡壓程式碼怎麼破??? 程式碼如下: #i
【BFS】CODE[VS] 2059 逃出克隆島(奴隸島)
魔獸系列題目第一彈 BFS典型例題,遇到傳送門只走一次且將走每一個傳送門的情況都搜一下,碰到終點直接退出輸出結果即可 PS:最近超喜歡壓行!我也不知道為什麼 #include <cstdio> #include <cstring&
【ACM】CODE[VS] 2806(DFS)
感覺有點入了DFS的門檻,距離完全掌握還差得遠呢 AC程式碼:執行時間為7ms #include <iostream> #include <cstdio> #include <cstring> using namespace std; const in
【貪心】CODE[VS] 1063 NOIP2004普及組-合併果子 (刷題記錄(模擬+優先佇列))
日常水題 貪心策略:每次找代價最小的兩對合並,用小根堆來維護,每次合併之後將當前合併結果重新推入佇列,直到合併完成(n-1次) 程式碼如下 #include <cstdio>
【ACM】CODE[VS] 1215 (DFS)
題目描述 Description 在N*N的迷宮內,“#”為牆,“.”為路,“s”為起點,“e”為終點,一共4個方向可以走。從左上角((0,0)“s”)位置處走到右下角((n-1,n-1)“e”)位置處,可以走通則輸出YES,不可以走則輸出NO。 輸入描述 Input
【POJ】1979 Red and Black(BFS)
Red and Black Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 44023 Accepted: 23850 Description There is a
【POJ】1704 Georgia and Bob(Staircase Nim)
row over diff 題目 player 技術分享 需要 ber 排序。 Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on pape
【WC2001】【cogs358】高性能計算機(動態規劃)
結束 輸入輸出 計算機 stdout 所有 主存 時間 span 要花 【WC2001】【cogs358】高性能計算機(動態規劃) ##題面 【問題描述】 現在有一項時間緊迫的工程計算任務要交給你——國家高性能並行計算機的主管工程師——來完成。為了盡可能充分發揮並行計算機的
BZOJ【bzoj1030】[JSOI2007]文本生成器(AC自動機)
我們 acm ane mach () struct int log push 做到了AC自動機的題目,復習了一下AC自動機,學習了黃學長代碼,這個題呢,我們可以模擬在AC自動機上的操作,dp數組f[i][j]表示前i個字符,我們在AC自動機上處在j號節點的方案數。 我們可
【Bsoj2684】鋸木廠選址(斜率優化)
任務 post def sin solution name line () des Description 從山頂上到山底下沿著一條直線種植了n棵老樹。當地的政府決定把他們砍下來。為了不浪費任何一棵木材,樹被砍倒後要運送到鋸木廠。木材只能按照一個方向運輸:朝山下運。山腳下有
【題解】平面最近點對(加強版)
double clas .org ace gpo bits scanf 簡單 name 洛谷P1429 很久以前就見過並想做的一道題…… 但大概是那個時候太蒻竟然一直不敢做呢,想想時間真的過得好快,從寫‘Hello World’到如今,其實也不過是短短的一個學期呀。 這道題
【題解】 bzoj4033: [HAOI2015]樹上染色* (動態規劃)
規劃 math online 4.2 pro php 白色 AD truct bzoj4033,懶得復制,戳我戳我 Solution: 定義狀態\(dp[i][j]\)表示\(i\)號節點為根節點的子樹裏面有\(j\)個黑色節點時最大的貢獻值 然後我們要知道的就是子節點到
【題解】 bzoj1055: [HAOI2008]玩具取名 (動態規劃)
isp haoi2008 name div clas tro 規劃 pac att bzoj1055,懶得復制,戳我戳我 Solution: 區間動規(以後開始動規會在solution前面標註是啥動規 我覺的這道題挺難想了,但其實狀態定義了一下子就出來了(還是不行啊) 我
【HDOJ】find your present (2)(思路題)
利用 自己 names namespace pro ble get nbsp tdi find your present (2) 題意:找有唯一一個出現奇數次的數 思路:利用位異或。一個數異或自己本身是0; #include<stdio.h> int
【轉】在使用實體框架(Entity Framework)的應用中加入審計信息(Audit trail)跟蹤數據的變動
要求 date ted hang ng- tar () eat code 在一些比較重要的業務系統中,通常會要求系統跟蹤數據記錄的變動情況。系統要記錄什麽時間,什麽人,對那些信息進行了變動。 比較簡單的實現方式是在每個表中加入兩個字段CreatedBy和CreatedA
【LOJ6053】簡單的函數(min_25篩)
ios can long ring -s In IV Go else 題面 LOJ 題解 戳這裏 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstr
【PAT】B1042 字符統計(20 分)
lower int har string.h flag char s algorithm printf for /* 15分的題很簡單,但是自己寫的時候在輸入數據時沒有考慮好下標 另外有忘記了輸入字符時考慮是否有\n */ #include<stdio
【PAT】B1029 舊鍵盤(20)(20 分)
如果 names for ++ code ace strlen true 輸入 #include<cstdio> #include<string.h> #include<ctype.h> char str1[81],str2[81]; u
【PAT】B1019 數字黑洞 (20)(20 分)
names space arr urn res pre () amp int #include<stdio.h> #include<algorithm> using namespace std; bool cmp(int a,int b){
【PAT】1015 德才論 (25)(25 分)
clu 包括 準考證 printf 理論 代碼 print spa fin 1015 德才論 (25)(25 分) 宋代史學家司馬光在《資治通鑒》中有一段著名的“德才論”:“是故才德全盡謂之聖人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,茍不得聖人,君