国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

山東大學計算機科學與技術(shù)學院程序設計思維與實踐作業(yè) week8-圖和樹的性質(zhì)與應用(下)

這篇具有很好參考價值的文章主要介紹了山東大學計算機科學與技術(shù)學院程序設計思維與實踐作業(yè) week8-圖和樹的性質(zhì)與應用(下)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

山東大學計算機科學與技術(shù)學院程序設計思維與實踐作業(yè)
山大程序設計思維與實踐作業(yè)
sdu程序設計思維與實踐
山東大學程序設計思維實踐作業(yè)H8
山大程序設計思維實踐作業(yè)H8
山東大學程序設計思維與實踐
week8-圖和樹的性質(zhì)與應用(下)

相關(guān)資料:GitHub

A : 元音回文

問題描述
現(xiàn)在有一個長度為 n 的字符串,都有小寫字母組成。
現(xiàn)在所有元音字母都可以看作相同的字符
輸出最長回文子串的長度

一個與自身的逆序相同的字符串即為回文串
比如 aba,aabbaa,asdffdsa 都為回文串

輸入格式
第一行一個整數(shù) n , 1≤n≤5000,表示字符串長度
接下來一行表示字符串

輸出格式
輸出一行,一個數(shù),代表答案

樣例輸入
10
aeioubaeio
樣例輸出
9

#include<bits/stdc++.h>
using namespace std;
string str;
int expandAroundCenter(string s, int zuo, int you) {
    while (zuo >= 0 && you < s.length() && s[zuo] == s[you]) {
        --zuo;
        ++you;
    }
    return you - zuo - 1;
}
int main()
{
    int n;
    cin>>n;
    if(n==1) {
        cout<<1;
        return 0;
    }
    char c;
    for (int i = 0; i <n ; ++i) {
        cin>>c;
        if(c=='e'||c=='i'||c=='o'||c=='u')
            c='a';
        str+=c;
    }

    int start = 0, end = 0;
    int res=0;
    for (int i = 0; i < str.length(); i++) {
        int len1 = expandAroundCenter(str, i, i);
        int len2 = expandAroundCenter(str, i, i + 1);
        int len = max(len1, len2);
        if (len >res) {
            res=len;
        }
    }
    cout<<res;
    return 0;

}

B : 模測成績單

問題描述
模測結(jié)束了,小 L 拿到了一些形如 A 比 B 得分高 的信息,現(xiàn)在小 L 想要輸出一份成績排名表,使得排名表滿足得到的信息,并且學號小的盡可能排在前面。

輸入格式
第一行有兩個整數(shù),n,m 表示有 n 個同學,第 i 個同學學號為 i ,有 m 條信息。
接下來有 m 行,每行有兩個整數(shù) A,B ,表示學號為 A 的同學得分比學號為 B 的同學得分高。
1≤n,m≤10
6

1≤A,B≤n
數(shù)據(jù)保證有解

輸出格式
輸出一行 n 個數(shù),表示按照學號給出的排名。

樣例輸入
5 3
4 5
2 3
1 5
樣例輸出
1 2 3 4 5

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int n, m;
int A, B;
int nd_before[1000100] = { 0 };
vector<int> eage[1000100];

int main() {
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        cin >> A >> B;
        nd_before[B] ++;
        eage[A].push_back(B);
    }
    priority_queue<int, vector<int>, greater<int> > q;
    for (int i = 1; i <= n; i++) {
        if (nd_before[i] == 0)
            q.push(i);
    }
    vector<int> result;
    while (!q.empty()) {
        int tempu = q.top();
        q.pop();
        result.push_back(tempu);
        for (int i = 0; i < eage[tempu].size(); i++) {
            if (--nd_before[eage[tempu][i]] == 0)
                q.push(eage[tempu][i]);
        }
    }
    for (int i = 0; i < n; i++) {
        cout << result[i] <<" ";
    }
    return 0;
}

C : 種酸奶

問題描述
小 L 喜歡喝酸奶,春天來了,小 L 想把酸奶種在地里,等到來年春暖花開,就能長出好多好多酸奶了
有 n 個坑,小 L 給坑都編上號,從 1 號到 n 號,每個坑最多種一瓶酸奶。
但是有一些限制形如 k,a,b,c 。
若 k 等于 1 ,則第 a 號坑到第 b 號坑最多種 c 瓶酸奶。
若 k 等于 2 ,則第 a 號坑到第 b 號坑最少種 c 瓶酸奶。
若 k 等于 3 ,則第 a 號坑到第 b 號坑必須種少于 c 瓶酸奶。
若 k 等于 4 ,則第 a 號坑到第 b 號坑必須種多于 c 瓶酸奶。
若 k 等于 5 ,則第 a 號坑到第 b 號坑必須種等于 c 瓶酸奶。

