11 1NOIP模擬賽解題報告

2022-04-30 01:18:12 字數 2824 閱讀 9830

預計得分:\(100 + 100 + 50\)

實際得分:\(100 + 100 + 50\)

感覺老師找的題有點水呀。

上來看t1,woc?裸的等比數列求和?然而我不會公式呀。。感覺要涼

t2應該比較簡單,t3 dp能拿很多部分分。

但是t1只打暴力感覺好丟人啊。。想了10min發現不用公式也能做,就直接倍增一下就好了。

t2水題。感覺比t1還簡單。。

t3。。。。。這個就比較厲害了呀。賽後我大概問了一下,發現全機房一共讀出了\(4\)種題意orzzz。

然後我花了\(2h\)做了一道水題。。然後發現錯誤的時候考試馬上就結束了,然後只能打個暴力走人。。。

orz zbq現場推出等比數列求和公式

orz 好像除了我都會等比數列求和公式

orzzzzzzzzzzzzzzzzz

#include#include#include#include#include#include#includeusing namespace std;

const int maxn =1e5 + 10, mod = 1e9 + 7;

inline int read()

while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}int add(int x, int y)

int mul(int x, int y)

int fp(int a, int p)

return base;

}int n, m, pok[maxn], g[maxn];

int solve(int k, int n)

main()

cout << ans;

return 0;

}

\(ans = all - min(sum[i])\)

all表示所有邊權和

\(sum[i]\)表示第\(i\)個節點到根的路徑

#include#include#include#include#include#include#include#define pair pair#define mp make_pair

#define fi first

#define se second

using namespace std;

const int maxn = 1e5 + 10, inf = 1e9 + 7;

inline int read()

while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}int n, sum[maxn], all;

vectorv[maxn];

void dfs(int x, int fa)

}int main()

dfs(1, 0);

all <<= 1;

int ans = inf;

for(int i = 1; i <= n; i++) ans = min(ans, all - sum[i]);

cout << ans;

return 0;

}

神仙閱讀理解題,不過還是挺interesting的

首先,序列內的元素是無序的,這樣我們可以對相同的數字一起考慮

稍微想一下不難發現,幸運數字最多有\(2^9\)個

直接\(f[i][j]\)表示前\(i\)個數,選\(j\)的方案,dp一下

最後合併答案的時候揹包一下

#include#include#include#include#include#include#include#include#include#define pair pair#define mp make_pair

#define fi first

#define se second

//#define int long long

using namespace std;

const int maxn = 1e5 + 10, mod = 1e9 + 7;

inline int read()

while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}int n, k, a[maxn], tot, cnt, fac[maxn], ifac[maxn];

mapmp;

int add(int &x, int y)

int add2(int x, int y)

int mul(int x, int y)

int fp(int a, int p)

return base;

}int c(int n, int m)

int get(int x)

return 1;

}mapid;

int rev[maxn], f[2333][2333];

signed main() else tot++;

} f[0][0] = 1;

for(int i = 1; i <= cnt; i++)

int ans = 0;

for(int i = 0; i <= cnt; i++) add(ans, mul(f[cnt][i], c(tot, k - i)));

cout << ans;

return 0;

}

11 5NOIP模擬賽解題報告

預計得分 100 40 30 170 實際得分 100 100 50 250 辣雞資料毀我青春 t1一眼不會做感覺要涼 t2好像一波折半搜尋就做完了 t3好像是神仙題不會做。打完t1暴力後去淦t2,結果最後在排序的時候把greater 寫成了greater 不過感謝辣雞資料放我一條活路。手玩了一下t...

11 5NOIP模擬賽解題報告

預計得分 100 40 30 170 實際得分 100 100 50 250 辣雞資料毀我青春 t1一眼不會做感覺要涼 t2好像一波折半搜尋就做完了 t3好像是神仙題不會做。打完t1暴力後去淦t2,結果最後在排序的時候把greater 寫成了greater 不過感謝辣雞資料放我一條活路。手玩了一下t...

2018 7 21NOIP模擬賽?解題報告

題面 預計得分 70 60 30 160 實際得分 40 60 0 100 t1陣列開小了 t2比賽結束後5min ac t3加了個記憶話搜尋wa了 zbq吊打std啊orz 此題 o nlog 做法 乙個很顯然的思路 對每個做括號維護乙個大根堆,每次取最大的。但是這樣有不優的情況,比如 1,3,5...