主頁 >  其他 > 2019 ACM - ICPC 全國邀請賽(南昌) 題解(9 / 12)

2019 ACM - ICPC 全國邀請賽(南昌) 題解(9 / 12)

2021-06-10 09:51:35 其他

整理的演算法模板合集: ACM模板

點我看演算法全家桶系列!!!

實際上是一個全新的精煉模板整合計劃


目錄

    • The 2019 ICPC China Nanchang National Invitational and International Silk-Road Programming Contest
    • A. Attack
    • B. Polynomial
    • C. Xyjj’s sequence
    • F. Sequence
    • G. Winner
    • H. Another Sequence
    • J. Prefix
    • K. A Good Game
    • L

The 2019 ICPC China Nanchang National Invitational and International Silk-Road Programming Contest

VP地址:https://www.jisuanke.com/contest/20996/challenges

A. Attack

Solution

斯坦納樹板子 + DP即可

Code

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

const int inf = 0x3f3f3f3f;
const int M = 2e3 + 10;
const int N = 40;

struct Edge{
	int to,val;
	int nxt;
}edges[M];
int head[N],idx = 0;
void add(int u, int v, int c)
{
	edges[idx] = {v,c,head[u]}, head[u] = idx++;
	edges[idx] = {u,c,head[v]}, head[v] = idx++;
}

int dp[N][500];
int f[500];
map<string, int> mp;
typedef pair<int,int> pii;
priority_queue<pii, vector<pii>, greater<pii>> q;
bool vis[N];

void dij(int s)
{
	memset(vis,0,sizeof(vis));
	while(q.size()){
		int u = q.top().second;
		q.pop();
		if(vis[u]) continue;
		vis[u] = 1;
		for(int i = head[u];~i;i = edges[i].nxt){
			int v = edges[i].to;
			int cost = edges[i].val;
			if(dp[v][s] > dp[u][s] + cost){
				dp[v][s] = dp[u][s] + cost;
				q.push({dp[v][s],v});
			}
		}
	}
}

bool check(int s)
{
	for(int i = 0;i < 4;++i){
		int x = s >> (i * 2) & 1;
		int y = s >> (i * 2 + 1) & 1;
		if(x ^ y) return 1;
	}
	return 0;
}

int main()
{
	memset(head,-1,sizeof(head));
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i = 1;i <= n;++i){
		string s;
		cin >> s;
		mp[s] = i;
	}
	for(int i = 0;i < m;++i){
		string a, b;
		int cost;
		cin >> a >> b >> cost;
		add(mp[a],mp[b],cost);
	}
	memset(dp,0x3f,sizeof(dp));
	for(int i = 0;i < 8;++i) {
		string s;
		cin>>s;
		dp[mp[s]][1 << i] = 0;
	}

	for(int s = 0; s < (1 << 8);++s){
		for(int i = 1;i <= n;++i){
			for(int subs = s & (s-1);subs;subs = s & (subs - 1)){
				dp[i][s] = min(dp[i][s], dp[i][subs] + dp[i][s ^ subs]);
			}
			if(dp[i][s] != inf) q.push({dp[i][s],i});
		}
		dij(s);
	}

	memset(f,0x3f,sizeof(f));
	for(int s = 0;s < (1 << 8);++s){
		if(check(s)) continue;
		for(int i = 1;i <= n;++i) f[s] = min(dp[i][s],f[s]);
		for(int subs = s & (s-1);subs;subs = s & (subs - 1)){
			if(check(subs)) continue;
			f[s] = min(f[subs] + f[s ^ subs], f[s]);	
		}
	}
	printf("%d\n",f[(1 << 8) - 1]);  
	return 0;
}

B. Polynomial

Solution

顯然考慮前綴和計算,我們知道若 f f f 是一個 n n n 次多項式,其前綴和 s u m sum sum 是一個 n + 1 n+1 n+1 次多項式,我們已經有了 n + 1 n+1 n+1 個點,先拉格朗日插值求出第 n + 2 n+2 n+2 個點 f ( n + 1 ) f(n+1) f(n+1),然后用這 n + 2 n+2 n+2 個點拉格朗日插值求出 s u m ( r ) , s u m ( l ? 1 ) sum(r),sum(l-1) sum(r),sum(l?1) 即可,