問小 L 最多種多少瓶酸奶

輸入格式
第一行兩個整數(shù) n,m ,表示有 n 個坑,有 m 條限制。
1≤n,m≤1000
接下來 m 行,每行四個整數(shù) k,a,b,c
1≤k≤5 , 1≤a≤b≤n , ∣c∣<=2000

輸出格式
輸出一行,若有解則輸出一個整數(shù),表示答案
否則輸出 impossible

樣例輸入
5 5
1 1 4 4
2 2 5 1
3 2 4 2
4 1 5 2
5 1 3 2
樣例輸出
3

#include <bits/stdc++.h>
using namespace std;
const int maximumm= 1e7;
const int maximumn= 1e7;
const int INF = 1e8;
int n,m;
int dist[maximumn];
int mis[maximumn];
struct EdgeData{
    int m;
    int n;
    int next;
}E[maximumm];

int head[maximumn],total;

void init()
{
    for(int i=0;i<=n;i++)
    head[i] = -1;
    total=0;
}

void addEdge(int u,int m,int n)
{
    E[total].m = m;
    E[total].n = n;
    E[total].next = head[u];
    head[u] = total;
    total++;
}

int cnt[maximumn];//記錄從源點到i最短路所走的邊數(shù)
bool Spfa(int s)
{
    for(int i =0;i<=n;i++)dist[i] = INF,mis[i] = 0,cnt[i] = 0;
    queue<int> q;
    dist[s] = 0;
    q.push(s);
    mis[s]=1;//表示當前節(jié)點是否在隊列中

    while(!q.empty())
    {
        int u = q.front();
        q.pop();
        mis[u] = 0;
        //u點出了隊列,那么一個點就可以多次入隊

        for(int i = head[u];i!=-1;i =E[i].next)
        {
            int m = E[i].m;
            int t = E[i].n;
            if(dist[m]>dist[u]+t)
            {
                dist[m] = dist[u]+t;
                cnt[m] = cnt[u]+1;
                if(cnt[m]>=n)
                return false;
                if(!mis[m])
                q.push(m);
            }
        }
    }
    return true;
}

int main()
{
    cin>>n>>m;
    init();
    for(int i = 1;i<=m;i++)
    {
        int k,a,b,c;
        cin>>k>>a>>b>>c;
        a=a-1;
        if(k==1)
            addEdge(a,b,c);
        if(k==2)
            addEdge(b,a,-c);
        if(k==3)
            addEdge(a,b,c-1);
        if(k==4)
            addEdge(b,a,-c-1);
        if(k==5)
        {
            addEdge(a,b,c);
            addEdge(b,a,-c);
        }
    }
    for(int i = 0;i<=n-1;i++)
    {
        addEdge(i,i+1,1);
        addEdge(i+1,i,0);
    }
    bool res = Spfa(0);
    if(res)
    cout<<dist[n]<<endl;
    else
    cout<<"impossible\n"<<endl;
    return 0;
}

D : 信息傳遞

問題描述
有 n 個人,每個人都有一個編號,從 1 到 n 。
如果 A 得知一個消息,那么他一定會告訴 B 。
問最少把消息告訴幾個人,能讓所有人得知這個消息。

輸入格式
第一行兩個整數(shù) n,m , 1≤n,m≤10
6
,表示有 n 個人
接下來 m 行,每行給出一個關(guān)系形如 A,B ,表示如果 A 得知一個消息,那么他一定會告訴 B 。

輸出格式
輸出一行,一個數(shù),代表答案

樣例輸入
10 10
1 3
2 4
4 5
2 8
5 2
5 9
6 8
9 2
10 5
5 8

10 10
1 3
2 4
4 5
2 8
5 2
5 9
6 8
9 2
10 5
5 8
樣例輸出
4文章來源地址http://www.zghlxwxcb.cn/news/detail-425161.html

