BAPC 2014 Preliminary

題庫鏈接戳這里

A. Choosing Ice Cream

給出n曙痘,k腰耙。即有n種冰淇淋源请,你有一個k面骰子枪芒,問最少搖幾次骰子能公平地決定出選擇。不可公平抉擇出的話輸出"unbounded"巢钓。
如果n=1病苗,那么不必抉擇,直接為0.
否則解應(yīng)該是使得k^(i) mod n 成立的最小i症汹。留意,K范圍10^9贷腕,那么要用long long背镇,否則溢出。因為n也是10^9內(nèi)泽裳,所以解i,最多就是log2(n),即29掘鄙,寫30也可以掌栅,越出這個還沒找到應(yīng)該認(rèn)為無解。

#include <bits/stdc++.h>
using namespace std;

#define ll long long
const int maxN = 1e5 + 5;
ll N, M, K, T;

int main() {
    scanf("%lld", &T);
    while (T--) {
        scanf("%lld %lld", &N, &K);

        if (N == 1) {
            puts("0");
            continue;
        }

        int ans = 0;
        int tk = K;
        K = 1;
        int cnt = 1;
        while (K != 0) {
            K = (K * tk) % N;
            ans += 1;
            if (cnt++ > 30) {
                puts("unbounded");
                break;
            }
        }
        if (cnt <= 30)
            printf("%d\n", ans);
    }
    return 0;
}
B. Failing Components

有一幅圖瀑梗,某些點壞了之后烹笔,經(jīng)一定延遲(邊權(quán))會導(dǎo)致以他為基礎(chǔ)的點的損壞。給出N抛丽,D谤职,C,即點數(shù)亿鲜,邊數(shù)允蜈,初始壞點編號,問這個點會導(dǎo)致多少壞點(包括自己),以及所有點壞了之后饶套,用時多少漩蟆。

建立邊的struct,記錄終點和邊權(quán)妓蛮,再來一個dis爆安,dis[i]表示源點蔓延至i點的最少耗時,初始化為inf仔引。那么能蔓延到的必將非inf扔仓,可更新的時候更新為更小值,這個用bfs完成更新咖耘。最后非inf的個數(shù)和非inf的最大值即為解翘簇。

#include <bits/stdc++.h>
using namespace std;

#define ll long long
const int inf = 0x3f3f3f3f, maxN = 1e5 + 5;
int N, M, K, T, D, C;
int dis[maxN];

struct Edge {
    int to, cost;
    Edge(int a = 0, int b = 0, int c = 0) : 
        to(a), cost(b) {}
};

vector<Edge> E[maxN];

void bfs(int s) {
    queue<int> Q;
    memset(dis, inf, sizeof(dis));
    dis[s] = 0;
    Q.push(s);

    while (!Q.empty()) {
        int t = Q.front();
        Q.pop();
        for (int i = 0; i < E[t].size(); ++i) {
            int nxt = E[t][i].to;
            if (dis[nxt] > dis[t] + E[t][i].cost) {
                dis[nxt] = dis[t] + E[t][i].cost;
                Q.push(nxt);
            }
        }
    }
}

int main() {
    scanf("%d", &T);
    while (T--) {
        scanf("%d%d%d", &N, &D, &C);

        for (int i = 1; i <= N; ++i)
            E[i].clear();
        int u, v, w;
        for (int i = 0; i < D; ++i) {
            scanf("%d%d%d", &u, &v, &w);
            E[v].push_back(Edge(u, w));
        }

        bfs(C);
        int ans1 = 0, ans2 = 0;
        for (int i = 1; i <= N; ++i) {
            if (dis[i] != inf) {
                ++ans1;
                ans2 = max(ans2, dis[i]);
            }
        }
        printf("%d %d\n", ans1, ans2);
    }
    return 0;
}
D. Lift Problems

題意: 有一棟N層([1,N]層)高的樓,一開始有很多人儿倒,認(rèn)為在第0層版保。電梯從0層收完人后開始往上統(tǒng)計憤怒值。先給出每一層樓欲停的人數(shù)夫否。若還沒到自己想到的樓層而提早電梯開門(停)了彻犁,這部分人憤怒值+1。若經(jīng)過自己想停的樓層而沒停凰慈,這部分人憤怒值+1汞幢,而且會在下一次停的時候,即在更高樓層出來微谓,走樓梯回自己的目的地森篷,可以認(rèn)為消失。問:運完所有人豺型,憤怒值最少可以是多少仲智?

