2019 ICPC Asia-East Continent Final(A,M)题解

简介: 2019 ICPC Asia-East Continent Final(A,M)题解

A.

题意就是输入n,m,代表行含n格,列含m格,让我们在这个网格里面找线段,要求线段中点是交叉点;求有几个线段。


题解;


我们可以分析知道,把每一行每一列的含有合法的线段找出来,然后找出类似2*2,4*4的正方形的所有个数*2;


全部加起来就是答案。

#include <bits/stdc++.h>
using namespace std;
long long sum = 0, sum1 = 0, sum2 = 0;
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 2; i <= n; i += 2) {
    sum += n + 1 - i;
  }
  for (int i = 2; i <= m; i += 2) {
    sum1 += m + 1 - i;
  }
  sum2 += sum * (m + 1) + sum1 * (n + 1);
  for (int i = 1; i <= n; i++) {
    sum2 += sum1 * (i / 2) * 2;
  }
  cout << sum2 << endl;
}


M.


题意就是给出a排列,b排列,我们的结果序列可以加ai,但是如果i>2,j>2;i^k=j,我们的结果就要减bj,求结果最大化。


我们可以用2,3,5……的的K次方来搞在每一个里面找到最大的数,然后加起来。


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 7;
long long a[maxn], b[maxn], vis[maxn] = {0}, c[maxn], d[maxn];
int pd(int x, int  y) {
  for (ll i = x; i <= y; i *= x) {
    if (i == y) {
      return 1;
    }
  }
  return 0;
}
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  for (int i = 1; i <= n; i++) {
    cin >> b[i];
  }
  long long sum1 = 0;
  ll maxn;
  sum1 = a[1];
  for (int i = 2; i <= n; i++) {
    long long add = 0;
    maxn = 0;
    if (!vis[i]) {
      for (ll j = i; j <= n; j *= i) {
        c[add++] = j;
        vis[j] = 1;
      }
      for (int g = 0; g < (1 << add); g++) {
        ll add1 = 0;
        long long sum = 0;
        for (int h = 0; h < add; h++) {
          if (g & (1 << h)) {
            sum += a[c[h]];
            d[add1++] = c[h];
          }
        }
        for (int i = 0; i < add1; i++) {
          for (int j = 0; j < add1; j++) {
            if (d[i] < d[j] && pd(d[i], d[j])) {
              sum -= b[d[j]];
            }
          }
        }
        maxn = max(maxn, sum);
      }
    }
    sum1 += maxn;
  }
  cout << sum1 << endl;
}


相关文章
|
人工智能 自然语言处理 搜索推荐
AI战略丨SaaS 遇见 AI,企业教培开启新范式
“我们会不断完善整体的工程能力,争取以最低的成本,帮助用户训练他们所需要的、好用的 AI 产品。”
|
机器学习/深度学习 人工智能 自然语言处理
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
Documind 是一款利用 AI 技术从 PDF 中提取结构化数据的先进文档处理工具,支持灵活的本地或云端部署。
876 8
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
|
网络安全 开发工具 数据安全/隐私保护
|
Kubernetes 安全 数据安全/隐私保护
【K8S系列】深入解析k8s网络插件—Weave Net
【K8S系列】深入解析k8s网络插件—Weave Net
2098 0
|
存储 安全 网络协议
Elasticsearch 配置文件解析
【10月更文挑战第3天】Elasticsearch 配置文件解析
586 3
|
人工智能 自然语言处理 安全
如何通过网关降低大模型的调用费用,并提升合规性
如何通过网关降低大模型的调用费用,并提升合规性
1173 109
|
Go
Golang语言之包依赖管理
这篇文章详细介绍了Go语言的包依赖管理工具,包括godep和go module的使用,以及如何在项目中使用go module进行依赖管理,还探讨了如何导入本地包和第三方库下载的软件包存放位置。
552 4
|
存储 测试技术 数据库
数据库备份的方法
数据库备份的方法
1042 1
|
SQL 数据库管理
|
XML Java Maven
Java 中的 Maven 和 Ant 的区别
【8月更文挑战第22天】
639 0