Code

#include <bits/stdc++.h>

using namespace std;
#define int long long
const int mod = 9999991, N = 5007;

int n, m;
int f[N];
int sum[N];
int fact[mod + 10], infact[mod + 10];
int inv[mod + 10];

int qpow(int a, int b)
{
	int res = 1;
	a %= mod;
	while(b) {
		if(b & 1) res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res;
}
 
void init(int k)
{
	inv[1] = 1;
	for(int i = 2; i <= k; ++ i)
		inv[i] = (mod - mod / i) * inv[mod % i] % mod;
	infact[0] = 1;
	for(int i = 1; i <= k; ++ i) {
		infact[i] = infact[i - 1] * inv[i] % mod;
	}
	//cout << infact[k] << endl; 
}  


int lagrange(int k, int *a, int n)
{
	int up = 1;
	for(int i = 0; i <= n; ++ i) {
		up = up * (k - i) % mod;
	}
	//cout << up << "up" << endl;
	int ans = 0;
	for(int i = 0; i <= n; ++ i) {
		int f;
		if((n - i) & 1) f = -1;
		else f = 1;
		int tmp = a[i] * f * infact[i] % mod * infact[n - i] % mod * (up * inv[k - i] % mod) % mod;
//		cout << infact[i] << endl;
		cout << ans << "ans" << endl;
		ans = ((ans + tmp) % mod + mod) % mod;
	}
	return ans;
}

signed main()
{
	init(mod + 7);
	int t;
	scanf("%lld", &t);
	while(t -- ) {
		scanf("%lld%lld", &n, &m);
		for(int i = 0; i <= n; ++ i) {
			scanf("%lld", &f[i]);
		}
		f[n + 1] = lagrange(n + 1, f, n);
		 
		sum[0] = f[0];
		for(int i = 1; i <= n + 1; ++ i) {
			sum[i] = (sum[i - 1] + f[i]) % mod;
		}
		while(m -- ) {
			int l, r;
			scanf("%lld%lld", &l, &r);

			if(l <= n && r <= n) {
				printf("%lld\n", (sum[r] - sum[l - 1] + mod) % mod);
			}
			else if(l <= n) {
				printf("%lld\n", (lagrange(r, sum, n + 1) - sum[l - 1] + mod) % mod);
			}
			else printf("%lld\n", (lagrange(r, sum, n + 1) - lagrange(l - 1, sum, n + 1) + mod) % mod);
		}
	}
	return 0;
}

C. Xyjj’s sequence

Solution

先歐拉降冪算出權值(數塔),然后直接DP即可,

Code

#include <bits/stdc++.h>

using namespace std;
#define int long long
const int N = 1e5 + 10, p = 1e5 + 3;

int v;
int aw[N], bw[N];
int n, m;
int phi[N];

int a, b;
int primes[N], cnt;
bool vis[N];

int qpow(int a, int b, int mod)
{
	int res = 1;
	a %= mod;
	while(b) {
		if(b & 1) res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res;
}

void init(int n)
{
    phi[1] = 1;
    for(int i = 2; i <= n; ++ i) {
        if(vis[i] == 0) primes[ ++ cnt] = i, phi[i] = i - 1;
        for(int j = 1; j <= cnt && i * primes[j] <= n; ++ j) {
            vis[i * primes[j]] = true;
            if(i % primes[j] == 0) {
                phi[i * primes[j]] = phi[i] * primes[j];
                break;
            }
            phi[i * primes[j]] = phi[i] * (primes[j] - 1);
        }
    }
}

int dp[2][5001][2];


int tower(int num, int p)
{
	if(p == 1) return 0;
	if(num == 1) return b % p;
	return qpow(b, tower(num - 1, phi[p]) + phi[p], p);
}

signed main()
{
	init(1e5 + 7);
	scanf("%lld%lld", &a, &b);
	scanf("%lld", &n);
	for(int i = 1; i <= n; ++ i) {
		scanf("%lld", &v);
		aw[i] = qpow(a, tower(v, phi[p]), p);
	}
	for(int i = 1; i <= n; ++ i) {
		scanf("%lld", &v);
		bw[i] = qpow(a, tower(v, phi[p]), p);
	}
	/*for(int i = 1; i <= n; ++ i)
	printf("%lld\n", aw[i]);
	for(int i = 1; i <= n; ++ i)
	printf("%lld\n", bw[i]);*/
	bw[0] = aw[0] = 0;
	for(int i = 1;i <= n;++i){
	    int idx = i&1;
		for(int j = 1;j <= n;++j){
			dp[idx][j][0] = max(dp[!idx][j][0]+(aw[i]==aw[i-1])*aw[i],dp[idx][j][0]);
			dp[idx][j][0] = max(dp[!idx][j][1]+(aw[i]==bw[j])*aw[i],dp[idx][j][0]);
			dp[idx][j][1] = max(dp[idx][j-1][0]+(aw[i]==bw[j])*bw[j],dp[idx][j][1]);
			dp[idx][j][1] = max(dp[idx][j-1][1]+(bw[j]==bw[j-1])*bw[j],dp[idx][j][1]);
		}
		memset(dp[!idx],0,sizeof(dp[!idx]));
        
	}
	cout<<max(dp[n&1][n][1],dp[n&1][n][0])<<endl;
}

F. Sequence

Solution

樹狀陣列維護即可,

Code

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int maxn = 100006;
struct BIT
{
    ll bit[maxn];
    void modify(int n,ll val,int idx){
        for(int i = idx;i <= n;i += i&-i)bit[i] ^= val;
    }
    ll query(int x){
        ll ans = 0;
        for(int i = x;i;i -= i&-i)ans ^= bit[i];
        return ans;
    }
}odd,even;
ll a[maxn];

void solve()
{
    static int cs = 0;
    cs++;
    memset(&odd,0,sizeof(odd));
    memset(&even,0,sizeof(even));
    int n,q;
    scanf("%d%d",&n,&q);
    for(int i = 1;i <= n;++i){
        scanf("%lld",&a[i]);
        if(i&1)odd.modify(n,a[i],i);
        else even.modify(n,a[i],i);
    }
    printf("Case #%d:\n",cs);
    while(q--){
        static int opt,l,r;
        scanf("%d%d%d",&opt,&l,&r);
        if(opt==1){
            if((r-l+1)%2==0)printf("0\n");
            else{
                ll ans = 0;
                if(r&1){
                    ans = odd.query(r)^odd.query(l-1);
                }
                else ans = even.query(r)^even.query(l-1);
                printf("%lld\n",ans);
            }
        }
        else{
            if(l&1){
                odd.modify(n,a[l],l);
                a[l] = r;
                odd.modify(n,a[l],l);
            }
            else{
                even.modify(n,a[l],l);
                a[l] = r;
                even.modify(n,a[l],l);
            }
        }
    }
}

int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
        solve();
    }
}

