2020年9月16日藍橋訓(xùn)練

題目列表:

51Nod 1081 子段求和

題目鏈接:點擊這里

題意:給出一個長度為

N
的數(shù)組外厂,進行
Q
次查詢,查詢從第
i
個元素開始長度為
l
的子段所有元素之和代承。
例如汁蝶,1 3 7 9 -1,查詢第 2 個元素開始長度為 3 的子段和论悴,3 + 7 + 9 = 19掖棉,輸出19。

思路:一維前綴和膀估。

AC代碼:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;
typedef long long ll;

const int N = 50010; 

ll a[N];

int main()
{
    int n;
    scanf("%d", &n);
    
    for(int i = 1; i <= n; i++)
    {
        int x;
        scanf("%d", &x);
        a[i] = a[i - 1] + x;
    }
    
    int q;
    scanf("%d", &q);
    while(q--)
    {
        int l, len;
        scanf("%d%d", &l, &len);
        int r = l + len - 1;
        printf("%lld\n", a[r] - a[l - 1]);
    }
    
    return 0;
}

51Nod 1083 矩陣取數(shù)問題

題目鏈接:點擊這里

題意:一個

N*N
矩陣中有不同的正整數(shù)啊片,經(jīng)過這個格子,就能獲得相應(yīng)價值的獎勵玖像,從左上走到右下紫谷,只能向下向右走,求能夠獲得的最大價值捐寥。

例如:3 * 3 的方格笤昨。
1 3 3
2 1 3
2 2 1
能夠獲得的最大價值為:11。

思路:記憶化搜索握恳。

AC代碼:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;
typedef long long ll;

const int N = 510;

int a[N][N];
int f[N][N];

int dx[] = {1, 0};
int dy[] = {0, 1};

int n;

int dfs(int x, int y)
{
    int &v = f[x][y];
    
    if(v)   return f[x][y];
    
    v = a[x][y];
    
    for(int i = 0; i < 2; ++i)
    {
        int tx = x + dx[i], ty = y + dy[i];
        if(tx >= 1 && tx <= n && ty >= 1 && ty <= n)
        {           
            v = max(v, dfs(tx, ty) + a[x][y]);
        }
    }
    
    return v;   
} 

int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    
    int ans = -1;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            ans = max(ans, dfs(i, j));
        }
    }
    
    printf("%d", ans);
    
    return 0;
}

51Nod 1087 1 10 100 1000

題目鏈接:點擊這里

題意:1,10,100,1000...組成序列1101001000...瞒窒,求這個序列的第N位是0還是1。

思路:預(yù)處理乡洼,把所有

1
出現(xiàn)的位置存起來崇裁。這樣接下來多次詢問時匕坯,可以用
O(1)
的時間查詢到。

AC代碼:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<unordered_set>

using namespace std;
typedef long long ll;

const int N = 510;

unordered_set<int> s;

int main()
{
    int d = 1;
    int t = 1;
    
    while(t <= 1e9) 
    {
        s.insert(t);
        t += d;
        d++;
    }
    
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int x;
        scanf("%d", &x);
        if(s.count(x))  puts("1");
        else    puts("0");
    }
    
    return 0;
}

51Nod 1088 最長回文子串

題目鏈接:點擊這里

題意:輸入一個字符串 Str拔稳,輸出 Str 里最長回文子串的長度葛峻。

回文串:指 aba、abba巴比、cccbccc术奖、aaaa 這種左右對稱的字符串。

串的子串:一個串的子串指此(字符)串中連續(xù)的一部分字符構(gòu)成的子(字符)串
例如 abc 這個串的子串:空串轻绞、a采记、b、c政勃、ab唧龄、bc、abc

思路:動態(tài)規(guī)劃奸远。

AC代碼:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;
typedef long long ll;
const int N = 1010;

char a[N];

int dp[N][N];

int main()
{
    scanf("%s", a);
    int len = strlen(a);
    
    if(len == 0)
    {
        puts("0");
        return 0;
    }
    
    int ans = 1;
    
    for(int i = 0; i < len; i++)
    {
        dp[i][i] = 1;
        if(i + 1 < len)
        {
            if(a[i] == a[i + 1])
            {
                ans = 2;
                dp[i][i + 1] = 1;
            }
        }
    }
    
    for(int L = 2; L <= len; L++)
    {
        for(int i = 0; i + L - 1 < len; i++)
        {
            int j = i + L - 1;
            if(a[i] == a[j] && dp[i + 1][j - 1] == 1)
            {
                dp[i][j] = 1;
                ans = L;
            }
        }
    }
    
    printf("%d\n", ans);
    
    return 0;
}

51Nod 1090 3個數(shù)和為0

題目鏈接:點擊這里

題意:給出一個長度為N的無序數(shù)組选侨,數(shù)組中的元素為整數(shù),有正有負包括0然走,并互不相等。從中找出所有和 = 0的3個數(shù)的組合戏挡。如果沒有這樣的組合芍瑞,輸出No Solution。如果有多個褐墅,按照3個數(shù)中最小的數(shù)從小到大排序拆檬,如果最小的數(shù)相等則按照第二小的數(shù)排序。

