\(2019-2020\ ACM-ICPC\ Brazil\ Subregional\ Programming\ Contest\)

\(A.Artwork\)

并查集,把检测区域能在一起的检测器放在一个并查集里,然后判断是否有一个集合能够封住左边和上边的其中一个还有右边和下边的其中一个即可

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
const int MAXN = 1111;
const int INF = 0x3f3f3f3f;
int n,m,k,root[MAXN],tot;
pair<pair<int,int>,int> sensor[MAXN];
vector<int> SET[MAXN];
map<int,int> mp;
int findx(int x){
if(x!=root[x]) root[x] = findx(root[x]);
return root[x];
}
int dist(const pair<int,int> &A, const pair<int,int> &B){
return (A.first-B.first)*(A.first-B.first)+(A.second-B.second)*(A.second-B.second);
}
int main(){
scanf("%d %d %d",&n,&m,&k);
for(int i = 1; i <= k; i++) scanf("%d %d %d",&sensor[i].first.first,&sensor[i].first.second,&sensor[i].second);
for(int i = 1; i <= k; i++) root[i] = i;
for(int i = 1; i <= k; i++) for(int j = i+1; j <= k; j++){
int fa = findx(i);
int fb = findx(j);
if(fa==fb) continue;
if((sensor[i].second+sensor[j].second)*(sensor[i].second+sensor[j].second)>=dist(sensor[i].first,sensor[j].first)){
root[fa] = fb;
}
}
for(int i = 1; i <= k; i++){
if(!mp.count(findx(i))) mp.insert(make_pair(findx(i),++tot));
SET[mp.at(findx(i))].emplace_back(i);
}
bool ok = true;
for(int i = 1; i <= tot; i++){
int u = -INF, d = INF, l = INF, r = -INF;
for(auto p : SET[i]){
u = max(u,sensor[p].first.second+sensor[p].second);
d = min(d,sensor[p].first.second-sensor[p].second);
l = min(l,sensor[p].first.first-sensor[p].second);
r = max(r,sensor[p].first.first+sensor[p].second);
}
if((u>=m||l<=0)&&(d<=0||r>=n)){
ok = false;
break;
}
}
puts(ok?"S":"N");
return 0;
}

\(B.Buffoon\)

签到

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int a[N],n,maxi;
int main(){
cin>>n;
for(int i=1;i<=n;++i) cin >> a[i], maxi = max(maxi,a[i]);
if(maxi==a[1]) cout << "S";
else cout << "N";
return 0;
}

\(C.Crossings\ With\ Danger\)

\(D.Denouncing Mafia\)

树形DP+优先队列 对于每个节点记录它的最深节点的位置,把链长为关键字丢到优先队列中,每次找最长的没有被遍历过的链

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
const int MAXN = 1e5+7;
int n,m,par[MAXN],depth[MAXN],vis[MAXN];
vector<int> G[MAXN];
priority_queue<pair<int,pair<int,int>>,vector<pair<int,pair<int,int>>>,less<pair<int,pair<int,int>>>> que;
int dfs(int u){
depth[u] = depth[par[u]]+1;
int maxdep = u;
for(int v : G[u]){
int p = dfs(v);
maxdep = depth[maxdep]<depth[p]?p:maxdep;
}
que.push(make_pair(depth[maxdep]-depth[u]+1,make_pair(maxdep,u)));
return maxdep;
}
int main(){
scanf("%d %d",&n,&m);
for(int i = 2; i <= n; i++){
scanf("%d",&par[i]);
G[par[i]].emplace_back(i);
}
dfs(1);
int ans = 0;
while(!que.empty()&&m){
auto p = que.top();
que.pop();
if(vis[p.second.second]) continue;
m--;
ans += p.first;
while(p.second.first!=par[p.second.second]){
vis[p.second.first] = 1;
p.second.first = par[p.second.first];
}
}
printf("%d\n",ans);
return 0;
}

\(E.Exhibition\ of\ Clownfish\)

\(F.Forests\ in\ Danger\)

