CodeforcesRound #264 (Div.2)

Source: Internet
Author: User
CodeforcesRound #264 (Div.2) question link A: Pay attention to the situation where the specific sentence is correct. For others, judge the maximum record one by one. B: scan it once. If it is not enough, use the money to fill it out, record excess energy C: process the diagonal lines of the primary and secondary nodes, and then select the largest one for both black and white. D: convert to the longest path of DAG. Each number record

Codeforces role #264 (Div. 2) question link A: Pay attention to the situation where the specific sentence is correct. For others, you can judge the maximum value of the record one by one. B: scan it once. You can fill in the amount of money if it is not enough, record excess energy C: process the diagonal lines of the primary and secondary nodes, and then select the largest one for both black and white. D: convert to the longest path of DAG. Each number record

Codeforces Round #264 (Div. 2)

Question Link

A: Pay attention to the situation where the specific sentence is correct. Others can judge the maximum value of the record one by one.

B: scan it again. If you don't have enough money to fill it out, record the excess energy.

C: process the diagonal lines of the primary and secondary nodes. Then, you can select only one of the largest ones for the blacklist.

D: The longest path to the DAG. Each number records the position in each sequence. If a number can be placed, so it must be that the numbers in each sequence are behind the last digit.

E

Code:

A:

#include 
 
  #include 
  
   #include using namespace std;int n, s;int main() {scanf("%d%d", &n, &s);int x, y;int flag = 1;int ans = 0;for (int i = 0; i < n; i++) {scanf("%d%d", &x, &y);if (x == s) {if (y == 0) {ans = max(ans, y);flag = 0;}}else if (x < s) {ans = max(ans, (100 - y) % 100);flag = 0;}}if (flag) printf("-1\n");else printf("%d\n", ans);return 0;}
  
 

B:

#include 
 
  #include 
  
   const int N = 100005;typedef long long ll;int n;ll h[N];int main() {scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%lld", &h[i]);ll now = 0;ll ans = 0;for (int i = 1; i <= n; i++) {if (h[i] > h[i - 1]) {ll need = h[i] - h[i - 1];if (now >= need) {now -= need;} else {ans += need - now;now = 0;}} else {now += h[i - 1] - h[i];}}printf("%lld\n", ans);return 0;}
  
 

C:

#include 
 
  #include 
  
   const int N = 2005;typedef long long ll;int n;ll g[N][N], zhu[N + N], fu[N + N];int main() {scanf("%d", &n);for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)scanf("%lld", &g[i][j]);for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {zhu[i - j + n] += g[i][j];fu[i + j] += g[i][j];}}ll b = -1, w = -1;int bx, by, wx, wy;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {ll sum = zhu[i - j + n] + fu[i + j] - g[i][j];if ((i + j) % 2 == 0) {if (b < sum) {b = sum;bx = i + 1;by = j + 1;}}else {if (w < sum) {w = sum;wx = i + 1;wy = j + 1;}}}}printf("%lld\n", b + w);printf("%d %d %d %d\n", bx, by, wx, wy);return 0;}
  
 

D:

#include 
 
  #include 
  
   #include using namespace std;const int N = 1005;struct Num {int v[10], la;} num[N];bool cmp(Num a, Num b) {return a.la < b.la;}int n, k, dp[N][N];bool judge(int i, int j) {for (int x = 0; x < k; x++) {if (num[i].v[x] < num[j].v[x]) return false;}return true;}int main() {scanf("%d%d", &n, &k);for (int i = 0; i < k; i++) {int tmp;for (int j = 1; j <= n; j++) {scanf("%d", &tmp);num[tmp].v[i] = j;}}for (int i = 0; i <= n; i++) {int maxv = 0;for (int j = 0; j < k; j++) {maxv = max(maxv, num[i].v[j]);}num[i].la = maxv;}sort(num, num + n + 1, cmp);/*for (int i = 0; i <= n; i++) {for (int j = 0; j < k; j++) {printf("%d ", num[i].v[j]);}printf("\n");}*/for (int i = 1; i <= n; i++) {for (int j = 0; j < i; j++) {dp[i][j] = max(dp[i][j], dp[i - 1][j]);if (judge(i, j)) {dp[i][i] = max(dp[i][i], dp[i][j] + 1);}}}int ans = 0;for (int i = 0; i <= n; i++)ans = max(ans, dp[n][i]);printf("%d\n", ans);return 0;}
  
 

E:

#include 
 
  #include 
  
   #include 
   
    using namespace std;const int N = 100005;int n, q, val[N], f[N];vector
    
      g[N];void dfs(int u, int fa) {f[u] = fa;for (int i = 0; i < g[u].size(); i++) {int v = g[u][i];if (v == fa) continue;dfs(v, u);}}int gcd(int a, int b) {while (b) {int tmp = a % b;a = b;b = tmp;}return a;}int query(int u) {int v = val[u];u = f[u];while (u) {if (gcd(val[u], v) > 1) return u;u = f[u];}return -1;}int main() {scanf("%d%d", &n, &q);for (int i = 1; i <= n; i++)scanf("%d", &val[i]);int u, v;for (int i = 1; i < n; i++) {scanf("%d%d", &u, &v);g[u].push_back(v);g[v].push_back(u);}dfs(1, 0);int tp, a, b;while (q--) {scanf("%d%d", &tp, &a);if (tp == 1) {printf("%d\n", query(a));} else {scanf("%d", &b);val[a] = b;}}return 0;}
    
   
  
 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.