乙個題目的可讀版本:
這兩天做的又一道大模擬題,感覺這玩意有毒,會上癮啊……
比起豬國殺這道題真心不知道高到**去了,當然,我只是說題目。具體難度說句實在地,真覺得比豬國殺要容易一些。
先說一下時間線:
第一天下午:打完豬國殺,立志殺螞蟻。
第二天下午:3:00 開搞,讀題,掃雷。
3:30 正式打碼。
5:20 **完成,開始除錯。
6:00 解決肚子問題
6:25 回來繼續搞
6:31 ac!!
比起豬國殺那長征般的的歷程,不得不去說殺螞蟻要簡單太多太多了。至少從**長度就可以看出來。
先說一些坑點:
1.剛出生的螞蟻年齡是0。
2.行動方式變化的螞蟻(年齡+1)%5==0而不是年齡%5=0。
3.對於一些較複雜的求螞蟻與塔之間的連線的解析式的方法可能會被卡精度,再次感謝原子核教我的解方程式打法避免被卡精度。
4.大視野上的注釋有誤。
5.螞蟻死了之後他原來位置上記得標記為無螞蟻。
還是那句話,比豬國殺強多了。
然後,我們只要按照題目中給出的「一秒鐘發生的事」的順序打出對應函式就好了,畢竟只是模擬題,只要不太浪,單純的模擬是不會t掉的。
#include #include #include #include #include #include #include #define n 200004using namespace std;
int n,m,s,d,r,t,js,zz,target,zy[5][2];
struct tow
tower[50];
struct an
ant[n];
struct ma
map[10][10];
int pre[n],fro[n];
void print(int x)
void born()
}void stay_information()
}bool check(int x,int y)
void move_an_ant(int aa)
if(to==la)
}} map[x][y].ant=0;
ant[aa].lx=ant[aa].x,ant[aa].ly=ant[aa].y;
ant[aa].x+=zy[to][0],ant[aa].y+=zy[to][1];
if(ant[aa].x==n&&ant[aa].y==m&&!target)
map[ant[aa].x][ant[aa].y].ant=1;
}void move_ants()
}int if_attack(int aa,int bb)
void attack_ants()
if(fabs(ant[now].x*a+ant[now].y*b+c)*fm<=0.50) ant[now].hp-=d;
now=fro[now];
} }}void find_death()
now=fro[now]; }}
void come_to_end(bool human,int ti)
}void clean_map()
} int now=fro[0];
while(now) }
int main()
scanf("%d",&t);
zy[1][0]=0,zy[1][1]=1;
zy[2][0]=1,zy[2][1]=0;
zy[3][0]=0,zy[3][1]=-1;
zy[4][0]=-1,zy[4][1]=0;
for(int i=1;i<=t;i++)
clean_map();
} come_to_end(1,0);
return 0;
}
ZJOI2008 殺螞蟻 BZOJ上未過
dark模擬題。計算幾何一片空白判線段和圓是否相交來來回回改了五六次,也寫得很長 還有一部分原因是碼風問題233 提交記錄非常鬼畜 先在codevs上wa40,把inline全部去掉就ac了 再到洛谷上還是wa40,把o2關掉變成80,陣列開大點就ac了。但是bzoj上還是wa。如果哪位大佬幫我看出...
ZJOI2008 騎士 題解
題面 這道題稍微想一想就會聯想到樹形dp的入門題 沒有上司的舞會 但是再想一想會發現這根本就不是一顆樹,因為它比樹多了一條邊 這時候我們引入乙個新的概念 基環樹 顧名思義 基環樹就是在一顆樹上填一條邊構成的乙個圖 基環樹也叫環套樹 明明更像樹套環 我們在樹上可以做的事情基本都可以在基環樹上實現 比如...
ZJOI 2008 樹的統計
一棵樹上有n個節點,編號分別為1到n,每個節點都有乙個權值w。我們將以下面的形式來要求你對這棵樹完成一些操作 i.change u t 把結點u的權值改為t ii.qmax u v 詢問從點u到點v的路徑上的節點的最大權值 iii.qsum u v 詢問從點u到點v的路徑上的節點的權值和 注意 從點...