03.10訓練賽題解與心得(最近松懈+浮躁=爆零)

最近腦子抽的厲害贱鄙,東學一點劝贸,西補一點,著急+浮躁+粗心=爆零啊逗宁。

A - Question 1

SPOJ - SERGRID
這就道BFS模板題映九,沒啥好說的,清醒后一發(fā)過瞎颗。件甥。。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <queue>
#include <iostream>
using namespace std;
#define LL long long
#define MAXN 505
#define CLR(x) memset(x, 0, sizeof(x))
char ss[MAXN][MAXN];
int land[MAXN][MAXN];
bool vis[MAXN][MAXN];
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
int n, m;

struct node{
    int x, y;
    int step;
};

int BFS()
{
    queue <node> q;
    node now;
    now.x = 0; now.y = 0; now.step = 0;
    q.push(now);
    memset(vis, false, sizeof(vis));
    vis[now.x][now.y] = true;
    while(!q.empty())
    {
        now = q.front();
        q.pop();
        if (now.x == n-1 && now.y == m-1) return now.step;
        int r, c;
        for (int i = 0; i < 4; i++)
        {
            int cnt = land[now.x][now.y];/*可以跳躍的步數(shù)*/
            r = now.x + cnt*dx[i];
            c = now.y + cnt*dy[i];
            if (r<n && r>=0 && c<m && c>=0 && !vis[r][c])
            {
                vis[r][c] = true;
                node next;
                next.x = r;
                next.y = c;
                next.step = now.step + 1;
                q.push(next);
            }
        }
    }
    return -1;
}

int main()
{
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
    {
        getchar();
        for (int j = 0; j < m; j++)
        {
            scanf("%c", &ss[i][j]);
            land[i][j] = ss[i][j] - '0'; //注意數(shù)字是連續(xù)輸入的哼拔,要處理一下
        }
    }
    int res = BFS();
    printf("%d", res);
    return 0;
}

B - Question 2

SPOJ - IAPCR2F **
這題引有。。并查集模板題倦逐,當時腦抽譬正,寫了一個while,沒跳出死循環(huán)檬姥,然后累加數(shù)據(jù)的時候出錯了曾我,隊友講題的時候,還大言不慚說找不出錯健民。抒巢。。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
#define LL long long
#define MAXN 1005
#define CLR(x) memset(x, 0, sizeof(x))

int pre[MAXN], a[MAXN], res[MAXN];

int cmp(int x, int y)
{
    return x > y;
}

int Find(int x)
{
    return pre[x]==x ? pre[x] : Find(pre[x]);
}

void Uion(int x, int y)
{
    int xx = Find(x), yy = Find(y);
    if (xx != yy)
    {
        pre[xx] = yy;
        //a[yy] += a[xx]; 為啥不在這累加秉犹,手推一下就知道了
    }
}

int main()
{
    int t;
    scanf("%d", &t);
    int k = 1;
    while(t--)
    {
        CLR(res);
        CLR(a);
        int n, m;
        scanf("%d%d", &n, &m);
        for (int i = 0; i <= n; i++)
            pre[i] = i;
        for (int i = 1; i <= n; i++)
            scanf("%d", &a[i]);
        int u, v;
        for (int i = 0; i < m; i++)
        {
            scanf("%d %d", &u, &v);
            Uion(u, v);
        }
        int cnt = 0;
        for (int i = 1; i <= n; i++)
        {
            if (pre[i]==i) cnt++;  //原本寫了一個while虐秦。。無明確跳出凤优,死循環(huán)悦陋,第一題就一直TLE,心態(tài)炸啊
            res[Find(i)] += a[i];
        }
        sort(res+1, res+n+1, cmp);
        if (n==1)
        {
            printf("Case %d: 1\n", k++);
            printf("%d\n", a[1]);
            continue;
        }
        printf("Case %d: %d\n", k++, cnt);
        for (int i = cnt; i >= 1; i--)
        {
            if (i == 1) printf("%d\n", res[1]);
            else printf("%d ", res[i]);
        }
    }
    return 0;
}

C - Question 3

SPOJ - VECTAR1
這題是個矩陣異或筑辨。俺驶。。記住vis矩陣要開對大小,不然一定會wa

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <queue>
#include <iostream>
using namespace std;
#define LL long long
#define MAXN 1005
#define mod 1000000007
#define CLR(x) memset(x, 0, sizeof(x))

int vis[1000000]; //筆者直接開了1000^2
LL maxx;

void BuildMart(int n, int m)
{
    CLR(vis);
    //CLR(mat);
    maxx = -1;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
        {
            vis[i^j]++;
            maxx = max(maxx, (LL)i^j);
        }
    //return maxx;
}

LL JieCeng(LL n)
{
    LL ans = 1;
    for (int i = 2; i <= n; i++)
    {
        ans *= i;
        ans %= mod;
    }
    return ans;
}

int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        int n, m;
        scanf("%d%d", &n, &m);
        BuildMart(n, m);
        LL res = 1;
        for (int i = 0; i <= maxx; i++)
        {
            if (vis[i])
            {
                res *= JieCeng((LL)vis[i]);
                res %= mod;
            }
        }
        printf("%lld\n", res);
    }
}

