主頁 > 軟體設計 > 2021卓見杯第三屆CCPC河南省省賽所有題超詳細題解附加榜單真題決議,簡單代碼+詳細注釋+思想,要看的,補題的速速點進來 2021 10.30

2021卓見杯第三屆CCPC河南省省賽所有題超詳細題解附加榜單真題決議,簡單代碼+詳細注釋+思想,要看的,補題的速速點進來 2021 10.30

2021-11-04 11:43:56 軟體設計

文章中可能有不太恰當地方,還請大家指正,

是否因為出題人的簡短題解而發愁?,是否看不懂出題人的變態模板標程?是否因為自己是小白而苦惱?來看這片文章,幫助你解決這些問題

如果有識訓請點個贊再走吧,還有幾道題沒來得及寫上去,之后會慢慢補上的

1001.收集金幣

題目鏈接

演算法:動態規劃

狀態dp思路:

f[i][0]表示前i個操作中一直沒有跳的最大金幣數量
f[i][1]表示前i個操作中已經跳過或者現在跳的最大金幣數量

狀態轉移:
f[i][0]很簡單只有一種狀態
f[i][0]=f[i-1][0]+x

f[i][1]有兩種狀態可以轉移過來
1.f[i][1]可以是第i個操作跳過即前i-1沒有跳過即f[i-1][0]
2.前i-1已經跳過了,現在不需要跳過f[i-1][1]-x
所以
f[i][1]=max(f[i-1][0],max(f[i-1][1]-x,0ll))

最終狀態
f[n][0]從頭到尾一次都沒跳過
f[n][1]只跳過一次的最大值

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 20010;
typedef long long LL;
LL f[N][2];
 
int main()
{
    int T,n,x;
    string s;
    cin>>T;
    while(T--)
    {
        memset(f,0,sizeof f);
        f[0][0]=0;
        f[0][1]=-1e5;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>s>>x;
            if(s=="LOST")
            {
                f[i][1]=max(f[i-1][0],max(0ll,f[i-1][1]-x));
                f[i][0]=max(0ll,f[i-1][0]-x);
            }
            else
            {
                f[i][0]=f[i-1][0]+x;
                f[i][1]=f[i-1][1]+x;
            }
        }
        cout<<max(f[n][0],f[n][1])<<endl;
    }
}

1002.使用技能

題目鏈接

演算法:乘法逆元+快速冪

題意:這道題題目意思比較難懂,代碼比較簡單,由題意知序列的總數量是m^n的,我們需要先計算出所有序列的價值和,再除以序列總數量,
因為序列存在排序狀態,因此每個序列都不一樣,我們直接列舉釋放x次技能的總數量,再加起來較為簡便,首先需要從n個序列中挑選出x個位置即C(n,x)然后乘以m個技能,因為每個技能都可以,在把其他位置填滿即可即(m-1)^(n-x)最后乘以每個價值x^2
公式為C(n,x)*m*(m-1)^(n-x)*x^2

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