二分河流宽度,然后得到的矩形先和大矩形求交,再把所有矩形求面积并即可

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
using LL = int_fast64_t;
const int MAXN = 1e5+7;
struct Rectangle{
int x1,y1,x2,y2;
Rectangle (int _x1 = 0, int _y1 = 0, int _x2 = 0, int _y2 = 0){
x1 = _x1; y1 = _y1;
x2 = _x2; y2 = _y2;
}
Rectangle intersect(const Rectangle &rhs){
int nx1 = max(x1,rhs.x1);
int ny1 = max(y1,rhs.y1);
int nx2 = min(x2,rhs.x2);
int ny2 = min(y2,rhs.y2);
return Rectangle(nx1,ny1,nx2,ny2);
}
}river[MAXN],Forest;
vector<pair<pair<int,int>,int> > line[MAXN];
int n,p;
struct SegmentTree{
int sz[MAXN<<2],cover[MAXN<<2],l[MAXN<<2],r[MAXN<<2];
#define ls(rt) rt << 1
#define rs(rt) rt << 1 | 1
void pushup(int rt){
if(l[rt]+1==r[rt]){
if(cover[rt]) sz[rt] = 1;
else sz[rt] = 0;
return;
}
if(cover[rt]) sz[rt] = r[rt] - l[rt];
else sz[rt] = sz[ls(rt)] + sz[rs(rt)];
}
void build(int L, int R, int rt){
l[rt] = L, r[rt] = R;
sz[rt] = cover[rt] = 0;
if(L+1==R) return;
int mid = (L+R) >> 1;
build(L,mid,ls(rt));
build(mid,R,rs(rt));
}
void update(int L, int R, int rt, int x){
if(l[rt]>=R || L>=r[rt]) return;
if(L<=l[rt] && r[rt]<=R){
cover[rt] += x;
pushup(rt);
return;
}
update(L,R,ls(rt),x);
update(L,R,rs(rt),x);
pushup(rt);
}
int query(){ return sz[1]; }
}ST;
bool check(int mid){
for(int i = 0; i < MAXN; i++) line[i].clear();
for(int i = 1; i <= n; i++){
Rectangle tp(river[i].x1-mid,river[i].y1-mid,river[i].x2+mid,river[i].y2+mid);
tp = tp.intersect(Forest);
line[tp.y1].emplace_back(make_pair(make_pair(tp.x1,tp.x2),1));
line[tp.y2].emplace_back(make_pair(make_pair(tp.x1,tp.x2),-1));
}
LL area = 0;
ST.build(0,Forest.x2+1,1);
for(int i = Forest.y1; i <= Forest.y2; i++){
area += ST.query();
for(auto p : line[i]) ST.update(p.first.first,p.first.second,1,p.second);
}
return area*100 >= (LL(Forest.x2)-Forest.x1)*(Forest.y2-Forest.y1)*p;
}
int solve(){
int l = 1, r = MAXN;
while(l<=r){
int mid = (l+r) >> 1;
if(check(mid)) r = mid - 1;
else l = mid + 1;
}
return l;
}
int main(){
scanf("%d",&n);
for(int i = 1; i <= n; i++){
scanf("%d %d %d %d",&river[i].x1,&river[i].y1,&river[i].x2,&river[i].y2);
if(river[i].x1>river[i].x2) swap(river[i].x1,river[i].x2);
if(river[i].y1>river[i].y2) swap(river[i].y1,river[i].y2);
}
scanf("%d",&p);
scanf("%d %d %d %d",&Forest.x1,&Forest.y1,&Forest.x2,&Forest.y2);
if(Forest.x1>Forest.x2) swap(Forest.x1,Forest.x2);
if(Forest.y1>Forest.y2) swap(Forest.y1,Forest.y2);
printf("%d\n",solve());
return 0;
}

\(G.Getting\ Confidence\)