G. Winner

Solution

考慮建圖,然后縮點即可,

Code

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

typedef pair<int,int> pii;
const int N = 1e5 + 10;
pii a[N],b[N],c[N];


struct Edge{
    int to;
    int nxt;
}edges[N * 4];
int head[N], idx;

void add(int u, int v)
{
    // printf("%d %d\n",u,v);
    edges[idx] = {v,head[u]};
    head[u] = idx++;
}

int dfn[N], low[N], tim;
int stk[N], tp = 0;
int ins[N];
int cnt_scc = 0;
int scc_id[N];
vector<int> scc[N];
int in[N];
unordered_map<int,int> ok;

void tarjan(int u)
{
    dfn[u] = low[u] = ++tim;
    stk[++tp] = u;
    ins[u] = 1;
    for(int i = head[u];~i;i = edges[i].nxt){
        int v = edges[i].to;
        if(!dfn[v]){
            tarjan(v);
            low[u] = min(low[v],low[u]);
        }
        else if(ins[v]){
            low[u] = min(low[u],dfn[v]);
        }
    }
    if(dfn[u] == low[u]){
        cnt_scc++;
        int v;
        do{
            v = stk[tp--];
            ins[v] = 0;
            scc_id[v] = cnt_scc;
            scc[cnt_scc].push_back(v);
        }while(u != v);
    }
}

