qwq
只有爆零的我發出反獄的絕叫
其實250 pts
大模擬qwq
#include #include #include #include using namespace std;
const int maxn = 100010;
struct proc
};int n, ti, q, now;
string na;
std::queueque;
int main()
while(!que.empty())
else
}return 0;
}
原題 字首單詞
考場上花了乙個小時寫t1和t3,然後剩下三個小時都在搞t2。
寫了乙個正確性完全沒有的dp,然後竟然得了50 pts。賽後找題解,發現sort
一下就可以過。求解答。
然而其實是在trie樹上遞推一下。
考慮先建trie。樹上有直系關係的點不可以同時選。設\(f[i]\)為當前點及其子樹的方案數(當然子樹之間是可以隨便選的嘛)。所以\(f[i]\)初值為1,\(f[i] = f[i] * \prod\limits_ f[j]\)。在最後別忘了當前點若為字元結尾的話,方案數要加1。
在trie上跑好像會多跑一點路,但是對正確性沒有影響。
#include #include typedef long long ll;
const int maxl = 2510;
int n, top;
char ss[60][60];
bool map[60][60];
ll ans, f[maxl];
struct trietrie[maxl];
inline void insert(char* str)
trie[now].exist = true;
return ;
}inline void dfs(int now)
f[now] += trie[now].exist;
return ;
}int main()
原題 道路修建
考慮先以某個點(任意點)為根跑dfs,記錄子樹大小\(size\)和它的深度\(dep\)。
存邊,對每條邊統計答案。設u為邊兩端點中較淺的,v為較深的一點。這時\(n~-~size[v]\)為u一側的城市個數,\(size[v]\)為v一側的城市個數,統計\(ans += abs(n - size[v] - size[v]) * w\)即可。
#include #include #include typedef long long ll;
const int maxn = 1000010;
const int n = 10000;
struct edge edge[maxn << 1];
struct enode node[maxn];
int n, top, dep[maxn], size[maxn], u, v, w, head[maxn];
ll ans;
char buf[n], *p = buf, *end = buf;
inline char get_char()
return *(p++);
}inline void get_int(int &x)
while(isdigit(c = get_char()));
return ;
}inline void add_edge(int u, int v)
inline void dfs(int now, int fa)
return ;
}int main()
dfs(1, 1);
ll tmp(0);
for (int i = 1; i < n; ++i)
printf("%lld\n", ans);
return 0;
}
校內八連測 第一試
這場比賽。t1 給出乙個長度為n的序列,將序列分成若干段,使得每一段都為不公升或者不降的序列。求所分成最小的段數。直接上貪心好吧。好無聊這道題。t2 乙個長度為n的序列,一開始為1,2,3 n,有兩種操作。保證n為偶數 1 x是將整個序列都往右移x距離。比如1 2 就把1 2 3 4 5 6 變成5...
機試準備(二)
1.判斷是否為閏年 bool isreap int year 2.進製轉換 其他進製轉換為十進位制的時候可以使用while 當用十進位制轉換為其他進製的時候需要使用do while3.回文串 bool judge char str 或者用另一種方式,但是需要注意加上末尾結束符 0 page975.選...
ZJOI2018二試遊記
zjoi2018果然比hnoi2018 本菜雞騙了200,分數上肯定比zjoi多 良心多了,一試和二試都是,每次都有幾天聽課。重點是 zjoi有飯吃!上午從學校出發,坐了4個小時來到yy,中午自己解決,晚飯在yyzx的食堂吃了幾個月來最 的飯菜 綠豆湯裡有生的綠豆?想到明天要聽課,於是晚上逛了逛知乎...