typedef long long LL;
const int N = 100010;
const int mod = 1e9+7;
const int maxn = 100000;
LL n,m;
LL jc[N],ni[N];
LL qmi(LL a,LL b)
{
    LL ans=1;
    while(b)
    {
        if(b&1)ans=ans*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return ans;
}
LL C(LL n,LL m)
{
    return jc[n]*ni[m]%mod*ni[n-m]%mod;
}
int main()
{
    int T;
    cin>>T;
    jc[0]=1;
    for(int i=1;i<=maxn;i++)jc[i]=jc[i-1]*i%mod;
    ni[maxn]=qmi(jc[maxn],mod-2);
    for(int i=maxn-1;i>=0;i--)ni[i]=ni[i+1]*(i+1)%mod;
    while(T--)
    {
        cin>>n>>m;
        LL res=0;
        for(int i=1;i<=n;i++)
        {
            res=res+C(n,i)*i%mod*i%mod*m%mod*qmi(m-1,n-i)%mod;
            res%=mod;
        }
        res=res*qmi(qmi(m,n),mod-2)%mod;
        cout<<res<<endl;
    }
}

1003.歡度佳節

題目鏈接

演算法:位運算+暴搜

思路:題目求占領的最大方塊,所以篩子數值就假設每次一定是6,仔細看題,糖果庫存大于某個格子的數值,且這個格子與你占領的格子相鄰,那么你可以選擇占領這個格子這里的大于容易理所應當的看成大于等于,所以每個格子需要的擲投數量就是a[i]=a[i]/6+1

本題需要先把輸入的一維資料轉化為二維,用方位陣列dx【】,dy【】進行每個方位判斷,之后根據位運算,再把二維轉化為一維,

因為是17個格子,所以2^17不會超時,可以暴力來做,用二進制列舉每一個狀態,是1則表示會到這個格子上,0則反之,每個二進制數字再進行判斷是否符合題目要求,如果符合找出二進制中1的個數,每次更新,求最大值即可,

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 17;
int x[]={1,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,5};
int y[]={1,2,4,5,2,3,4,2,3,4,2,3,4,1,2,4,5};
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
int a[20],mp[20][20];
bool st[20];
int n;
int arrive=0,sum=0;
void dfs(int x,int y,int state)
{
	//這里的arrive用于判斷路徑的連通性和進行判重,不再走原來走過的路
    int id=mp[x][y];
 
    if((id==-1)||(state>>id)%2==0||(arrive>>id)%2==1)return ;
    
    sum+=a[id];
    arrive|=1<<id;
    for(int i=0;i<4;i++)
    {
        dfs(x+dx[i],y+dy[i],state);
    }
}
int main()
{
    
    memset(mp,-1,sizeof mp);
    //二維轉化為一維為了進行位運算判斷
    for(int i=0,cnt=0;i<N;i++)
    mp[x[i]][y[i]]=cnt++;
    
    
    int T;
    cin>>T;
    while(T--)
    {
        for(int i=0;i<N;i++)
        {
            cin>>a[i];
            a[i]=a[i]/6+1;
        }
        cin>>n;
        int res=0;
        //列舉每種狀態
        for(int state=0;state<1<<N;state++)
        {
        	//第13個數字是出發點,如果狀態中沒有則直接continue
            if((state>>13)%2==0)continue;
            arrive=0,sum=0;
            //這里的arrive用于判斷路徑的連通性和進行判重,不再走原來走過的路
            
            dfs(x[13],y[13],state);
            if(arrive==state&&sum<=n)
            {
                res=max(res,__builtin_popcount(state));
            }
        }
        cout<<res<<endl;
    }
}

1004. 五個小時卷積神經網路從入門到入土

題目鏈接

題太長了,,,,直接把代碼搬過來了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 998244353;
const int N = 1e3+7;

template <typename T, typename H>
inline T qpow(const T &a, const H &p, const int &mo = MOD) {
  long long res = 1, x = a;
  for (H i = p; i; i >>= 1, x = x*x%mo)
    if (i&1) res = res*x%mo;
  return static_cast<T>(res);
}

int n, m;
char s[N];
const ll inv = qpow(4, MOD-2);

signed main() {
  int T = 1;
  scanf("%d", &T);
  while (T--){
    scanf("%d%d", &n, &m);
    ll ans = 0, sumw = 0;
    for (int i = 0; i < 3; ++i)
    for (int j = 0, w; j < 3; ++j) {
      scanf("%d", &w);
      sumw += w;
    }
    for (int i = 0; i < n; ++i) {
      scanf("%s", s);
      for (int j = 0; j < n; ++j)
        ans += s[j] == '1';
    }
    ans = ans*qpow(sumw*inv%MOD, m)%MOD;
    printf("%lld\n", ans);
  }
  return 0;
}

1005.闖關游戲

題目鏈接

演算法:01背包+貪心

思路:這道題比較巧妙,看起來像分組背包,但其實不是,先根據貪心的思路進行判斷,把一個空間更小的數放進背包,在把差值跑一邊01背包,非常巧妙

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=6010;
int a[N],b[N],c[N],d[N];
int f[N];
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int n,m;
        memset(f,0,sizeof f);
        int res=0,now=0;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)cin>>a[i]>>b[i]>>c[i]>>d[i];
         
        for(int i=1;i<=n;i++)
        {
            if(a[i]>c[i])
            {
                swap(a[i],c[i]);
                swap(b[i],d[i]);
            }
            if(b[i]>d[i])
            {
                d[i]=b[i];
            }
            if(m<a[i])break;
            m-=a[i];
            now+=b[i];
            c[i]-=a[i];
            d[i]-=b[i];
             
            for(int j=m;j>=c[i];j--)
            {
                f[j]=max(f[j],f[j-c[i]]+d[i]);
            }
            res=max(res,now+f[m]);
        }
        cout<<res<<endl;
    }
}

