主頁 >  其他 > 2020-IT節程式設計競賽-題解

2020-IT節程式設計競賽-題解

2020-12-08 11:21:45 其他

2020-BNUZ-IT節程式設計競賽-題解

A.營救小玉和老爹
B.靜靜想題目
C.年輕人,要來一把昆特牌嗎?
D.我勸,這支蠟燭,耗子尾汁!
E.棋魂
F.英雄聯盟排隊機制
G.arc看演唱會
H.加油,打工人!
I.迪迦的隕石雨
J.新生賽的場外求助
K.測驗接待員

A.營救小玉和老爹

題解

由式子min(ceil((1+T/100)ti), 100100ti),我們可以知道如果在第i條道路清除結束后就通過,那么在該道路耗時就是ti,由此我們對清理計劃進行預處理一下
首先我們對每條路清理計劃按照開始時間進行排序,因為如果不能在下次清除到來前通過該道路,那么就不會走,所以如果兩個相鄰的計劃的間隔時間沒有ti,那么就將他們合并成更大的一個計劃
預處理完,我們就直接跑dij,這里主要在于通過第i條路到達下個點的時間的計算:
我們先二分清理計劃,找到第一個開始時間大于等于當前點的時間計劃a,以及a的前一個計劃b
我們設開始時間為s, 結束時間為f, ti為該道路的無陷阱情況下的通過時間
當前點為cur, 下個點為next
當前點的到達時間為curt, 下個點的抵達時間為nextt
這里有兩種情況:
1. 如果b.f >= curt, 那么nextt = b.f + ti
2. 如果b.f < curt, 那么nextt = min(ceil((1+(curt - b.f)/100)ti), 100100ti)
對于第一種情況,由于我們已經將清理計劃整合合并了,所以如果在b.f通過該道路,可以在a.s前到達next, 這是沒問題的
但是第二種情況,我們其實是需要注意,因為如果 nextt是大于b.f + ti, 那么就不能保證可以在a.s前到達next, 所以我們需要判斷一下是否可以在a.s前到達,不能的話就nextt=a.f+ti

標程
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = 100100;

vector<pii> g[N];
ll t[N], dis[N];
vector<pair<ll, ll> > blocks[N];
bool vis[N];

typedef struct node{
	ll time;
	int point;
	bool operator<(const node&a) const{
		if(a.time == time){
			return a.point < point;
		}
		return a.time < time;
	}
}node;

ll calTime(ll tnow, ll prev, ll ti) {
	if(tnow + 100 - prev > 100100 * 100) return ti * 100100;
	else if(((tnow-prev)*ti) % 100 == 0) return ti + ((tnow - prev) * ti) / 100;
	else return ti + ((tnow - prev) * ti) / 100 + 1;
}

ll getNextTime(vector<pair<ll, ll> > &b, ll cur, ll ti) {
	if(b.empty()) {
		return cur + calTime(cur, 0, ti);
	} else if(cur <= b[0].first) {
		ll tmp = cur + calTime(cur, 0, ti);
		if(tmp <= b[0].first) return tmp;
		else return b[0].second + ti;
	}
	auto it = lower_bound(b.begin(), b.end(), make_pair(cur,0ll));
	it--;
	if(it->second >= cur) {
		cur = it->second;
	}
	ll tmp = calTime(cur, it->second, ti);
	it++;
	return (it == b.end() || (cur + tmp <= it->first)) ? (cur + tmp) : (it->second + ti);
}

ll dijkstra(int n){
	for(int i = 1; i <= n; i++){
		dis[i] = (1LL << 60);
	}
	dis[1] = 0;
	priority_queue<node >pq;
	node tt;
	tt.point = 1;
	tt.time = 0;
	pq.push(tt);
	while(!pq.empty()){
		
		node Now = pq.top();
		pq.pop();
		
		int x = Now.point;
		ll ctime = Now.time;
		
		if(vis[x]) continue;
		vis[x] = 1;
		
		for(pii e : g[x]){
			int eid = e.first, nxt = e.second;
			if(vis[nxt]) continue;
			ll ntime = getNextTime(blocks[eid], ctime, t[eid]);
			if(dis[nxt] > ntime){
				dis[nxt] = ntime;
				node temp;
				temp.point = nxt;
				temp.time = ntime;
				pq.push(temp);
			}
		}
	}
	return dis[n];
}