D - Question 4

CodeForces - 779B
最簡單的一題暮现,筆者理解錯意思了还绘,WA在test20,8發(fā)栖袋,心態(tài)崩了拍顷,后來在code forces上測數(shù)據(jù)才明白搞錯意思了
筆者 想復雜了,以為要各種分類討論塘幅。昔案。。最近腦子抽电媳。踏揣。。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
#define LL long long
#define MAXN 1005
#define CLR(x) memset(x, 0, sizeof(x))
char str[15];
int x;
int main()
{
    scanf("%s %d", str, &x);
    int len = strlen(str);
    int zero = 0, fz = 0;
    for (int i = len-1; i >= 0; i--)
    {
        if (str[i] == '0') zero++;
        else fz++;
        if (zero == x) break;
    }
    if (zero == x) printf("%d", fz); //如果可以整除匾乓,輸出需要去除的數(shù)的個數(shù)
    else printf("%d", len-1); //否則直接輸出長度減一

    return 0;
}

E - Question 5

CodeForces - 779C
E題其實就是貪心捞稿。。拼缝。然后娱局,補題的時候理解錯題意,數(shù)值一直不對咧七,要不就是wa铃辖,后來的紙上推了一遍,發(fā)現(xiàn)猪叙。娇斩。。又想多了穴翩。犬第。∶⑴粒或者說忘了自己排過序了歉嗓。。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
#define LL long long
#define mod 1000000007
#define CLR(x) memset(x, 0, sizeof(x))
int n ,m ;
struct node{
    int now, next;
    int d;
}prc[200005];

int cmp(node x, node y)
{
    //if (x.d == y.d) return x.now < y.now;
    return x.d > y.d;
}


int main()
{
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
        scanf("%d", &prc[i].now);
    int cnt = 0;
    for (int i = 0; i < n; i++)
    {
         scanf("%d", &prc[i].next);
         prc[i].d = prc[i].next - prc[i].now;
         if (prc[i].d > 0) cnt++; //這周買合算
    }
    sort(prc, prc+n, cmp); //由這周買最合算到最不合算

    LL ans = 0;
    for (int i = 0; i < n; i++)
    {
        if (prc[i].d > 0)//排過序背蟆,前頭的肯定是最合算
        {
            ans += prc[i].now;
            m--;
        }
        else//本周買最合算的買完后
        {
            if (m > 0) //本周還需買m-cnt個商品
            {
                ans += prc[i].now;
                m--;
            }
            else //下周買
                ans += prc[i].next;
        }
    }
    printf("%I64d", ans);
}

最近真的太急功近利了鉴分,該緩緩,好好補缺補漏带膀,打好基礎才能走的更遠V菊洹!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垛叨,一起剝皮案震驚了整個濱河市伦糯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖敛纲,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喂击,死亡現(xiàn)場離奇詭異,居然都是意外死亡淤翔,警方通過查閱死者的電腦和手機翰绊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旁壮,“玉大人监嗜,你說我怎么就攤上這事」丫撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵稚补,是天一觀的道長童叠。 經(jīng)常有香客問我,道長课幕,這世上最難降的妖魔是什么厦坛? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮乍惊,結(jié)果婚禮上杜秸,老公的妹妹穿的比我還像新娘。我一直安慰自己润绎,他們只是感情好撬碟,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莉撇,像睡著了一般呢蛤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棍郎,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天其障,我揣著相機與錄音,去河邊找鬼涂佃。 笑死励翼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的辜荠。 我是一名探鬼主播汽抚,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伯病!你這毒婦竟也來了殊橙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膨蛮,沒想到半個月后叠纹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡敞葛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年誉察,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惹谐。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡持偏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氨肌,到底是詐尸還是另有隱情鸿秆,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布怎囚,位于F島的核電站卿叽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏恳守。R本人自食惡果不足惜考婴,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望催烘。 院中可真熱鬧沥阱,春花似錦、人聲如沸伊群。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舰始。三九已至奔则,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔽午,已是汗流浹背易茬。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留及老,地道東北人抽莱。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像骄恶,于是被迫代替她去往敵國和親食铐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 如果你說太長看不完僧鲁,就對了虐呻,這是一周的讀書內(nèi)容象泵,每天十分鐘,五天看完很輕松斟叼! 目錄 《精要主義》-精讀 Day 1...
    超姐666閱讀 2,061評論 0 13
  • 2046 文/王三歲 “ 那么偶惠,再見了±噬”墨涵輕聲說著忽孽,按下了啟動鍵。實驗室里的譚小優(yōu)隔著頭罩驚恐地看著墨涵谢床,她聽...
    大故事家閱讀 478評論 0 2
  • 你也知道识腿,我以前每天都會看到許許多多的酒客出革。 他們,有西裝平整而領帶搭肩的渡讼;有打扮精致而眼著淚痕的骂束;有衣衫破舊而執(zhí)...
    豐山心閱讀 454評論 0 1
  • 杜甫先生有一句廣為人知的詩句:“安得廣廈千萬間,大庇天下寒士俱歡顏硝全,風雨不動安如山栖雾±懵眨”——詩中的廣廈既是他的美好理...
    古董碎片閱讀 434評論 2 6