1006.軍訓

題目鏈接

演算法:打表+玄學盲猜+數學+注意卡常

本題解摘自:sky123
原文鏈接:https://sky123.blog.csdn.net/article/details/121102090

通過小范圍打表可知,f(n) 增長的非常緩慢,因此可以猜出當 n ≤ 109
f(n) 不會很大(實際上不會超過17),
設最優解第一個矩陣長寬分別為 xx + a ;第二個矩陣長寬分別為yy + b ,則有如下方程:

x ( x + a ) + y ( y + b ) = n

其中 a + b = f ( n )
由于f(n)不會很大,因此首先列舉f(n),然后列舉 a進而得到 b,之后列舉 x,由于 x在方程中的次數為2,因此列舉范圍為O( n \sqrt{n} n ?) ,
a,b,x的值確定之后,原方程可以轉化為關于y的一個二次方程,利用求根公式 O(1)判斷該方程是否有合法的整數解即可確定有無對應方案,
因為列舉 f ( n ) ,a 最壞為90次,因此最終復雜度為O(90T n \sqrt{n} n ?) ,
比較卡常,需要特判幾個f(n) 比較大的 n

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
int T, n;

inline bool check(int d) {
    for (int a = 0; a <= d / 2; a++)
        for (int x = 1, b = d - a; 1ll * x * x + a * x < n; x++) {
            ll s = b * b + 4ll * (n - x * x - a * x), qs = int(sqrt(s));
            if (qs * qs == s && (qs - b) % 2 == 0 && qs - b > 0) return true;
        }
    return false;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> T;
    while (T--) {
        cin >> n;
        if (n == 551189743 || n == 656865901 || n == 845198527) {
            cout << 16 << "\n";
            continue;
        }
        if (n == 608733239) {
            cout << 17 << "\n";
            continue;
        }
        int ans;
        for (ans = 0;; ans++)
            if (check(ans))break;
        cout << ans << "\n";
    }
    return 0;
}

1007.數"X"

題目鏈接

這題寫不出來,,,,,可以參照_sky123_大佬題解

本題解摘自:sky123
原文鏈接:https://blog.csdn.net/qq_45323960/article/details/121102930

單獨考慮 “X” 兩個方向,對于每個方向,將該方向上的元素組成一個序列,記錄每個元素下一次出現的位置,然后二分列舉范圍,使得該范圍中每個元素下一次都只能出現在范圍外,像這樣列舉中心點累加即可得到答案,時間復雜度為 O ( n^2 log ? n ) ,

#include<bits/stdc++.h>

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

struct ST {
    int dp[N][10];

    void init(const int a[], int n) {
        for (int i = 1; i <= n; i++) dp[i][0] = a[i - 1];
        for (int j = 1; (1 << j) <= n; j++)
            for (int i = 1; i + (1 << j) - 1 <= n; i++)
                dp[i][j] = min(dp[i][j - 1], dp[i + (1 << (j - 1))][j - 1]);
    }

    int ask(int l, int r) {
        int k = __lg(r - l + 1);
        return min(dp[l + 1][k], dp[r - (1 << k) + 2][k]);
    }
} S;

int a[N][N], n, T;
vector<int> tmp;
vector<pair<int, int>> pos;
int nx[N], cp[1000005];
int c[N][N];