void clean(vector<pair<ll, ll> > &v, ll ti) {
	if(v.empty()) return;
	pair<ll, ll> p = v[0];
	vector<pair<ll, ll> > newv;
	int len = v.size();
	for(int i = 1; i < len; i++) {
		if(p.second + ti < v[i].first) {
			newv.push_back(p);
			p = v[i];
		} else {
			p.second = v[i].second;
		}
	}
	newv.push_back(p);
	v = newv;
}

int main() {
	int n, m;
	scanf("%d%d", &n, &m); 
	for(int i = 1; i <= m; i++) {
		int a, b; 
		scanf("%d%d%lld", &a, &b, &t[i]);
		g[a].push_back(make_pair(i,b));
		g[b].push_back(make_pair(i,a));
	}
	int k;
	scanf("%d", &k);
	for(int i = 0; i < k; i++) {
		int id, s, f;
		scanf("%d%d%d", &id, &s, &f);
		blocks[id].push_back(make_pair(s,f));
	}
	for(int i = 1; i <= m; i++) {
		sort(blocks[i].begin(), blocks[i].end());
		clean(blocks[i], t[i]);
	}
	ll ans = dijkstra(n);
	printf("%lld", ans);
	return 0;
}

B.靜靜想題目

題解

后綴自動機+線段樹合并