思路:雙指針妥凳。

注意:本題數(shù)據(jù)保證了數(shù)組元素互不相等竟贯,降低了難度。

AC代碼:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;
const int N = 1010;

int a[N];

int main()
{
    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; i++)  scanf("%d", &a[i]);
    
    sort(a, a + n);
    bool have_ans = false;
    
    for(int i = 0; i < n; i++)
    {
        int l = i + 1, r = n - 1;
        while(l < r)
        {
            int t = a[l] + a[r];
            if(t == -a[i])
            {
                have_ans = true;
                printf("%d %d %d\n", a[i], a[l], a[r]);
                l++;
                r--; 
            }
            else if(t < -a[i])  l++;
            else    r--;
        }
    }
    
    if(!have_ans)   puts("No Solution");
    
    return 0;
}

51Nod 1082 與7無關(guān)的數(shù)

題目鏈接:點擊這里

題意:一個正整數(shù)逝钥,如果它能被 7 整除屑那,或者它的十進制表示法中某個位數(shù)上的數(shù)字為 7,則稱其為與 7 相關(guān)的數(shù)艘款。求所有小于等于 N 的且與 7 無關(guān)的正整數(shù)的平方和持际。
例如:N = 8,<= 8 與 7 無關(guān)的數(shù)包括:1 2 3 4 5 6 8哗咆,平方和為:155蜘欲。

思路:如題。

注意:由于涉及到多次查詢晌柬,所以姥份,先把小于等于 N 的且與 7 無關(guān)的正整數(shù)找出來郭脂,然后再預(yù)處理出這些正整數(shù)平方和的前綴和。

AC代碼:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<unordered_set>

using namespace std;
typedef long long ll;
const int N = 1e6 + 10;

bool st[N];
ll s[N];

bool judge(int x)
{
    if(x % 7 == 0)  return true;
    while(x)
    {
        if(x % 10 == 7) return true;
        x /= 10;
    }
    return false;
}

int main()
{
    for(int i = 1; i <= N; i++)
        if(judge(i))
            st[i] = true;
    
    ll t = 0;
    for(int i = 1; i <= N; i++)
    {
        if(st[i] == false)
            t += (ll)i * i;
        s[i] = t;
    }
    
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int x;
        scanf("%d", &x);
        printf("%lld\n", s[x]);
    }
    
    return 0;
}

51Nod 1267 4個數(shù)和為0

題目鏈接:點擊這里

題意:給出 N 個整數(shù)澈歉,你來判斷一下是否能夠選出 4 個數(shù)展鸡,他們的和為 0,可以則輸出"Yes"闷祥,否則輸出"No"娱颊。

思路:雙指針。

AC代碼:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 1010;

int a[N];

int main()
{
    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; i++)  scanf("%d", &a[i]);
    
    sort(a, a + n);
    
    bool have_ans = false;
    
    for(int i = 0; i < n; i++)
    {
        for(int j = i + 1; j < n; j++)
        {
            int l = j + 1, r = n - 1;
            while(l < r)
            {
                int t = a[l] + a[r];
                
                if(t < -a[i]-a[j])  l++;
                else if(t > -a[i]-a[j]) r--;
                else
                {
                    have_ans = true;
                    break;
                }
            }
            if(have_ans)    break;
        }
        if(have_ans)    break;
    }
    
    if(have_ans)    puts("Yes");
    else    puts("No");
    
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凯砍,一起剝皮案震驚了整個濱河市箱硕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悟衩,老刑警劉巖剧罩,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異座泳,居然都是意外死亡惠昔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門挑势,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镇防,“玉大人,你說我怎么就攤上這事潮饱±囱酰” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵香拉,是天一觀的道長啦扬。 經(jīng)常有香客問我,道長凫碌,這世上最難降的妖魔是什么扑毡? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮盛险,結(jié)果婚禮上瞄摊,老公的妹妹穿的比我還像新娘。我一直安慰自己苦掘,他們只是感情好泉褐,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸟蜡,像睡著了一般膜赃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上揉忘,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天跳座,我揣著相機與錄音端铛,去河邊找鬼。 笑死疲眷,一個胖子當著我的面吹牛禾蚕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狂丝,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼换淆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了几颜?” 一聲冷哼從身側(cè)響起倍试,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛋哭,沒想到半個月后县习,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谆趾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年躁愿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沪蓬。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡彤钟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出跷叉,到底是詐尸還是另有隱情逸雹,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布性芬,位于F島的核電站,受9級特大地震影響剧防,放射性物質(zhì)發(fā)生泄漏植锉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一峭拘、第九天 我趴在偏房一處隱蔽的房頂上張望俊庇。 院中可真熱鬧,春花似錦鸡挠、人聲如沸辉饱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彭沼。三九已至,卻和暖如春备埃,著一層夾襖步出監(jiān)牢的瞬間姓惑,已是汗流浹背褐奴。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留于毙,地道東北人敦冬。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像唯沮,于是被迫代替她去往敵國和親脖旱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348