inline void solve() {
    int m = (int) tmp.size();
    for (int x: tmp)cp[x] = m;
    for (int j = m - 1; j >= 0; j--)
        nx[j] = cp[tmp[j]], cp[tmp[j]] = j;
    S.init(nx, m);
    for (int i = 0; i < m; i++) {
        int l = 1, r = min(i + 1, m - i);
        while (l < r) {
            int mid = (l + r + 1) >> 1;
            S.ask(i - mid + 1, i + mid - 1) <= i + mid - 1 ? (r = mid - 1) : (l = mid);
        }
        c[pos[i].first][pos[i].second] = min(l, c[pos[i].first][pos[i].second]);
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> T;
    while (T--) {
        cin >> n;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                cin >> a[i][j], c[i][j] = n;
        for (int i = 1; i <= n; i++) {
            pos.clear(), tmp.clear();
            for (int x = 1, y = i; y <= n; x++, y++)
                pos.emplace_back(x, y), tmp.push_back(a[x][y]);
            solve();
        }
        for (int i = 1; i <= n; i++) {
            pos.clear(), tmp.clear();
            for (int x = i, y = 1; x <= n; x++, y++)
                pos.emplace_back(x, y), tmp.push_back(a[x][y]);
            solve();
        }
        for (int i = 1; i <= n; i++) {
            pos.clear(), tmp.clear();
            for (int x = 1, y = i; y >= 1; x++, y--)
                pos.emplace_back(x, y), tmp.push_back(a[x][y]);
            solve();
        }
        for (int i = 1; i <= n; i++) {
            pos.clear(), tmp.clear();
            for (int x = i, y = n; x <= n; x++, y--)
                pos.emplace_back(x, y), tmp.push_back(a[x][y]);
            solve();
        }
        ll ans = 0;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                ans += c[i][j];
        cout << ans << "\n";
    }
    return 0;
}

1008.小y愛數數

題目鏈接

演算法:快速冪+dp+逆元

這是一個復雜度較高地做法,復雜度為10nlog(n)
思想:最簡單思想是兩層回圈列舉算出余數為k的方法數,再除以n^2就是概率,但本題時間為300ms必然超時,我們可以采取類似埃式篩法篩質數的思想把每個余數為k的數給篩出來
用一個二維陣列存盤f[i][j] i即余數,j即符合要求的數,把f[i][j]預處理出來,用的時候直接使用就可以了,詳細請看代碼

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int mod = 23333;
const int N = 100010;
int f[12][N];
LL qmi(LL a,LL b)
{
    LL res=1;
    while(b)
    {
        if(b&1)res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return res;
}
int main()
{
   ios::sync_with_stdio(false);
   //預處理
   for(int i=0;i<=10;i++)
   {
    //這里的j指的是x,k指的是y,類似于埃式篩法把x的y倍+i的數全部篩出來
    //這里x要大于i,如果x小于i,x%y的余數必然不是i
       for(int j=i+1;j<=1e5;j++)
       {
           for(int k=1;k*j+i<=1e5;k++)
           {
               f[i][k*j+i]++;
           }
       }
       //計算每個余數的方案和
       for(int j=1;j<=1e5;j++)f[i][j]+=f[i][j-1];
   }
   
   int T;
   cin>>T;
   LL res=0;
   while(T--)
   {
       int n,k;
       cin>>n>>k;
       int ans=f[k][n];
       //因為預處理時從x大于k的開始了所以這里需要加上那些x等于k的所以加上n-k個
       //k等于0時不需要加,因為沒有x和y都不等于0
       if(k!=0)ans+=max(n-k,0);
       
       LL state=1ll*ans*qmi((1ll*n*n)%mod,mod-2)%mod;
       
       state=(state+mod)%mod;
       
       res=res^state;
   }
   cout<<res<<endl;
   
}

1009.神奇的魔法

題目鏈接

演算法:小根堆的維護+狀態列舉

題意:本題看著好像是背包問題,但是和背包毫無關聯,題意為有多個背包,每個背包有限制,最少拿的數量l[N]和最多拿的數量r[N],因此題目中一共有所有r[i]-l[i]之和+1種狀態(全部剛好滿足最低l[i]的一種狀態),每種狀態求最大值,在異或起來就是答案.

演算法:如何求每種狀態的最大值呢,用一個動態的最小堆維護就好了,

主要思路:考慮選取物品集合確定的時候一定優先選擇價值大的物品,所以我們可以考慮拿一個堆維護當前選擇價值翻倍的物品,如果是堆中物品 則直接把物品插入堆,否則若物品價值小于堆中最小值則替換,

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long LL;
const int N = 510;
priority_queue<int,vector<int>,greater<int>>heap;
int n,m,k,idx=0;
LL state=0,res=0;
int a[N][N],l[N],r[N];
vector<int>q;
//維護一個動態小根堆
void check(int x)
{
    if(heap.size()<k)
    {
        heap.push(x);
        state+=2*x;
    }
    else if(heap.top()<x)
    {
        state-=heap.top();
        state+=2*x;
        heap.pop();
        heap.push(x);
    }
    else state+=x;
}
 
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
    //每組資料記得清空
        while(heap.size())heap.pop();
        idx=0,state=0,res=0;
        
        q.clear();
        
        scanf("%d%d%d",&n,&m,&k);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                scanf("%d",&a[i][j]);
            }
            sort(a[i]+1,a[i]+m+1,greater<int>());
        }
        
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&l[i],&r[i]);
            //idx統計狀態的數量
            idx+=r[i]-l[i];
            for(int j=1;j<=l[i];j++)check(a[i][j]);
			//把這idx個狀態用vector存盤起來
            for(int j=l[i]+1;j<=r[i];j++)q.push_back(a[i][j]);
        }
        //從大到小排序
        sort(q.begin(),q.end(),greater<int>());
        res=state;
        for(int i=0;i<idx;i++)
        {
            check(q[i]);
            //每種狀態異或起來
            res^=state;
        }
        cout<<res<<endl;
    }
     
     
}