標程
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#define pr pair<int,int>
#define mp make_pair
#define ll long long
#define IT vector< pr > :: iterator
#define N 500005
#define qN 100005
using namespace std;
int l, r;
int lth[qN], g[N];
ll ans[qN];
char s[N];
string T[qN];
vector< pr >e[N];
int n, q;
struct SAM {
	int lst = 1, cnt = 1, tr[N << 1][26], pre[N << 1], len[N << 1], lc[N << 1];
	void ins(int c) {
		int p = lst, q, np;
		lst = np = ++cnt;
		len[np] = len[p] + 1, lc[np] = len[p];

		for (; p && !tr[p][c]; p = pre[p])
			tr[p][c] = np;

		if (!p)
			pre[np] = 1;
		else {
			q = tr[p][c];

			if (len[p] + 1 == len[q])
				pre[np] = q;
			else {
				int g = ++cnt;
				memcpy(tr[g], tr[q], sizeof(tr[q]));
				len[g] = len[p] + 1, pre[g] = pre[q], lc[g] = lc[q];

				for (; p && tr[p][c] == q; p = pre[p])
					tr[p][c] = g;

				pre[np] = pre[q] = g;
			}
		}
	}
	void Clear() {
		memset(tr, 0, 26 * (cnt + 1)*sizeof(int));
		cnt = lst = 1;
	}
} S1, S2;
#define ls(x) a[x].ch[0]
#define rs(x) a[x].ch[1]
#define fa(x) a[x].f
#define tag(x) a[x].cltg
#define col(x) a[x].cl
struct LCT {
	int ch[2], f, cltg, cl;
} a[N << 1];
int Q[N << 1];
int id(int x) {
	return ls(fa(x)) == x ? 0 : 1;
}
bool isrt(int x) {
	return ls(fa(x)) != x && rs(fa(x)) != x;
}
void connect(int x, int F, int son) {
	fa(x) = F;
	a[F].ch[son] = x;
}
void rot(int x) {
	int y = fa(x), r = fa(y);
	int yson = id(x), rson = id(y);

	if (isrt(y))
		fa(x) = r;
	else
		connect(x, r, rson);

	connect(a[x].ch[yson ^ 1], y, yson);
	connect(y, x, yson ^ 1);
}
void push_tag(int x, int z) {
	if (!x)
		return;

	tag(x) = col(x) = z;
}
void push_down(int x) {
	if (tag(x)) {
		push_tag(ls(x), tag(x));
		push_tag(rs(x), tag(x));
		tag(x) = 0;
	}
}
void splay(int x) {
	int g = x, k = 0;
	Q[++k] = x;

	while (!isrt(g))
		g = fa(g), Q[++k] = g;

	while (k)
		push_down(Q[k--]);

	while (!isrt(x)) {
		int y = fa(x);

		if (isrt(y))
			rot(x);
		else if (id(x) == id(y))
			rot(y), rot(x);
		else
			rot(x), rot(x);
	}
}
void access(int x, int r) {
	int y;

	for (y = 0; x; y = x, x = fa(x)) {
		splay(x);
		rs(x) = y;
	}

	push_tag(y, r);
}
int Col(int x) {
	splay(x);
	return col(x);
}
int main() {
	scanf("%s", s + 1);
	n = strlen(s + 1);

	for (int i = 1; i <= n; ++i)
		S1.ins(s[i] - 'a');

	for (int i = 2; i <= S1.cnt; ++i)
		fa(i) = S1.pre[i];

	scanf("%d", &q);

	for (int i = 1; i <= q; ++i) {
		cin >> T[i];
		lth[i] = T[i].length();
		scanf("%d%d", &l, &r);
		e[r].push_back(mp(l, i));
	}

	int st = 1;

	for (int i = 1; i <= n; ++i) {
		st = S1.tr[st][s[i] - 'a'];
		access(st, i);

		for (IT it = e[i].begin(); it != e[i].end(); ++it) {
			S2.Clear();
			int l = it->first, w = it->second, s0 = 1, st0 = 1, nlen = 0;

			for (int j = 0; j < lth[w]; ++j)
				S2.ins(T[w][j] - 'a');

			for (int j = 0; j < lth[w]; ++j) {
				int c = T[w][j] - 'a';
				st0 = S2.tr[st0][c];

				if (!S1.tr[1][c] || Col(S1.tr[1][c]) < l)
					s0 = 1, nlen = 0;
				else {
					while (!S1.tr[s0][c])
						s0 = S1.pre[s0], nlen = S1.len[s0];

					s0 = S1.tr[s0][c];
					++nlen;

					if (Col(s0) - nlen + 1 < l) {
						while (Col(s0) - S1.len[S1.pre[s0]] < l)
							s0 = S1.pre[s0];

						nlen = min(S1.len[s0], Col(s0) - l + 1);
					}
				}

				g[j] = nlen;
			}

			for (int j = 2; j <= S2.cnt; ++j)
				ans[w] += max(S2.len[j] - max(g[S2.lc[j]], S2.len[S2.pre[j]]), 0);
		}
	}

	for (int i = 1; i <= q; ++i)
		printf("%lld\n", ans[i]);

	return 0;
}

C.年輕人,要來一把昆特牌嗎?

題解

有n張牌,兩個人輪流取牌,每次可以選擇取1、2、k張牌,取走最后一張牌的人輸掉比賽,兩個人都表現最佳的情況下,誰能贏,
狀態轉移

標程
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+10;
const int inf = 0x3f3f3f3f;

int arr[10],dp[maxn];

int main() {
    int t;
    cin >> t;
    while(t--) {
        int n,k;
        cin >> n >> k;
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = k;
        dp[1] = 0;
        for (int i=2; i<=n; i++) {
            dp[i] = 0;
            for (int j=0; j<3; j++) {
                if((i - arr[j] > 0) && (dp[i-arr[j]] == 0)) {
                    dp[i]=1;
                    break;
                }
            }
        }
        if(dp[n] == 1) {
            puts("df");
        }
        else {
            puts("yst");
        }
    }
}

D.我勸,這支蠟燭,耗子尾汁!

題解

有一圈蠟燭,首尾相接,蠟燭有點燃和熄滅兩種狀態,其中一個蠟燭的狀態取反,隔壁兩個也會取反,求最少需要多少次能把所有蠟燭改變成同一個狀態,
搜索,深度優先搜索也能過,
列舉每一個蠟燭的狀態,