将乘法变成对数的加法然后就是KM匹配的模板了

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
const int MAXN = 111;
const int INF = 0x3f3f3f3f;
int n,LX[MAXN],LY[MAXN],visx[MAXN],visy[MAXN],match[MAXN],slack[MAXN],G[MAXN][MAXN];
bool dfs(int x){
visx[x] = 1;
for(int y = 1; y <= n; y++){
if(visy[y]) continue;
int gap = LX[x] + LY[y] - G[x][y];
if(!gap){
visy[y] = 1;
if(match[y]==-1||(!visx[match[y]]&&dfs(match[y]))){
match[y] = x;
return true;
}
}
else slack[y] = min(slack[y],gap);
}
return false;
}
void KM_match(){
memset(match,255,sizeof(match));
for(int i = 1; i <= n; i++) LX[i] = *max_element(G[i]+1,G[i]+1+n);
memset(LY,0,sizeof(LY));
for(int i = 1; i <= n; i++){
memset(slack,INF,sizeof(slack));
while(true){
memset(visx,0,sizeof(visx));
memset(visy,0,sizeof(visy));
if(dfs(i)) break;
int d = INF;
for(int j = 1; j <= n; j++) if(!visy[j]) d = min(d,slack[j]);
for(int j = 1; j <= n; j++) if(visx[j]) LX[j]-=d;
for(int j = 1; j <= n ;j++) if(visy[j]) LY[j]+=d;
else slack[j]-=d;
}
}
for(int i = 1; i <= n; i++) printf("%d ",match[i]);
}
int main(){
scanf("%d",&n);
for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++){
scanf("%d",&G[i][j]);
G[i][j] = log(G[i][j])*1000000;
}
KM_match();
puts("");
return 0;
}

\(H.Hour\ for\ a\ Run\)

签到

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
int n,m;
int main(){
____();
cin >> n >> m;
for(int i = 1; i < 10; i++) cout << int(ceil((n*m*i)/10.0)) << ' '; cout << endl;
return 0;
}

\(I.Interplanetary\)

离线之后按顺序加点跑floyd

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
const int MAXN = 1e5+7;
const int INF = 0x3f3f3f3f;
struct Query{
int u,v,k,id;
Query(){}
Query(int u, int v, int k, int id){
this->u = u;
this->v = v;
this->k = k;
this->id = id;
}
}Q[2][MAXN];
int n,m,qs,res[MAXN],temp[MAXN],initG[444][444],q[2],G[444][444];
void solve(){
vector<int> tmp(n),nodes(n);
for(int i = 0; i < n; i++){
tmp[i]=temp[i+1];
nodes[i]=i+1;
}
sort(tmp.begin(),tmp.end());
tmp.erase(unique(tmp.begin(),tmp.end()),tmp.end());
function<bool(int,int)> cmp[2] = {
[](int x, int y){ return temp[x] < temp[y]; },
[](int x, int y){ return temp[x] > temp[y]; }
};
for(int op = 0; op <= 1; op++){
for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) G[i][j] = initG[i][j];
sort(nodes.begin(),nodes.end(),cmp[op]);
if(!op) sort(tmp.begin(),tmp.end(),less<int>());
else sort(tmp.begin(),tmp.end(),greater<int>());
sort(Q[op]+1,Q[op]+1+q[op],[](const Query &x, const Query &y){ return x.k < y.k; });
for(int i = 1, cur = 0; i <= q[op]; i++){
while(cur<n){
if((!op&&temp[nodes[cur]]>tmp[Q[op][i].k-1])||(op&&temp[nodes[cur]]<tmp[Q[op][i].k-1])) break;
int node = nodes[cur++];
for(int u = 1; u <= n; u++) for(int v = 1; v <= n; v++)
G[u][v] = G[v][u] = min(G[u][v],G[u][node]+G[node][v]);
}
int u = Q[op][i].u, v = Q[op][i].v, ID = Q[op][i].id;
res[ID] = G[u][v]==INF?-1:G[u][v];
}
}
}
int main(){
scanf("%d %d",&n,&m);
for(int i = 1; i <= n; i++) scanf("%d",&temp[i]);
memset(initG,INF,sizeof(initG));
for(int i = 1; i <= n; i++) initG[i][i] = 0;
for(int i = 1; i <= m; i++){
int u, v, d;
scanf("%d %d %d",&u,&v,&d);
initG[u][v] = initG[v][u] = d;
}
scanf("%d",&qs);
for(int i = 1; i <= qs; i++){
int u, v, k, op;
scanf("%d %d %d %d",&u,&v,&k,&op);
Q[op][++q[op]] = Query(u,v,k,i);
}
solve();
for(int i = 1; i <= qs; i++) printf("%d\n",res[i]);
return 0;
}