一開始想的貪心,其實有漏洞姻氨。原因在于:決策的時候钓辆,判斷的根據(jù)是不完整的。我一開始想肴焊,假設(shè)在b1層有a1人要停前联,下一次停的地方是b2層,有a2人要下抖韩。那么在b1層蛀恩,根據(jù)電梯停與不停,計算出兩種憤怒值茂浮,取小的進(jìn)行貪心決策双谆。關(guān)鍵在于:下一次停的地方未知壳咕,所以思路錯誤。

正確方法是dp顽馋。令dp[i]為在i層停的時候的最小憤怒值谓厘。然后搜索所有直接到達(dá)i層的方式,在這所有方式中寸谜,找憤怒值最小的作為答案即可竟稳。最終答案是dp[N]。
進(jìn)一步解析:第i層停的最小憤怒值熊痴,應(yīng)該是比自己低的樓層j的最小憤怒值加上由于從j直接到i他爸,這之間由于跳過一些樓層產(chǎn)生的 skipAnger,以及果善,比i層高的那些樓層因為在i層停而產(chǎn)生的憤怒值诊笤。

這里有個小地方可以留意:按理說j習(xí)慣從0到i-1掃過去,找dp最小值巾陕,但是每一層都要統(tǒng)計該層到i-1層的skipAnger讨跟,不如從i-1層往前遍歷,skipAnger逐層遞增鄙煤,利用后綴和順暢地去掉了一個for循環(huán)晾匠。

#include <bits/stdc++.h>
using namespace std;

#define ll long long
const int inf = 0x3f3f3f3f, maxN = 2e3 + 5;

int N, M, T;
ll S[maxN], dp[maxN];
// dpi 在第i層停留的最小憤怒值

int main() {
    scanf("%d", &T);
    while (T--) {
        scanf("%d", &N);

        ll sum = 0;
        for (int i = 1; i <= N; ++i) {
            scanf("%lld", &S[i]);
            sum += S[i];
        }

        dp[0] = 0;
        for (int i = 1; i <= N; ++i) {
            sum -= S[i];
            ll skipAnger = 0;
            dp[i] = inf;
            for (int j = i - 1; j >= 0; --j) {
                dp[i] = min(dp[i], dp[j] + skipAnger + sum);
                skipAnger += (i - j) * S[j];
            }
        }
        printf("%lld\n", dp[N]);
    }
    return 0;
}
F.Runway Planning

水題,給一個數(shù)字n梯刚,n/10后的小數(shù)四舍五入后取整凉馆。如果n=0,則改為取18乾巧,記得不足2位補零句喜。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int N, T;

int main() {
    scanf("%d", &T);
    while (T--) {
        scanf("%d", &N);
        N += 5;
        N /= 10;
        N %= 18;
        if (N == 0)
            N = 18;
        printf("%02d\n", N);
    }
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沟于,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌植康,老刑警劉巖旷太,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異销睁,居然都是意外死亡供璧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門冻记,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睡毒,“玉大人,你說我怎么就攤上這事冗栗⊙莨耍” “怎么了供搀?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钠至。 經(jīng)常有香客問我葛虐,道長,這世上最難降的妖魔是什么棉钧? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任屿脐,我火速辦了婚禮,結(jié)果婚禮上宪卿,老公的妹妹穿的比我還像新娘的诵。我一直安慰自己,他們只是感情好佑钾,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布西疤。 她就那樣靜靜地躺著,像睡著了一般次绘。 火紅的嫁衣襯著肌膚如雪瘪阁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天邮偎,我揣著相機與錄音管跺,去河邊找鬼。 笑死禾进,一個胖子當(dāng)著我的面吹牛豁跑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泻云,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼艇拍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宠纯?” 一聲冷哼從身側(cè)響起卸夕,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婆瓜,沒想到半個月后快集,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡廉白,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年个初,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猴蹂。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡院溺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出磅轻,到底是詐尸還是另有隱情珍逸,我是刑警寧澤逐虚,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站弄息,受9級特大地震影響痊班,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜摹量,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一涤伐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缨称,春花似錦凝果、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至当凡,卻和暖如春山害,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沿量。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工浪慌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朴则。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓权纤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乌妒。 傳聞我的和親對象是個殘疾皇子汹想,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359