#include<bits/stdc++.h>
using namespace std;
const int maxn=1000100;
int n,m;
int A,B;
int vis[maxn],c[maxn],dfn[maxn],dcount,scount; //Dcount DFS sequence count, scout SCC count, the i-th point in the sequence after DFN [i] - DFS, and the SCC number of point C [i] - I
bool flag[maxn]; //Record whether the penetration of each connected component is 0
vector<int> G1[maxn];
vector<int> G2[maxn]; //反圖
int indegree[maxn] = {0};

void dfs1(int x){
    vis[x] = 1;
    for(int i = 0; i < G1[x].size(); i++){
        if(!vis[G1[x][i]])
            dfs1(G1[x][i]);
    }
    dfn[++dcount] = x;//dfn[i]-dfs后序列中第i個點
}

void dfs2(int x){
    c[x] = scount;
    for(int i = 0; i < G2[x].size(); i++){
        if(!c[G2[x][i]])
            dfs2(G2[x][i]);
    }
}

void kosaraju(){
    //初始化
    dcount = scount = 0;
    memset(c,0,sizeof c);
    memset(vis, 0, sizeof vis);
    //第一遍dfs  記錄每個點是dfs之后 dfs中的第幾個點
    for(int i = 1; i <= n; i++)
        if(!vis[i]) dfs1(i);
    //第二遍dfs  記錄所在的SCC編號
    for(int i = n; i >= 1; i--)
        if(!c[dfn[i]]) ++scount,dfs2(dfn[i]);
}

int main(){
	ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i = 0; i < m; i++){
        cin>>A>>B;
        G1[A].push_back(B);
        G2[B].push_back(A);
    }
    kosaraju();
    for(int i = 1; i <= scount; i++)
        flag[i] = 0;
    for(int i = 1; i <= n; i++){
        for(int j = 0; j < G1[i].size(); j++){
            if(c[i] != c[G1[i][j]])
                flag[c[G1[i][j]]] = 1;
        }
    }
    int result = 0;
    for(int i = 1; i <= scount; i++)
        if(!flag[i])
            result++;
    cout<<result;
    return 0;
}

