The 14th Jilin Provincial Collegiate Programming Contest(暑期训练)

news2024/11/27 9:13:32

Attachments - The 14th Jilin Provincial Collegiate Programming Contest - Codeforces

目录

 Problem A. Chord

 Problem B. Problem Select

Problem C. String Game

Problem E. Shorten the Array

Problem F. Queue

Problem G. Matrix

 Problem J. Situation

 Problem L. Swimmer


 

 Problem A. Chord

 

 题意:

        输入三个音阶,判断在钢琴上俩俩之间差是否满足条件,满足条件输出对应内容

思路:

        按照顺序找到位置,由于不一定要一个区域所以+12 再 %12,就能得出差



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =998244353;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;

string s[15] = {"C","C#","D","D#","E","F","F#","G","G#","A","A#","B"};
void solve()
{	
	string s1,s2,s3;
  cin >> s1 >> s2 >> s3;
  int x,y,z;
  rep(i,0,11)
  {
    if(s[i] == s1) x = i;
  }
  rep(i,0,11)
  {
    if(s[i] == s2) y = i;
  }
  rep(i,0,11)
  {
    if(s[i] == s3) z = i;
  }
  // 5
  // C E G
  // A C E
 // cout << x<<' ' << y<<' ' << z<<endl;
  if((y-x + 12) % 12==4 && (z-y+12)%12==3)
  {
  
      cout<<"Major triad"<<endl;
    
    
  }else if((y-x + 12) % 12==3 && (z-y+12)%12==4)
  {
    
      cout<<"Minor triad"<<endl;
    
  }else{
    cout<<"Dissonance"<<endl;
  }
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    cin>>t;
    ca=1;
    while(t--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

 Problem B. Problem Select

 题意:

        按照顺序输出前k个数字,数字就是最后的

思路:倒着直接输出

        



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =998244353;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;

void solve()
{	
  cin>>n>>m;
  vector<ll>ve;
  rep(i,1,n)
  {
    string s;
    cin>> s;
    ll len = s.size();
    ll ant= 0;
    ll res=1;
    per(i,len-1,0)
    {
      if(s[i]== '/')break;
      ant += (s[i] - '0')*res;
      res *= 10;
    }
    ve.push_back(ant);
  }
  sort(ve.begin(),ve.end());
  int flag=0;
  for(auto it : ve)
  {
    
    cout<<it<<' ';
    flag++;
    if(flag>=m)break;
  }
  cout<<endl;
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    cin>>t;
    ca=1;
    while(t--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

Problem C. String Game

 题意:

        求有多少种方法是能从母串中得到子串

思路:

        dp求方案数:

自前向后遍历s1的字符串
自后向前遍历s2的字符串
dp[j]代表s1前i个字符有dp[j]种子序列等于s2前j个字符



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =1000000007;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;
//ll dp[5500][1500];
ll dp[5500];
void solve()
{	
   string s1,s2;
   while(cin >> s1 >> s2)
   {
    memset(dp,0,sizeof(dp));
    //cout<<s1 <<endl<<s2<<endl;
    //rep(i,0,s1.size()-1)dp[i][0] = 1;
    dp[0] = 1;
    s1=' '+s1;
    s2=' '+s2;
    //cout<<s1<<endl<<s2<<endl;
    for(int i=1;i<=s1.size();i++)
   {
    
    for(int j=s2.size() ;j>=1;j--)
    {
      if(s1[i] == s2[j]) dp[j] = (dp[j] + dp[j-1]) % mod;
      //cout<<dp[j]<<endl;
    }
   }
   cout<<dp[s2.size()]<<endl;
   }
 
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    //cin>>t;
    ca=1;
    while(t--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

Problem E. Shorten the Array

 

题意:        

        改变数组的长度然后输出最短长度 

思路:

        先找出数组中的最小元素,然后遍历数组看是否存在一个不是x的倍数的数,如果存在就代表存在 y 满足 gcd( x , y ) ≠ x.那么答案就是 1。

如果不存在,那么答案就是 num(x) / 2 (向上取整)。



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =998244353;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;

void solve()
{	
  cin >> n;
  ll mmin =INF;
  rep(i,1,n)
  {
    cin>> arr[i];
   // brr[i] = arr[i];
   mmin = min( mmin, arr[i]);
  }
  //sort(brr+ 1,brr+1+n);
  int flag = 0;
  ll ant =0;
  rep(i,1,n){
    if(arr[i] % mmin !=0)
    {
      flag =1;
      //break;
    }else if(arr[i] == mmin)
    {
      ant ++;
    }
  }
  if(flag)
  {
    cout<<1<<endl;
  }else{
    cout<<((ant+1)/2)<<endl;
  }
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    cin>>t;
    ca=1;
    while(t--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

Problem F. Queue

 题意:

        数组中有多少个逆序对,通过m次操作交换l,r之后,过程中逆序对做少是几个

思路:

        数组数组求逆序对,同时在交换的过程中遍历交换的区间的逆序对,

(比赛的时候一点没看出来,以为是模拟,还是太菜了)



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =1000000007;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;

ll lowbit(ll x)
{
  return x & (-x);
}

void insert(int x)
{
  for(ll i = x;i <= 100000; i += lowbit(i)) ++ brr[i];
}

ll getsum(int x)
{
  ll sum = 0;
  for(int i = x ; i; i -= lowbit(i))sum += brr[i];
  return sum;
}

void solve()
{	
   cin >> n;
   memset(brr,0,sizeof(brr));
   rep(i,1,n)cin >> arr[i], ++ arr[i];
   ll num = 0;
   rep(i,1,n)
   {
    num += i - 1 - getsum(arr[i]);
    insert(arr[i]);
   }
   cin >> m;
   ll ans = num;
   while(m--)
   {
    ll l,r;
    cin >> l >> r;
    if(arr[l] < arr[r])num++;
    if(arr[l] > arr[r])num--;
    rep(i,l+1,r-1)
    {
      if(arr[l] > arr[i])num--;
      if(arr[l] < arr[i])num++;
      if(arr[r] > arr[i])num++;
      if(arr[r] < arr[i])num--;
    }
    ans = min ( ans, num);
    swap(arr[l],arr[r]);
   }
   cout<<ans<<endl;
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    cin>>t;
    ca=1;
    while(t--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

Problem G. Matrix

题意:

         给你一个矩阵的长和宽,每个格子起始都是0,遍历所有的格子,遍历到格子的坐标为(i,j),就将行为i的倍数,列为j的倍数的格子上的数字进行变化:如果原来是0,变成1,如果原来是1变成0,问你遍历完所有格子后,矩阵中1的个数是多少。

思路:

        就。。。。。可奇怪了,多写了几个例子就看出来了,就sqrt(m) * sqrt(n)



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =998244353;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;

void solve()
{	
   cin >> n >>m;
   cout<<ll(sqrt(n))*ll(sqrt(m))<<endl;;
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    cin>>t;
    ca=1;
    while(t--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

 

 Problem J. Situation

题意:

        井字游戏,不过是有初始状态的井字游戏,
先输入一个op,1表示是Alice先下,0表示是Bob先下
再输入一个3 * 3的初始状态的矩阵,.代表还没下,O是Alice下的,X表示是Bob下的
矩阵的最终价值是O的数量减去X的数量,Alice希望这个值尽可能大,Bob希望这个值尽可能小,两个人都聪明秃顶,问最终的价值是多少

思路:

        佬那里学来的博弈树,我自己没写出来(还是太菜了)

对抗搜索的经典题目,使用min-max搜索
什么是最小最大搜索?就是在决策双方一个希望终值尽可能大,一个希望终值尽可能小的情况下,建立出一棵博弈树,根据子节点的值来确定父节点的值,如下:

 

从上往下,单数层是我方行动,双数层是对方行动,我方行动需要选择对我最有利的行动,即value大的行动,对方行动则是选择使我方最不利的行动,即value小的行动。
我们需要从最底层第四层开始考虑,双数层所以是对方行动。对于node I,会选择值更小的node M,node I的值更新为0。再考虑第三层,单数层是我方行动。node F会选择I,J中值更大的J,更新为5,G会选择K,L中值更大的L,更新为8。依次一层层向上类推,可以得到最终结果为:

 

所以这个题,我们可以枚举每个点放O还是X,来获得博弈树,来得到最终答案
因为有T组数组,我们可以开一个记忆化数组记录状态,将3*3的字符数组进行哈希后作为数组的第一维,第二维度记录当前是谁决策
其他的就去爆搜
 

佬玛

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

#define endl '\n'
#define inf 0x3f3f3f3f
#define mod 1000000007
#define m_p(a,b) make_pair(a, b)
#define mem(a,b) memset((a),(b),sizeof(a))
#define io ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define debug(a) cout << "Debuging...|" << #a << ": " << a << "\n";
typedef long long ll;
typedef pair <int,int> pii;

#define MAX 300000 + 50
int n, m, k;
struct ran{
    char tr[5][5];
    int gethaxi(){
        int haxi = 0;
        for(int i = 1; i <= 3; ++i){
            for(int j = 1; j <= 3; ++j){
                if(tr[i][j] == '.')haxi = haxi * 3;
                else if(tr[i][j] == 'O')haxi = haxi * 3 + 1;
                else haxi = haxi * 3 + 2;
            }
        }
        return haxi;
    }
    int fuck(){
        int ans = 0;
        if(tr[1][1] == tr[1][2] && tr[1][2] == tr[1][3] ){
            if(tr[1][1] == 'O')++ans;
            else --ans;
        }
        if(tr[2][1] == tr[2][2] && tr[2][2] == tr[2][3]){
            if(tr[2][1] == 'O')++ans;
            else --ans;
        }
        if(tr[3][1] == tr[3][2] && tr[3][2] == tr[3][3]){
            if(tr[3][1] == 'O')++ans;
            else --ans;
        }
        if(tr[1][1] == tr[2][1] && tr[3][1] == tr[1][1] ){
            if(tr[1][1] == 'O')++ans;
            else --ans;
        }
        if(tr[1][2] == tr[2][2] && tr[3][2] == tr[1][2] ){
            if(tr[1][2] == 'O')++ans;
            else --ans;
        }
        if(tr[1][3] == tr[2][3] && tr[3][3] == tr[1][3] ){
            if(tr[1][3] == 'O')++ans;
            else --ans;
        }
        if(tr[1][1] == tr[2][2] && tr[2][2] == tr[3][3]){
            if(tr[1][1] == 'O')++ans;
            else --ans;
        }
        if(tr[2][2] == tr[1][3] && tr[2][2] == tr[3][1]){
            if(tr[2][2] == 'O')++ans;
            else --ans;
        }
        return ans;
    }
    bool judge(){
        for(int i = 1; i <= 3; ++i){
            for(int j = 1; j <= 3; ++j){
                if(tr[i][j] == '.')return true;
            }
        }
        return false;
    }
};
int dp[MAX][2];
int dfs(ran now, int op){
    int haxi = now.gethaxi();
//    cout << haxi << endl;
    if(dp[haxi][op] != -inf)return dp[haxi][op];
    if(!now.judge())return now.fuck();
    if(op){//max
        for(int i = 1; i <= 3; ++i){
            for(int j = 1; j <= 3; ++j){
                if(now.tr[i][j] == '.'){
                    ran nex = now;
                    nex.tr[i][j] = 'O';
                    dp[haxi][op] = max(dp[haxi][op], dfs(nex, 1 - op));
                }
            }
        }
    }
    else{
        dp[haxi][op] = inf;
        for(int i = 1; i <= 3; ++i){
            for(int j = 1; j <= 3; ++j){
                if(now.tr[i][j] == '.'){
                    ran nex = now;
                    nex.tr[i][j] = 'X';
                    dp[haxi][op] = min(dp[haxi][op], dfs(nex, 1 - op));
                }
            }
        }
    }
    
    return dp[haxi][op];
}


void work(){
    for(int i = 0; i <= 100000; ++i){
        for(int j = 0; j <= 1; ++j){
            dp[i][j] = -inf;
        }
    }
    int t;cin >> t;
    while (t--) {
        int op;cin >> op;
        ran p;
        scanf("%s%s%s", p.tr[1]+1, p.tr[2]+1, p.tr[3]+1);
        cout << dfs(p, op) << endl;
    }
}


int main(){
    work();
    return 0;
}

 Problem L. Swimmer

思路:

        泳池一来回算一个行程,然后和泳池长度比较即可 



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =998244353;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;

void solve()
{	
	ll q;
  cin >> n >> m >> q;
  rep(i,1, n)
  {
    cin>>arr[i];
  }
  while(q--)
  {
    ll time;
    ll op;
    cin >>time>> op;
    ll cnt = (time*arr[op]) % (2 * m);
    if(cnt > m)cnt = 2 * m - cnt;
    cout<<cnt<<endl;
  }
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    //cin>>t;
    ca=1;
    while(t--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/722134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32设备驱动-HTU31温湿度传感器驱动

HTU31温湿度传感器驱动 文章目录 HTU31温湿度传感器驱动1、HTU31介绍2、硬件准备3、软件准备4、驱动实现1、HTU31介绍 高性能 HTU31 湿度和温度组合传感器是市场上最小和最精确的湿度传感器之一。 HTU31 提供数字和模拟版本,即使在最恶劣的环境中也能提供快速响应时间、精确测…

阿里云美国服务器怎么样?

随着业务量的扩展&#xff0c;很多小伙伴的业务发展到了海外&#xff0c;那么阿里云服务器给大家提供了方便&#xff0c;那么今天我们来说一下阿里云美国服务器好不好用&#xff0c;首先阿里云在美国有两个地域供大家选择&#xff1a;美国西部1&#xff08;硅谷&#xff09;和美…

直播美颜工具和美颜SDK:从用户需求到技术实现的完整流程

随着直播行业的迅速发展&#xff0c;用户对于直播内容的质量和视觉享受有着越来越高的要求。直播美颜工具和美颜SDK作为一种技术解决方案&#xff0c;在实时视频中提供了美化和优化的功能&#xff0c;满足了用户的需求。本文将介绍直播美颜工具和美颜SDK的完整流程&#xff0c;…

STM32——GPIO配置

文章目录 一、GPIO八种模式1. 输入2. 输出3. 如何选择GPIO的模式 二、库函数GPIO配置1. 配置代码2.参数设置 一、GPIO八种模式 GPIO的输入输出是对于STM32单片机来说的。以下仅为个人粗略笔记&#xff0c;内部电路分析可参考博客https://blog.csdn.net/k666499436/article/det…

Impala3.4源码阅读笔记(二)data-cache的Lookup实现

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 正文 本文介绍Lookup的具体流程和细节&…

基于matlab使用深度学习进行图像类别分类(附源码)

一、前言 此示例演示如何使用预训练卷积神经网络 &#xff08;CNN&#xff09; 作为特征提取器来训练图像类别分类器。 卷积神经网络 &#xff08;CNN&#xff09; 是深度学习领域的一种强大的机器学习技术。CNN使用大量不同图像进行训练。从这些大型集合中&#xff0c;CNN可…

【软考系统架构师】数据库三大模式:外模式、概念模式和内模式

目录 1 数据库的三种模式 1.1 内模式 1.2 概念模式 1.3 外模式 2 为什么要设置这些模式 2.1 物理层 2.2 概念层 2.3 用户层 1 数据库的三种模式 1.1 内模式 也称存储模式&#xff08;Storage Schema&#xff09;&#xff0c;内模式是整个数据库的最低层表示&#xff…

【macOS 系列】mac设置截屏或其他操作的默认保存位置

1、第一步、在用户/图片文件夹下&#xff0c;新建“截图”文件夹 2、第二步、打开终端&#xff0c;输入defaults write com.apple.screencapture location ~/Pictures/截图/后回车 3、第三步、操作完成后&#xff0c;再次输入killall SystemUIServer后回车 如果你在web前端开发…

对输入图像按比例压缩、居中填充

摘要&#xff1a; 图像在输入神经网络之前&#xff0c;通常需要进行尺寸压缩&#xff0c;如yolov5的输入为640x640&#xff0c;分类网络Resnet-50的输入为224x224。通常地&#xff0c;分类网络直接将输入进行resize处理&#xff0c;而对于目标检测网络&#xff0c;为了防止目标…

js封装公用from表单验证工具验证长度邮件电话身份证非空

效果 function validateRequiredFields(formId) {var form document.getElementById(formId);var elements form.elements;var valid true;for (var i 0; i < elements.length; i) {var element elements[i];if (element.hasAttribute("req")) {var value e…

Linux:YUM仓库服务

Linux的yum仓库有4种 网络yum源 本地yum源 ftpyum源 httpyum源 第一个网络yum源不用做任何设置&#xff0c;官方默认的yum仓库配置就是从公网上下载的 环境&#xff1a; 主centos 192.168.254.11 从centos 192.168.254.10 思路&#xff1a; 我们在一台主服务器上做个本地…

30.RocketMQ之消费者拉取消息源码

highlight: arduino-light 消息拉取概述 消息消费模式有两种模式&#xff1a;广播模式与集群模式。 广播模式比较简单&#xff0c;每一个消费者需要拉取订阅主题下所有队列的消息。本文重点讲解集群模式。 在集群模式下&#xff0c;同一个消费者组内有多个消息消费者&#xff0…

split()分割字符串【JavaScript】

分割字符串 在JavaScript中&#xff0c;我们可以使用split&#xff08; &#xff09;方法把一个字符串分割成一个数组&#xff0c; 这个数组存放的是原来字符串的所有字符片段。 有多少个片段&#xff0c;数组元素个数就是多少。 语法 字符串名.split&#xff08;"分割…

TypeScript——简介、开发环境搭建、基本类型、编译选项、webpack、babel、类、面向对象的特点、接口、泛型

文章目录 第一章 快速入门0、TypeScript简介1、TypeScript 开发环境搭建2、基本类型3、编译选项4、webpack5、Babel 第二章&#xff1a;面向对象1、类&#xff08;class&#xff09;2、面向对象的特点3、接口&#xff08;Interface&#xff09;4、泛型&#xff08;Generic&…

6、架构:组件与物料设计

本章节主要是物料组件的开发设计&#xff0c;之前提到了物料的结构与构成&#xff0c;但是并没有做明确的解释。作为低代码编辑器中核心的模块之一。 物料即承担了一个提供者的角色&#xff0c;通过对编辑器注入物料组件来完成页面的渲染和可视化编辑器的编排&#xff0c;最终…

服务无法注册进Eureka

相同的配置&#xff0c;在demo里能注册&#xff0c;在自己项目的无法注册&#xff0c;眼睛都快盯出老花眼了&#xff0c;还是不行&#xff0c;果然出现的问题只有在发现问题以后才觉得简单&#xff08;虽然确实是小问题&#xff0c;但是排查了一整天&#xff0c;值得记录一下&a…

IntelliJ IDEA 控制台中文乱码和错误: 非法字符: ‘\ufeff‘

一、问题描述&#xff1a; 最近在 Windows 电脑上使用 IntelliJ IDEA 运行 Java 程序时&#xff0c;发现运行报错且控制台显示乱码。如下图1&#xff1a; &#xfffd;&#xfffd;&#xfffd;&#xfffd;: &#xfffd;&#xfffd;&#xfffd;&#xfffd; GBK &#xff…

Xshell7连接Linux服务器的两种方式

文章目录 一、创建会话式连接二、直接在窗口中连接服务器 一、创建会话式连接 打开Xshell7之后&#xff0c;点击左上角的新建。 然后可以看到一下界面 在名称位置填入会话的名称&#xff0c;自己命名的&#xff0c;叫什么都可以。 主机那里需要填写服务器的ip地址&#xff0…

100种思维模型之黄金圈思维模型-90

黄金圈法则由西蒙.斯涅克&#xff08;Simon.sinek&#xff09;在TED演讲而被人所熟知&#xff0c;它是一种更好地思考问题的习惯。 西蒙.斯涅克说&#xff1a;“世界上所有伟大的领袖和组织——无论是苹果公司&#xff0c;马丁路德金&#xff0c;还是莱特兄弟&#xff0c;他们的…

SpringBoot 集成 xxl-job 实现定时任务管理

SpringBoot 集成 xxl-job 实现定时任务管理 摘要XXL-Job 优势集成XXL-Job操作环境运行XXL-Job1. 下载XXL-Job2. 创建数据库并导入数据3. 修改数据库连接配置4. 启动项目 项目集成1. 导入依赖2. 配置 application.yml 信息3. XxlJobConfig 配置类4. 创建 XxlJobTest 任务测试dem…