voidsol(){ int a, b, c, t; cin >> a >> b >> c; t = min(min(a, b), c); a -= t, b -= t, c -= t; if (a >= 2 || b >= 2 || c >= 2){ cout << "NO" << endl; } else{ cout << "YES" << endl; } }
voidsol(){ int n, a[N], pre; ls ans = 0; map<int, int> mp; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++){ pre = 0; auto it = mp.find(a[i]); if (it != mp.end()) pre = it->second; ans += (1LL*i-pre)*1LL*(n-i+1)*(n-i+2)/2; mp[a[i]] = i; } cout << ans << endl; }
voidsol(){ int n, m; cin >> n >> m; int cnt0 = 0, cnt1 = 0; vector<string> s(n); for (int i = 0 ; i < n; i++){ cin >> s[i]; for (int j = 0; j < m; j++) if (s[i][j] == '0') cnt0++; else cnt1++; } for (int i = 0 ; i < n; i++) { for (int j = 0; j < m; j++) if (s[i][j] == '0') cout << "NY"[cnt0>=2]; else cout << "NY"[cnt1>=2]; cout << endl; } }
int head[N], ed[N], nxt[N], idx; int eg[N], lev[N], vis[N], ans[N], dist[N]; int q[NN];
voidadd(int a, int b){ ed[idx] = b; nxt[idx] = head[a]; head[a] = idx++; }
voidsol(){ //邻接表存储图 idx = 0; // memset(head, -1, sizeof(head)); // memset(eg, 0, sizeof(eg)); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++){ head[i] = -1; eg[i] = 0; } for (int i = 1; i <= m; i++){ int u, v; cin >> u >> v; add(u, v); add(v, u); eg[u]++; eg[v]++; } //统计度,排序去重 vector<int> dege; for (int i = 1; i <= n; i++) dege.push_back(eg[i]); sort(dege.begin(), dege.end()); dege.erase(unique(dege.begin(), dege.end()), dege.end()); int len = dege.size(); //标记级别,统计级别对应编号 vector<vector<int> >tongji(len + 1); for (int i = 1; i <= n; i++){ int k = lower_bound(dege.begin(), dege.end(), eg[i]) - dege.begin(); lev[i] = k; tongji[k].push_back(i); } //对每个级别进行bfs,迭代比其级别小的节点到这个级别节点的最短距离 for (int i = 1; i <= n; i++) ans[i] = inf; int v = 0; for (int i = len - 1; i >= 1; i--){ ++v; //vis的状态,每次变化,vis全局数组不用memset初始化 //多源bfs int hh = 0, tt = -1; for (auto &k : tongji[i]){ q[++tt] = k; vis[k] = v; dist[k] = 0;//自己距离自己0距离 } while (hh <= tt){ int s = q[hh++]; if (lev[s] < i) ans[s] = min(ans[s], dist[s]); for (int j = head[s]; j != -1; j = nxt[j]){ int p = ed[j]; if (lev[p] < i && vis[p] != v){ vis[p] = v; dist[p] = dist[s] + 1; q[++tt] = p; } } } } //输出 for (int i = 1; i <= n; i++) if (ans[i] == inf) cout << -1 << ' '; else cout << ans[i] << ' '; }