1010.小凱的書架

因為是概率問題每次列舉到一個位置就去前邊找大于它的第k個數

題目鏈接

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=300010;
int a[N];
int main()
{
      
    int T;
    cin>>T;
    while(T--)
    {
        int n,k;
        scanf("%d %d",&n,&k);
        for(int i=0;i<n;i++)scanf("%d",&a[i]);
        for(int i=0;i<n;i++)
        {
            if(i<k)
            {
                printf("-1\n");
                continue;
            }
            int cnt=0;
            for(int j=i-1;j>=0;j--)
            {
                if(a[j]>a[i])cnt++;
                if(cnt==k)
                {
                    printf("%d\n",a[j]);
                    break;
                }
            }
            if(cnt<k)cout<<-1<<endl;
        }
    }
}

1011.未成年人之友

純簽到題

題目鏈接

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 20010;
typedef long long LL;
 
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        string s;
        int n,h,m;
        cin>>n>>s;
        scanf("%d:%d",&h,&m);
         
        if(n>=18)
        {
            cout<<"Yes"<<endl;
            continue;
        }
         
        if(s=="Fri"||s=="Sat"||s=="Sun")
        {
            if(h==20&&m>=0&&m<=59)
            {
                cout<<"Yes"<<endl;
            }
            else cout<<"No"<<endl;
        }
        else cout<<"No"<<endl;
    }
}

1012.黑曜石

只有水和巖漿相鄰,或者水和巖漿中間只隔了空氣,才可能生成新的黑曜石,因此答案為 一開始的黑曜石數 + 按高度排序后水和巖漿相鄰的個數即為答案,

題目鏈接

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=100010;
struct Node
{
    int h,type;
    bool operator < (const Node & H) const
    {
        return h<H.h;
    }
}a[N];
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int n;
        cin>>n;
        int res=0;
        for(int i=0;i<n;i++)
        {
            cin>>a[i].type>>a[i].h;
        }
        sort(a,a+n);
        for(int i=0;i+1<n;i++)
        {
            if((a[i].type==1&&a[i+1].type==2)||(a[i].type==2&&a[i+1].type==1))
            {
                res++;
            }
            if(a[i].type==3)res++;
        }
        if(a[n-1].type==3)res++;
        cout<<res<<endl;
    }
}

在這里插入圖片描述

如果有識訓請點個贊再走吧,還有幾道題沒來得及寫上去,之后會慢慢補上的,,,,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/347179.html

標籤:其他

上一篇:華為網路配置(RIP)

下一篇:Java——類和物件超詳細總結

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more