\(J.Jar\ of\ Water\ Game\)

按题意模拟即可

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
int n,m;
int dec(char ch){
if(ch=='A') return 1;
else if(ch=='D') return 10;
else if(ch=='Q') return 11;
else if(ch=='J') return 12;
else if(ch=='K') return 13;
else return ch-'0';
}
struct P{
bool wildcard,tag;
vector<int> card;
int get(){
if(wildcard){
if(tag) tag = false;
else{
wildcard = false;
return -1;
}
}
map<int,int> cards;
for(int c : card) cards[c]++;
int minn = 6;
for(auto p : cards) minn = min(minn,p.second);
for(auto p : cards){
if(p.second!=minn) continue;
card.erase(find(card.begin(),card.end(),p.first));
return p.first;
}
}
void insert(int c){
if(c==-1) wildcard = tag = true;
else card.emplace_back(c);
}
}player[20];
bool check(int ID){
if(player[ID].wildcard) return false;
if(player[ID].card[0]!=player[ID].card[1]) return false;
if(player[ID].card[1]!=player[ID].card[2]) return false;
if(player[ID].card[2]!=player[ID].card[3]) return false;
return true;
}
int main(){
scanf("%d %d",&n,&m);
for(int i = 1; i <= n; i++){
char cd[10];
scanf("%s",cd);
player[i].card.resize(4);
for(int k = 0; k < 4; k++) player[i].card[k] = dec(cd[k]);
if(i==m) player[i].wildcard = player[i].tag = true;
else player[i].wildcard = player[i].tag = false;
}
for(int i = 1; i <= n; i++) if(check(i)) return printf("%d\n",i),0;
int now = m;
while(true){
int nxt = now+1==n+1?1:now+1;
player[nxt].insert(player[now].get());
if(check(now)) break;
now = nxt;
}
printf("%d\n",now);
return 0;
}

\(K.Keep\ Calm\ and\ Sell\ Balloons\)

矩阵快速幂,要找出递推公式

首先我们令\(f[n]\)表示\(2·n\)的矩阵从一个角开始走回到它垂直位置的方案数,可以发现\(f[n]=2·f[n-1], f[1]=1\),即\(f[n]=2^{n-1}\)

现在我们定义\(g[n]\)为从矩阵的一个角开始走走完整个矩阵的方案数,模拟一下方案数可以找到递推式:\(g[n]=f[n]+2·g[n-1]+4·g[n-2]\)

即\(g[n]\ =\ 2·g[n-1]+4·g[n-2]+2^{n-1},g[0]=0,g[1]=1\)

\(f[n]\)容易得出,\(2·g[n-1]\)的情况在第一张图,\(4·g[n-2]\)的情况在第二张图





接下来我们定义\(h[n]\)为从矩阵的中间出发走完整个矩阵的方案数,可以把从中间出发走完整个矩阵分成两部分:

  • 先从一边走回到垂直位置
  • 再走完另一边

可以得到如下递推式:

\[h[n]=2·2·\sum^{n-1}_{k=2}2·f[k]·g[n-k]=\sum^{n-1}_{k=2}2^{k+2}·g[n-k]
\]

其中第一个\(2\)是因为有上下两块,第二个\(2\)是因为可以先向右回到垂直位置再走完左边,也可以先向左回到垂直位置再走完右边,方案是对称的

\[h[n-1]=\sum^{n-2}_{k=2}2^{k+2}·g[n-1-k]
\]
\[=\frac{\sum^{n-2}_{k=2}2^{k+3}·g[n-1-k]}{2}
\]
\[=\frac{\sum^{n-1}_{k=3}2^{k+2}·g[n-k]}{2}
\]

然后找一下\(h[n]\)和\(h[n-1]\)的关系

