今天的生哥hu測,都是思路題,**不長,對於思維的提公升很有幫助
可惜沒有全力去做。。。
分析:
不用sg函式的一道博弈
覺得xz的想法非常的好
如果我們想要留下乙個點的權值(假設為x)
當且僅當這個點只有一條連邊,這是我們就可以把這條邊練連的其他點乾掉
遊戲結束,如果我們不是在這種情況下進行了與x相連的邊的刪減
這就會導致這個點的主動權到了另乙個人手裡
因為兩人的目的完全不同,所以對手一定會刪掉x來逼近目的
所以先手乾脆在葉子上操作,一步結束遊戲
生哥的解釋更為科學一些:
假設說我們有一棵樹是這樣的:
葉子節點的找法 son[x]=0
如果根節點(1)只有乙個兒子,那ta也算是一種葉子結點
這裡寫**片
#include
#include
#include
using
namespace
std;
const
int n=501;
int n;
struct node;
node way[n<<1];
int v[n];
int st[n],tot=0;
int son[n];
void add(int u,int w)
void dfs(int x,int fa,int dep)
int main()
int ans=0;
dfs(1,0,1);
for (int j=1;j<=n;j++)
if (son[j]==0)
ans=max(ans,v[j]); //葉子節點中的最大值
分析:
好幾個人表示是貪心
記得ta爺說過:貪心千萬不要證明,證明不出來的
生哥:這個貪心你最好要證明一下
…在環上的走法,很明顯只有3種
如果走法3用了兩次
假設第一次我們在左半邊分發a個,右半邊分發b個
第二次我們在右半邊分發c個,右半邊分發d個
則左半部分a+c,右半部分b+d
這就導致有一部分是<=k
(因為a+b+c+d=2*k)
那我們還不如帶足了k個只分給半邊,這樣的花費一定 <= 轉兩圈
所以3
操作只能使用一次
同時顯然,在轉一圈的過程中,我們盡量給距離0遠的點分發
這樣我們分發的一定是乙個序列
這樣我們就可以列舉3操作時分發的區間
剩下的區間可以貪心求處答案
統計乙個最小值就可以了
我們把乙個環通過0拆成一條直線
f[i]表示發到i的最小花費
分析:
二分答案
二分是乙個很神奇的操作
就相當於是乙個水平線
把所有數字分成了大於ta和小於ta兩部分
我們把這兩部分用01編號
這樣原序列就變成了乙個01序列
接下來就可以dp了
f[i][j]表示第i位是j需要多少1
三位三位的轉移
生哥的hu測
今天的生哥hu測,都是思路題,不長,對於思維的提公升很有幫助 可惜沒有全力去做。分析 不用sg函式的一道博弈 覺得xz的想法非常的好 如果我們想要留下乙個點的權值 假設為x 當且僅當這個點只有一條連邊,這是我們就可以把這條邊練連的其他點乾掉 遊戲結束,如果我們不是在這種情況下進行了與x相連的邊的刪減...
關於HU的時間理論
1.我們無法回到過去的時間 2.我們能夠前往未來 3.過去和現在,未來有一定的聯絡,我們可以通過該聯絡,將過去的事件,在現在對映出來,即可以重現過去,但無法回到過去,也就是無法改變過去的事情。4.無法對映未來的事情即無法 未來。5.時間與空間有關,對映過去或者是去到未來,就得從空間下手,宇宙分為兩面...
三生有幸 認識西褲哥和小偉哥
感覺自己很幸運,同時認識了西褲哥和小偉哥。他們給我的感覺是不但技術過硬,而且為人謙虛,樂於助人。對我這個菜鳥來說,對他們兩個只能望其項背。慢慢的他們就成了我的崇拜偶像,很喜歡問他們一些問題。也很喜歡聽他們講一些東西,但是這樣的機會太少了,自己懂的也小。每當這個時候我就感覺到大學四年虛度時光帶來的負罪...