標程
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1010;
const int inf = 0x3f3f3f3f;

int n,ans,arr[maxn];

void change(int idx) {
    arr[idx] = !arr[idx];
    if(idx - 1 >= 1) {
        arr[idx-1] = !arr[idx-1];
    }
    else {
        arr[n] = !arr[n];
    }
    if(idx + 1 <= n) {
        arr[idx+1] = ! arr[idx+1];
    }
    else {
        arr[1] = !arr[1];
    }
}

bool check() {
    for(int i=1;i<=n;i++) {
        if(arr[i] != arr[1]) {
            return false;
        }
    }
    return true;
}

void dfs(int idx, int res) {
    if(idx == n+1) {
        if(check()) {
            if(res < ans) {
                ans = res;
            }
        }
    }
    else {
        dfs(idx+1,res);
        change(idx);
        dfs(idx+1,res+1);
        change(idx);
    }
}

int main() {
    int t;
    cin >> t;
    while(t--) {
        cin >> n;
        for(int i=1;i<=n;i++) {
            cin >> arr[i];
        }
        ans = inf;
        dfs(1,0);
        if(ans == inf) {
            puts("-1");
        }
        else {
            cout << ans << endl;
        }
    }
}

E.棋魂

題解

簡單模擬判斷,使用一個二維陣列存取當前棋盤的狀態,每次添加一顆新的棋子判斷,判斷當前四個方向的棋子有連續的棋子數量是否超過五即可,

標程
#include<bits/stdc++.h>
using namespace std;
#define maxn 1005
const int p[4][2] = {{1, 0}, {0, 1}, {1, 1}, {-1, 1}};
int n, m;
char now[maxn][maxn];
bool check(int x, int y){
    for (int i = 0; i < 4; i++){
        int cnt = -1;
        for (int r = x, c = y; r && c && r <= n && c <= n; r -= p[i][0], c -= p[i][1]){
        	if(now[r][c] == now[x][y]){
        		cnt++;
			} else {
				break;
			}
		}
         
        for (int r = x, c = y; r && c && r <= n && c <= n; r += p[i][0], c += p[i][1]){
        	if(now[r][c] == now[x][y]){
        		cnt++;
			} else {
				break;
			}
		}
        if(cnt >= 5){
        	return 1;
		}
    }
    return 0;
}
int main(){
    cin >> n >> m;
    for (int i = 1;i <= m; i++){
        int x, y;
        cin >> x >> y;
        now[x][y] = i & 1 ? 'B' : 'W';
        if(check(x, y)){
            printf("%s %d\n", i & 1 ? "小胖" : "121", i);
            return 0;
        }
    }
    printf("UNK %d\n", m);
    return 0;
}

F.英雄聯盟排隊機制

題解

首先考慮如果前后兩個人等待時間相差超過m,那一定不必等,時間要進行一定的排序使用dp,用f[i][j]表示前i個人全送進服務器,且最后一個時間點讓第i個人等了j分鐘,前i個人總共等了多久,那么f[i][j]可以轉移到f[k][下一個時間-tk],表示下一個時間點把k之前包括k的人送了,這里下一個時間點的時間就是f[i][j]表示的最佳時間點(a[i]+j)+m和tk取最大值,多花的時間用前綴和維護一下就行了,

標程
#include<bits/stdc++.h>
using namespace std;
const int maxN = 505, maxM = 205;
int n, m, mm, ans = 1e9, t[maxN], g[maxN][maxM];
int main() {
	scanf("%d%d", &n, &m);
	mm = m + m;
	int max_int = 1e9;
	for (int i = 1; i <= n; i++) {
		scanf("%d", &t[i]);
	}

	sort(t + 1, t + n + 1);

	for (int i = 1; i <= n; i++) {

		g[i][0] = max_int;

		for (int j = 0; j <= min(t[i] - t[i - 1] - m, m - 1); j++) {
			g[i][0] = min(g[i][0], g[i - 1][j]);
		}

		for (int j = 1; j < mm; j++) {
			g[i][j] = min(g[i][j - 1], t[i] + j - t[i - 1] - m >= 0 &&
			              t[i] + j - t[i - 1] - m < mm ? g[i - 1][t[i] + j - t[i - 1] - m] : max_int);
		}

		for (int j = 0; j < mm; j++) {
			g[i][j] = min(g[i][j], t[i] + j - t[i - 1] < mm ? g[i - 1][t[i] + j - t[i - 1]] : max_int) + j;
		}
	}

	for (int i = 0; i < m; i++) {
		ans = min(ans, g[n][i]);
	}
	printf("%d", ans);
	return 0;
}