到了這里,關(guān)于山東大學計算機科學與技術(shù)學院程序設計思維與實踐作業(yè) week8-圖和樹的性質(zhì)與應用(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 山東大學眾智科學與網(wǎng)絡化產(chǎn)業(yè)復習筆記

    山東大學眾智科學與網(wǎng)絡化產(chǎn)業(yè)復習筆記

    寫在前面:鹿男神yyds,講課詼諧有趣,條理清晰,給分可沖,總而言之,眾智可沖,題主94,12/160,本文是復習時的總結(jié),希望學弟學妹95+ 圖 = 事物(節(jié)點) + 聯(lián)系(邊) 同構(gòu):圖的畫法不同,結(jié)構(gòu)上相同,兩圖同構(gòu)意味著可以找到一組對應的點,其關(guān)系也一致。 鄰接矩陣

    2024年01月23日
    瀏覽(30)
  • 山東大學軟件學院2022-2023數(shù)據(jù)科學導論知識點整理【軟工大數(shù)據(jù)課組】

    山東大學軟件學院2022-2023數(shù)據(jù)科學導論知識點整理【軟工大數(shù)據(jù)課組】

    CSDN的排版能力有限,因此留pdf版本,祝大伙全部95+,呼呼 山東大學軟件學院2022-2023數(shù)據(jù)科學導論知識點整理【軟工大數(shù)據(jù)課組】-統(tǒng)計分析文檔類資源-CSDN文庫 總體上是概論部分,可能考的也就名詞解釋了,總結(jié)如下: 什么是大數(shù)據(jù),大數(shù)據(jù)的界限,4V? 大數(shù)據(jù)是一種數(shù)據(jù)規(guī)

    2024年02月06日
    瀏覽(32)
  • 山東大學計算機網(wǎng)絡期末

    山東大學計算機網(wǎng)絡期末

    內(nèi)容僅供參考。如有錯誤之處,敬請指正! 第一章 概述 第二章 物理層 第三章 數(shù)據(jù)鏈路層 第四章 介質(zhì)訪問子層 第五章 網(wǎng)絡層 第六章 傳輸層 第七章 應用層 1.基本概念 計算機網(wǎng)絡定義: 表示一組通過單一技術(shù)相互連接起來的自主計算機集合。 分布式系統(tǒng): 是建立在網(wǎng)絡

    2024年02月03日
    瀏覽(24)
  • 山東大學軟件學院2022軟件測試技術(shù)期末試題回憶

    前言:本篇博客記錄2022大三下軟件測試技術(shù)期末試題。 復習資料:山東大學軟件學院軟件測試技術(shù)期末復習知識總結(jié) 一(15\\\') 1、軟件缺陷 2、系統(tǒng)測試 3、回歸測試 4、軟件國際化 5、測試自動化 二(20\\\') 1、單元測試和代碼調(diào)試 2、比較集成測試的不同模式,簡述集成測試

    2024年02月09日
    瀏覽(31)
  • 山東大學軟件學院計算機網(wǎng)絡期末考試考點

    單播 :只有一個發(fā)送方和一個接收方的點到點傳輸。 組播 :將一個數(shù)據(jù)包發(fā)送給一組機器,即所有機器的一個子集。 廣播 :將一個數(shù)據(jù)包發(fā)送給所有的目標機器。 面向連接的服務 :按照電話系統(tǒng)建模,服務用戶首先必須建立一個連接,然后使用該連接傳輸數(shù)據(jù),最后釋放連接。

    2024年02月03日
    瀏覽(30)
  • 2022山東大學軟件學院區(qū)塊鏈原理與技術(shù)期末考試(回憶版)

    這是限選課孔連菊老師的區(qū)塊鏈,還是要復習重點,考試內(nèi)容不多,有點超出想象,和往年題內(nèi)容形式還是有點出入,眾所周知,孔老師絕不透露和考試有關(guān)的半點內(nèi)容。。。。分享給學弟學妹們漲點人品。 題量不大甚至可以說是非常小,但是個人答的確實不咋樣,復習半天

    2024年02月11日
    瀏覽(73)
  • 山東專升本計算機第六章-數(shù)據(jù)庫技術(shù)

    山東專升本計算機第六章-數(shù)據(jù)庫技術(shù)

    數(shù)據(jù)庫技術(shù) SQL數(shù)據(jù)庫與NOSQL數(shù)據(jù)庫的區(qū)別 數(shù)據(jù)庫管理系統(tǒng) 考點 6 數(shù)據(jù)庫管理系統(tǒng)的組成和功能 組成 ? 模式翻譯 ? 應用程序的翻譯 ? 交互式查詢 ? 數(shù)據(jù)的組織和存取 ? 事務運行管理 ? 數(shù)據(jù)庫的維護 功能 ? 數(shù)據(jù)定義功能 ? 數(shù)據(jù)存取功能 ? 數(shù)據(jù)庫運行管理能力 ? 數(shù)

    2024年02月05日
    瀏覽(30)
  • 山東專升本計算機第十一章-新一代信息技術(shù)

    山東專升本計算機第十一章-新一代信息技術(shù)

    新一代信息技術(shù) 物聯(lián)網(wǎng) 概念 物聯(lián)網(wǎng)就是物物相連的互聯(lián)網(wǎng),其核心和基礎仍然是互聯(lián)網(wǎng) 計算機,互聯(lián)網(wǎng)之后信息產(chǎn)業(yè)發(fā)展的第三次浪潮 推入人類進入智能時代,又稱物聯(lián)時代 三大特征 全面感知 可靠傳遞 智能處理 ? 物聯(lián)網(wǎng)的最核心 技術(shù)架構(gòu) 感知層 網(wǎng)絡層 服務管理層(

    2024年02月01日
    瀏覽(30)
  • 小白怎么系統(tǒng)的自學計算機科學和黑客技術(shù)?

    小白怎么系統(tǒng)的自學計算機科學和黑客技術(shù)?

    我把csdn上有關(guān)自學網(wǎng)絡安全、零基礎入門網(wǎng)絡安全的回答大致都瀏覽了一遍,最大的感受就是“太復雜”,新手看了之后只會更迷茫,還是不知道如何去做,所以站在新手的角度去寫回答,應該把回答寫的簡單易懂,“傻瓜式”的一步步告訴他們應該怎么去做 在文章的后半

    2023年04月14日
    瀏覽(20)
  • 山東大學增強現(xiàn)實實驗四

    山東大學增強現(xiàn)實實驗四

    注意:本人尚處在opencv的入門學習階段,本博客僅為個人學習筆記見解,如有不當,歡迎指出 (實驗/理論)平面標志物的視覺跟蹤,要求: 選擇一個標志物,可以是人工標志物,也可以是自然標志物;實現(xiàn)和實驗二相同的效果。 用手機或攝像頭拍攝標志物的影像,建議讀取視

    2024年02月08日
    瀏覽(76)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包