int main()
{
    memset(head,-1,sizeof(head));
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i = 1;i <= n;++i) scanf("%d",&a[i].first),a[i].second = i;
    for(int i = 1;i <= n;++i) scanf("%d",&b[i].first),b[i].second = i;
    for(int i = 1;i <= n;++i) scanf("%d",&c[i].first),c[i].second = i;
    sort(a+1,a+n+1);
    sort(b+1,b+n+1);
    sort(c+1,c+n+1);
    for(int i = 1;i < n;++i){
        add(a[i+1].second, a[i].second);
        add(b[i+1].second, b[i].second);
        add(c[i+1].second, c[i].second);
    }
    
    for(int i = 1;i <= n;++i){
        if(!dfn[i]) tarjan(i);
    }

    for(int i = 1;i <= n;++i){
        for(int j = head[i];~j;j = edges[j].nxt){
            if(scc_id[edges[j].to] != scc_id[i]){
                in[scc_id[edges[j].to]]++;
            }
        }
    }
    
    for(int i = 1;i <= cnt_scc;++i){
        if(!in[i]){
            for(auto it : scc[i]){
                ok[it] = 1;
            }
        }
    }
    // for(int i = 1;i <= cnt_scc;++i){
    //     for(auto it : scc[i]){
    //         printf("%d ",it);
    //     }
    //     puts("");
    // }
    while(m--){
        int x;
        scanf("%d",&x);
        if(ok[x]) puts("YES");
        else puts("NO");
    }
    return 0;
}

H. Another Sequence

Solution

先用FWT的或運算 O ( n l o g n ) O(nlogn) O(nlogn) 求出陣列的值,然后用樹狀陣列維護即可,

Code

#include <bits/stdc++.h>

using namespace std;
#define int long long
#define ll long long
const int N = 5e5 + 7;
const int M = 1<<17;
const int MX = 1e5;
int n, m;
int cnta[N], cntb[N], a[N], b[N], c[N], maxx;
int cnt[N];

 void OR(ll *f, int x = 1)
{
    for(int o = 2; o <= (1 << 17); o <<= 1) {
        for(int i = 0, k = o >> 1; i < (1 << 17); i += o) {
            for(int j = 0; j < k; ++ j) {
                f[i + j + k] = (f[i + j + k] + f[i + j] * x);
            }
        }
    }
} 
int sum[N];

int bit[M+5];

void modify(int x,int n,int val){
	for(int i = x;i <= n;i += i&-i)bit[i]+=val;
}
int query(int x){
	int ans = 0;
	for(int i = x;i;i -= i&-i)ans += bit[i];
	return ans;
}




void solve()
{
	using pii = pair<int,int>;
	vector<int> a;
	vector<pii> que;
	int q;
	scanf("%lld",&q);
	for(int i = 1,x,y;i <= q;++i){
		scanf("%lld%lld",&x,&y);
		a.push_back(y);
		if(x)a.push_back(x);
		que.push_back(make_pair(x,y));
	}
	sort(a.begin(),a.end());
	a.erase(unique(a.begin(),a.end()),a.end());
	for(auto &x:que){
		if(x.first)x.first = lower_bound(a.begin(),a.end(),x.first)-a.begin()+1;
		x.second = lower_bound(a.begin(),a.end(),x.second)-a.begin()+1;
	}
	for(auto &x:que){
		if(x.first){
			modify(x.first,M,1);
			modify(x.second,M,-1);
		}
		else{
			int val = query(x.second);
			int id = a[x.second-1];
			int idx = lower_bound(sum,sum+M,id)-sum;
			while(idx > 1&&val){
				val--;
				idx = sqrt(idx);
			}
			printf("%d\n",idx);
		}
	}
}	