G.arc看演唱會

題解

簽到題

標程
#include <bits/stdc++.h>
using namespace std;
int a[111], b[111];
int main(){
	long long n, m;
	cin >> n >> m;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
	}
	long long sum = 0;
	for(int i = 1; i <= n; i++){
		cin >> b[i];
		sum += (a[i] - b[i]);
	}
	cout << (sum >= m * 2LL ? "大耳朵王王" : "alex生日快樂");
}

H.加油,打工人!

題解

有一個長度為n的字串,有最多m次交換相鄰兩個字符機會,也可以不交換,最后給出一個字典序最小的字串,
貪心思想,
為了達到字典序最小,必須盡可能讓前面的字符變小,從前往后找每個位置,找到符合<m的前提下最小的字母,花費m次交換機會到前面一定是最賺的,

標程
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1010;
const int inf = 0x3f3f3f3f;

int main() {
    int t;
    cin >> t;
    while(t--) {
        int n,m;
        cin >> n >> m;
        string str;
        cin >> str;
        for(int i=0;i<n;i++) {
            int tmp = i;
            int cnt = 0;
            for(int j=i+1;j<n && m >= j-i;j++) {
                if(str[j] < str[tmp]) {
                    tmp = j;
                    cnt = j-i;
                }
            }
            if(str[tmp] == str[i]) continue;
            for(int k=tmp;k>i;k--) {
                swap(str[k],str[k-1]);
            }
            m -= cnt;
        }
        cout << str << endl;
    }
}

I.迪迦的隕石雨

題解

整體二分,樹狀陣列實作區間修改單點查詢,然后注意修改是在環上的,

標程
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
typedef long long LL;
LL c[300005];
vector<int> G[300005];
int L[300005], R[300005], val[300005];
int P[300005], ans[300005];
int q[300005], q1[300005], q2[300005];
int n, m, k, now = 0;

inline int read() {
	int sum = 0;
	char ch = 0;

	while (ch > '9' || ch < '0')
		ch = getchar();

	while (ch >= '0' && ch <= '9')
		sum = sum * 10 + ch - '0', ch = getchar();

	return sum;
}
inline int lowbit(int x) {
	return x & -x;
}
inline void add(int x, int v) {
	for (; x <= m; x += lowbit(x))
		c[x] += v;
}
inline LL query(int x) {
	LL tmp = 0;

	for (; x > 0; x -= lowbit(x))
		tmp += c[x];

	return tmp;
}
inline void update(int l, int r, int v) {
	if (l <= r)
		add(l, v), add(r + 1, -v);
	else
		add(1, v), add(r + 1, -v), add(l, v), add(m + 1, -v);
}
void solve(int l, int r, int s, int t) {  /// lr流星雨區間 mid答案 st未解決的國家區間
	if (l > r || s > t)
		return;

	if (l == r) {
		for (int i = s; i <= t; ++ i)
			ans[q[i]] = l;

		return;
	}

	int mid = (l + r) >> 1;

	///now是當前次數,mid是列舉次數
	while (now < mid)
		now++, update(L[now], R[now], val[now]);

	while (now > mid)
		update(L[now], R[now], -val[now]), now--;

	int s1 = 0, s2 = 0;

	///劃分籃子
	for (int i = s; i <= t; ++ i) {
		LL tmp = 0;
		int x = q[i];

		for (int j = 0; j < G[x].size(); j++) {
			tmp += query(G[x][j]);

			if (tmp >= P[x])
				break;
		}

		if (tmp >= P[x])
			q1[++s1] = x; ///這個國家已經滿足需求,放入左籃子
		else
			q2[++s2] = x;///沒滿足就放入右邊的籃子
	}

	///放入籃子
	for (int i = 1; i <= s1; i++)
		q[s + i - 1] = q1[i];

	for (int i = 1; i <= s2; i++)
		q[s + s1 + i - 1] = q2[i];

	solve(l, mid, s, s + s1 - 1);
	solve(mid + 1, r, s + s1, t);
}
int main() {
	n = read(), m = read();

	for (int i = 1; i <= m; i++)
		G[read()].push_back(i);

	for (int i = 1; i <= n; i++)
		P[i] = read(), q[i] = i;

	k = read();

	for (int i = 1; i <= k; i++)
		L[i] = read(), R[i] = read(), val[i] = read();

	solve(1, k + 1, 1, n);

	for (int i = 1; i <= n; i++) {
		if (ans[i] == k + 1)
			printf("NO\n");
		else
			printf("%d\n", ans[i]);
	}

	return 0;
}

