這次考試後面心態**了。。。發現剛了2h的t2是假的之後就扔掉了,草率地打了個騙分
t1只會搜尋和m=0
最先做的t3,主要是發現部分分很多,當時第一眼看上去有87分(眼瞎了)。
後來想了想,感覺一條鏈不可做,69分
碼出來69分之後去測了一下第二個大樣例,發現跑了2.6s,心態**,預計得分47
出分之後發現把4000的22分拿到了,有69分。
於是成功憑藉t3苟進rk3
t1.是個容斥好題,考場上一直在想如何對點容斥,想到考試結束也沒想出來。
正解是容斥邊。
t2.尤拉迴路
t3.考試時用了0.5h切掉69分,想說一下,和正解思路完全不一樣。
臉哥和正解都是將整體的式子化簡求解,其實這個式子就是樹上任意兩點距離平方之和,因此我們可以考慮每個點對於答案的貢獻。
考慮樹上dp,如何從兒子的答案轉移到父親
我們令al[i]表示子樹中所有點到i的距離之和,ans[i]表示子樹中所有點到i的距離平方之和,siz[i]表示子樹大小,w[i]表示i到父親的距離。
那麼有ans[fa]+=ans[i]+2*al[i]*w[i]+w[i]*w[i]*siz[y]
al[fa]+=al[i]+siz[i]*w[i]
於是我們就可以求出來ans[1],然後我們可以通過上面這個式子進行換根,於是我們可以在o(n)的複雜度內求出解
總複雜度o(nq),常數較大,**實現很簡單。
1 #include2view code#define mod 1000000007
3#define ll long long
4using
namespace
std;
5inline ll read()
12int n,f[100005],fi[100005],to[100005],ne[100005
],tot,sb,q;
13 ll siz[100005],al[100005],fang[100005],ans,ni,w[100005
];14 inline void add(int x,int
y)19
void dfs(int
x)28}29
void dfs2(int
x)39}40
intmain()
56return0;
57 }
正解不會,咕了
考試反思 0818NOIP模擬測試25 清心
兩機房分開考試。拿到了令人orz的a卷。15本校 3外校 18人參加 排名第7,沒前途。大不了去第二機房。skyh209比b卷rank1分數還高。gmk140也很強了。tdcp拿來乙個詭異的101。86,85,79。然後是我垃圾的72。在後面差距也不大。本來就沒幾分 題很好。子任務評測很公正,分數也...
NOIP模擬測試22
自 閉 賽 從這次比賽之後題都好難啊qaq 開考一小時內沒動鍵盤。三道題都不會。gg problem a 數論 過於玄學 列舉質因子,往答案裡去加。用來加入的質因子不會很多,質因子大了對答案是不優的。開兩個vector來回倒騰就完了 這題改完感覺也沒啥,為啥考場上就是想不出來啊qxq 1 inclu...
NOIP模擬測試20
liu runda聚聚的饋贈 problem a 周 防自閉題?這道題讓我整個考試都很愉悅 搜就完事了 1 include 2 3intn 4 int a 20 b 20 c 20 d 20 5 long long ans 67 void dfs int day,long long oi,long ...