signed main()
{
	scanf("%lld", &n);
	for(int i = 1; i <= n; ++ i) {
		scanf("%lld", &a[i]);
		cnta[a[i]] ++ ;
		maxx = max(maxx, a[i]);
	}
	for(int i = 1; i <= n; ++ i) {
		scanf("%lld", &b[i]);
		cntb[b[i]] ++ ;
		maxx = max(maxx, b[i]);
	}

	OR(cnta);
	OR(cntb); 
	for(int i = 0; i < 1 << (17); ++ i) {
		cnt[i] = cnta[i] * cntb[i];
	}
	OR(cnt, -1);
	
	int ans = 0;
	/*for(int i = 1; i < 100; ++i){
        printf("i: %d   num: %d\n",i,cnt[i]);
    }*/
	sum[0] = cnt[0];
	for(int i = 0; i < 1 << (17); ++ i) {
		//for(int j = 1;j <= cnt[i];++j)printf("%d ",i);
		sum[i] = sum[i-1]+cnt[i];
	}
	solve();
	/*
1 1 1 2 3 3 4 5 5 5 5 6 7 7 7 8 11 12 12 12 13 14 15 15 15 	*/
	
	
}

J. Prefix

Solution

字典樹即可,

Code

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

const int maxn = 2e5+5;
int val[26];

int tree[maxn][26];
int n,m,cnt[maxn];
int bit[maxn],tot;
vector<int> endpos[maxn];


void modify(int x,int val){
    for(int i = x;i;i -= i&-i)bit[i] += val;
}
int query(int x,int n){
    int ans = 0;
    for(int i = x;i <= n;i += i&-i)ans += bit[i];
    return ans;
}

void Insert(const char *s,int k)
{
    int root = 0;
    for(int i = 0;s[i];++i){
        if(!tree[root][s[i]-'a']){
            tree[root][s[i]-'a'] = ++tot;
        }
        root = tree[root][s[i]-'a'];
        cnt[root]++;
    }
    endpos[root].push_back(k);
}
char s[maxn];
int ans[maxn];


void dfs(int now,int num)
{
    if(endpos[now].size()){
        for(auto &x:endpos[now])
        ans[x] = query(num+1+1,m);
    }
    modify(num+1,cnt[now]);
    for(int i = 0;i < 26;++i){
        if(tree[now][i]){
            dfs(tree[now][i],1ll*num*val[i]%m);
        }
    }
    modify(num+1,-cnt[now]);
}


signed main()
{
    scanf("%lld%lld",&n,&m);   
    for(int i = 0;i < 26;++i)scanf("%lld",&val[i]);
    for(int i = 1;i <= n;++i){
        scanf("%s",s);
        Insert(s,i);
    }
    dfs(0,1);
    for(int i = 1;i <= n;++i)printf("%lld ",ans[i]);
    return 0;
}

K. A Good Game

Solution

顯然貪心排序即可,前綴和大的肯定乘上大的數得到的分數最多,

Code

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

const int N = 1e5 + 10;
int v[N];
long long sum[N];

struct node{
    int l,r;
    long long sum;
    bool operator<(const node &a)const{
        return sum < a.sum;
    }
}op[N];


int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i = 1;i <= n;++i){
            scanf("%d",&v[i]);
            sum[i] = sum[i-1] + v[i];
        }
        for(int i = 1;i <= m;++i){
            scanf("%d%d",&op[i].l,&op[i].r);
            op[i].sum = sum[op[i].r] - sum[op[i].l-1];
        }
        sort(op+1,op+1+m);
        long long res = 0;
        for(int i = 1;i <= m;++i){
            //printf("%d\n",op[i].sum);
            res += 1ll * op[i].sum * i;
        }
        printf("%lld\n",res);
    } 
    return 0;
}

L

因為太簽到了所以計蒜客上沒有這道題hhh
看知乎說這道題就是輸入三個數求他們的和hhh

簽到

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

標籤:其他

上一篇:黑魂復刻游戲的玩家控制器(鎖定狀態)——Unity隨手記(2021.6.7)

下一篇:Unity3D UGUI實作翻書效果

標籤雲
其他(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)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more