\[即:h[n]=2·h[n-1]+16·g[n-2],h[0]=h[1]=0
\]

所以最后答案就是\(h[n]+4·g[n]\)

!注意啊要从\(2\)开始递推,\(g[2] \ne 2·g[1]+4·g[0]+f[2]\)

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
using LL = int_fast64_t;
const LL MOD = 1e9+7;
struct Matrix{
LL m[6][6];
Matrix(int init = 1){
for(int i = 1; i <= 5; i++) for(int j = 1; j <= 5; j++){
if(i!=j) m[i][j] = 0;
else m[i][j] = init;
}
}
Matrix operator*(const Matrix rhs){
Matrix res(0);
for(int i = 1; i <= 5; i++){
for(int j = 1; j <= 5; j++){
for(int k = 1; k <= 5; k++)
res.m[i][j] = (res.m[i][j]+m[i][k]*rhs.m[k][j])%MOD;
}
}
return res;
}
Matrix operator*=(const Matrix rhs){
return *this = (*this)*rhs;
}
};
Matrix qpow(Matrix A, LL b){
Matrix res(1);
while(b){
if(b&1) res*=A;
b >>= 1;
A*=A;
}
return res;
}
LL n;
int main(){
scanf("%I64d",&n);
if(n==1) return puts("2"),0;
Matrix mat(0);
mat.m[1][1] = 2;
mat.m[1][3] = 16;
mat.m[2][2] = 2;
mat.m[2][3] = 4;
mat.m[2][4] = 2;
mat.m[3][2] = 1;
mat.m[4][4] = 2;
mat.m[5][5] = 1;
mat = qpow(mat,n-2);
printf("%I64d\n",(6*mat.m[1][2]+mat.m[1][3]+2*mat.m[1][4]+mat.m[1][5]+4*(6*mat.m[2][2]+mat.m[2][3]+2*mat.m[2][4]+mat.m[2][5]))%MOD);
return 0;
}

\(L.Less\ Coin\ Tosses\)

答案就是\(C(n,0)%2+C(n,1)%2+...+C(n,n-1)%2+C(n,n-1)%2\)

根据卢卡斯定理,答案就是2的\(N\)二进制位中1的个数次幂

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
int_fast64_t n;
#define lowbit(x) ((x)&(-x))
int main(){
scanf("%I64d",&n);
int_fast64_t res = 1;
while(n) res <<= 1,n-=lowbit(n);
printf("%I64d\n",res);
return 0;
}

\(M.Maratona\ Brasileira\ de\ Popcorn\)

二分答案判定即可

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
const int MAXN = 1e5+7;
using LL = int_fast64_t;
int n,c,t,A[MAXN];
bool check(int mid){
int cur = 0, tot = 1;
for(int i = 1; i <= n; i++){
if(mid*1ll*t<A[i]) return false;
if(mid*1ll*t>=cur+A[i]) cur+=A[i];
else{
tot++;
cur = A[i];
}
}
return tot<=c;
}
int solve(){
int l = 1, r = 1e9+7;
while(l<=r){
int mid = (l+r) >> 1;
if(check(mid)) r = mid - 1;
else l = mid + 1;
}
return l;
}
int main(){
scanf("%d %d %d",&n,&c,&t);
for(int i = 1; i <= n; i++) scanf("%d",&A[i]);
printf("%d\n",solve());
return 0;
}