J.新生賽的場外求助

題解

設負數數量為cnt

  1. n%2 == 1
    1.1. cnt <= n/2,先將(全部負數)與正數取反,得到 cnt>=n/2;
    1.2. cnt > n/2,每次取(n/2個負數)與正數取反,每次增加1個負數,直到cnt==n;
    1.3. cnt > n,先對n個負數取反,得到cnt<n(情況1.1,1.2);
    1.4. cnt == n,直接全部負數取反,陣列全為正數;
    可見最終陣列將全部都為正數
  2. n%2 == 0
    與第一種情況n%2 == 1類似,不過由于每次取((n/2-1)個負數)與正數取反時增加的負數數量是2個,
    所以當cnt%2 == 1,即奇數時,最侄訓留下一個負數,我們就將絕對值最小的給到這個負數
    當cnt%2==0,即偶數時,則可以將陣列每個數都該變成正數
標程
#include <bits/stdc++.h>
using namespace std;
const int N = 200100;
int a[N];
int main(){
	int n;
	scanf("%d", &n);
	long long sum = 0, cnt = 0;
	int minn = 0x3f3f3f3f;
	for(int i = 0; i < 2*n-1; i++) {
		scanf("%d", &a[i]);
		sum += abs(a[i]);
		minn = min(minn, abs(a[i]));
		if(a[i] < 0){
			cnt++;
		}
	}
	sort(a, a + 2*n-1);
	if(n % 2){
		printf("%lld", sum);
	} else {
		printf("%lld", cnt % 2 ? sum - minn - minn : sum);
	}
} 

K.測驗接待員

題解

拉格朗日四平方和定理:每個正整數均可表示為4個整數的平方和,如果不能表示成更少的數的平方之和,必定滿足(4^a)*(8m+7)
該定理就是說:一個正整數最少只能被表示為4個整數的平方和的充要條件是該數滿足(4^a) *(8m+7)
若一個數最少由1個數的平方組成,我們直接sqrt就可以得到
若最少由2個陣列成,因為數的范圍1e15,我們可以sqrt后列舉得到
而若最少只能由4個數,那么他肯定是滿足(4^a) *(8m+7)的數,
那么剩下的就是最少由3個數的平方和組成的了

標程
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
	ll n;
	scanf("%lld",&n);
	ll k1 = sqrt(n);
	if(k1 * k1 == n) {
		printf("1");
		return 0;
	}
	ll m;
	for(ll x = k1; x >= 1; x--) {
		m = n - x * x;
		ll k2 = sqrt(m);
		if(x * x + k2 * k2 == n) {
			printf("2");
			return 0;
		}
	}
	m = n;
	while(m % 4 == 0) m /= 4;
	if(m % 8 == 7) {
		printf("4");
		return 0;
	}
	printf("3");
	return 0;
}

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

標籤:其他

上一篇:pyqt5實體——pycharm實作猜數游戲

下一篇: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)

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

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的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