2019-2020 ACM-ICPC Brazil Subregional Programming Contest (11/13)的更多相关文章

  1. (寒假GYM开黑)2018-2019 ACM-ICPC Brazil Subregional Programming Contest

    layout: post title: 2018-2019 ACM-ICPC Brazil Subregional Programming Contest author: "luowenta ...

  2. 2018-2019 ACM-ICPC Brazil Subregional Programming Contest PART (10/13)

    $$2018-2019 ACM-ICPC Brazil Subregional Programming Contest$$ \(A.Slackline\ Adventure\) \(B.Marbles ...

  3. 2018-2019 ACM-ICPC Brazil Subregional Programming Contest

    A:留坑 B:二维sg函数,特判边界情况 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) / ...

  4. Gym.101908 Brazil Subregional Programming Contest(寒假自训第六场)

    这几天睡眠时间都不太够,室友晚上太会折腾了,感觉有点累,所以昨天的题解也没写,看晚上能不能补起来. B . Marbles 题意:给定N组数(xi,yi),玩家轮流操作,每次玩家可以选择其中一组对其操 ...

  5. 2013-2014 ACM-ICPC Brazil Subregional Programming Contest 题解

    [题目链接] 这场比赛题面英文都好长... ... A - Zero or One 模拟. #include <bits/stdc++.h> using namespace std; in ...

  6. ACM ICPC, JUST Collegiate Programming Contest (2018) Solution

    A:Zero Array 题意:两种操作, 1 p v  将第p个位置的值改成v  2  查询最少的操作数使得所有数都变为0  操作为可以从原序列中选一个非0的数使得所有非0的数减去它,并且所有数不能 ...

  7. ACM ICPC, Amman Collegiate Programming Contest (2018) Solution

    Solution A:Careful Thief 题意:给出n个区间,每个区间的每个位置的权值都是v,然后找长度为k的区间,使得这个区间的所有位置的权值加起来最大,输出最大权值, 所有区间不重叠 思路 ...

  8. Codeforces Gym101473 A.Zero or One (2013-2014 ACM-ICPC Brazil Subregional Programming Contest)

    代码: #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #i ...

  9. Codeforces Gym101473 F.Triangles-前缀和 (2013-2014 ACM-ICPC Brazil Subregional Programming Contest)

    前缀和. 代码: 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include< ...

随机推荐

  1. LeetCode24 两两交换链表中的节点

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的 ...

  2. js的函数-function

    function函数 function的英文是[功能],[数] 函数:职责:盛大的集会的意思 在js里,就是函数的意思.在Java里叫做方法. 定义函数 function fun(参数){ //函数体 ...

  3. MySQL的索引优化分析(一)

    一.SQL分析 性能下降.SQL慢.执行时间长.等待时间长 查询语句写的差 索引失效关联查询太多join(设计缺陷) 单值索引:在user表中给name属性创建索引,create index idx_ ...

  4. Java基础学习总结笔记

    Java基础 Java常用内存区域 栈内存空间:存储引用堆内存空间的地址 堆内存空间:保存每个对象的具体属性内容 全局数据区:保存static类型的属性 全局代码区:保存所有的方法定义 修饰符 权限修 ...

  5. P2979 [USACO10JAN]奶酪塔Cheese Towers(完全背包,递推)

    题目描述 Farmer John wants to save some blocks of his cows' delicious Wisconsin cheese varieties in his ...

  6. 登陆到 SAP 系统后的用户出口

    增强类型:smod 增强名称:SUSR0001 组件(退出功能模块):EXIT_SAPLSUSF_001 功能:用户每次登陆SAP系统后都会调用这个SUSR0001增强,可以在FUNCTION EXI ...

  7. 【Android】编译报错 Annotation processors must be explicitly declared now 解决方案

    问题 在网上下载一个demo,因为版本久远,里面添加了本地 Butter Knife 的jar包,在编译时报错 Annotation processors must be explicitly dec ...

  8. 2021年官网下载各个版本JDK最全版与官网查阅方法

    版本说明 1.安装部署JDK (1)环境 (2)官网下载JDK 由于官网的地址会随着时间的修改而更改修改下载地址,现在讲述下通用的界面操作下载JDK,以后JDK收费更严重,估计就只能下载开源的了. A ...

  9. 云原生流水线 Argo Workflow 的安装、使用以及个人体验

    注意:这篇文章并不是一篇入门教程,学习 Argo Workflow 请移步官方文档 Argo Documentation Argo Workflow 是一个云原生工作流引擎,专注于编排并行任务.它的特 ...

  10. 使用Bat自动打包并通过FTP发送到备份服务器——实战测试

    这个bat文件要求本地安装有winrar解压软件,位置是:C:\Program Files\WinRAR\WinRAR.exe 如果执行报错,请检查你复制我的代码是否有问题,有些复制粘贴进去后因为一些 ...