长沙学院飞腾迈创杯2022年新生赛

简介: 笔记

A 小贪一手


1.png

思路:

当然不可能暴力了,暴力是不可能的。

代码:

void solve() {
  int n, x, y;
  cin >> x >> y >> n;
  int now = n / x;
  int cur;
  for (int i = now - 1; ; i++) {
    if(i * x + y > n) break;
    cur = i * x + y;
  }
  cout << cur << endl;
}

B A+B Problem (very easy)


2.png


简单的小模拟

代码就不贴了,又臭又长。


C Alice and Bob



3.png

上取整坑点


代码:


简单的博弈论

f[i]=1:先手胜

f[i]=2:后手胜

int f[1010];
void init() {
  f[1] = 1;
  f[2] = 2;
  f[3] = 1;
  f[4] = 1;
  f[5] = 2;
  for (int i = 6; i <= 1000; i++) {
    int o = 0;
    for (int j = 1; j <= i / 2; j++) {
      if(f[i - j] == 2) o = 1;
    }
    f[i] = o ? 1 : 2;
  }
}
void solve() {
  int n; cin >> n;
  if(f[n] == 1) {
    cout << "NO" << endl;
  } else {
    cout << "YES" << endl;
  }
}
signed main() {
  IOS int _ = 1;
  init();
  cin >> _;
  while(_--) { solve(); }
  return 0;
}

D 进化



E 防疫物资


4.png

简单来说: 加一条边,让快递员送完后回去的路程最短。


思路:


发现加一条边,必然选择最高和次高之间。这样构成的一条路径(走一步)是最长的一个环(根->最深->次深->根)。其它路都要走两步。


答案即为:2∗所有边−最深−次深+1

代码:

int n, ans;
vi e[N], v;
int height(int u, int f) {
  int res = 1;
  int mx = 0;
  for (auto &x: e[u]) {
    if(x == f) continue;
    mx = max(mx, height(x, u));
  }
  return res + mx;
}
void dfs(int u, int f) {
  for (auto &x: e[u]) {
    v.pb(height(x, u));
  }
  sort(rall(v));
}
void solve() {
  cin >> n;
  for (int i = 1; i < n; i++) {
    int a, b; cin >> a >> b;
    e[a].pb(b);
    e[b].pb(a);
  }
  dfs(1, -1);
  if(v.sz > 1) ans = v[0] + v[1];
  else ans = v[0];
  cout << 2 * (n - 1) - ans + 1 << endl;
}

F 有挂


5.png

思路:


只需要将模板线段树,简单改改就好了。


原 s u m值维护区间和,改为维护区间内攻击次数即可。


代码:

int n, m, x;
int op, l, r, k;
#define ls u<<1
#define rs u<<1|1
struct node {
  int l, r;
  int add, sum;
} tr[N << 2];
int len(int u) {
  return tr[u].r - tr[u].l + 1;
}
void pushup(int u) {
  tr[u].sum = tr[ls].sum + tr[rs].sum;
}
void pushdown(int u) {
  if(tr[u].add) {
    tr[ls].sum += len(ls) * tr[u].add, tr[ls].add += tr[u].add;
    tr[rs].sum += len(rs) * tr[u].add, tr[rs].add += tr[u].add;
    tr[u].add = 0;
  }
}
void build(int u, int l, int r) {
  tr[u] = {l, r, 0};
  if(l == r) return ;
  int mid = l + r >> 1;
  build(ls, l, mid), build(rs, mid + 1, r);
}
void modify(int u, int l, int r, int k) {
  if(tr[u].l >= l && tr[u].r <= r) {
    int fa = (k - 1) / x + 1;
    tr[u].sum += len(u) * fa;
    tr[u].add += fa;
    return ;
  }
  pushdown(u);
  int mid = tr[u].l + tr[u].r >> 1;
  if(l <= mid) modify(ls, l, r, k);
  if(r > mid) modify(rs, l, r, k);
  pushup(u);
  return ;
}
int query(int u, int l, int r) {
  if(tr[u].l >= l && tr[u].r <= r) { return tr[u].sum; }
  int mid = tr[u].l + tr[u].r >> 1;
  int v = 0;
  pushdown(u);
  if(l <= mid) v = query(ls, l, r);
  if(r > mid) v += query(rs, l, r);
  return v;
}
void solve() {
  cin >> n >> m >> x;
  build(1, 1, n);
  while(m--) {
    cin >> op >> l >> r;
    if(op == 1) {
      cin >> k;
      modify(1, l, r, k);
    } else {
      cout << (query(1, l, r)) << endl;
    }
  }
}

G 鸡你太美


#include<bits/stdc++.h>
#define ll long long
#define ri register int
#define x first
#define y second
using namespace std;
const int maxN = 1e5 + 5;
const ll INF = 0x3f3f3f3f;
inline int read()
{
  int ans = 0, f = 0;
  char ch = getchar();
  while (ch < '0' || ch>'9')f ^= (ch == '-'), ch = getchar();
  while (ch >= '0' && ch <= '9')ans = (ans << 3) + (ans << 1) + (ch ^ 48), ch = getchar();
  return f ? -ans : ans;
}
int n, m;
int a[maxN];
int f[maxN][1 << 9];
int count(int x)
{
  int ans = 0;
  for (int i = 0; i < m; i++)ans += x >> i & 1;
  return ans;
}
int main()
{
  n = read(), m = read();
  for (int i = 1; i <= n; i++)a[i] = read();
  f[0][0] = 0;
  for (int i = 1; i <= n; i++)
  {
    for (int j = 0; j < 1 << m; j++)
    {
      int k = j >> 1;
      if (count(k) + 1 <= m / 2)
      {
        f[i][k | 1 << (m - 1)] = max(f[i][k | 1 << (m - 1)], f[i - 1][j] + a[i]);
      }
      if (count(k) <= m / 2)
      {
        f[i][k] = max(f[i][k], f[i - 1][j]);
      }
    }
  }
  int ans = 0;
  for (int i = 0; i < 1 << m; i++)ans = max(ans, f[n][i]);
  cout << ans;
  return 0;
}

H 爱美之心人皆有之


6.png


思路:

区间 max − 区间 min = = k,问这样(以下称为合法)区间的对数?

multiset:可重复元素的 set

s 1 :维护区间恰好合法,即(==k)。右端下标 l

s 2:维护区间恰好不合法,即( > k )。右端下标 r

类似前缀和思想?:r−l 即以 i 为起始段的区间合法的对数。

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000010;
int n, k, a[N];
multiset<int> s1, s2;
int ret(multiset<int> &s) {
    if(s.size() == 0) return -1;    
    return *s.rbegin() - *s.begin();
}
signed main() {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) cin >> a[i];
    int res = 0;
    int l = 0, r = 0;
    for (int i = 1; i <= n; i++) {
        while(l <= n && ret(s1) < k) s1.insert(a[++l]);
        while(r <= n && ret(s2) <= k) s2.insert(a[++r]);
        res += r - l;
        s1.erase(s1.find(a[i]));
        s2.erase(s2.find(a[i]));
    }
    cout << res << endl;
    return 0;
}

I 签签签到


7.png

void solve() {
  cout << "%d%\\n\"" << endl;
}


相关文章
|
4月前
|
机器学习/深度学习 人工智能 移动开发
金键盘奖揭晓!用友第五届开发者大赛圆满落幕
近日,经过长达六个月的赛程,用友第五届企业云服务开发者大赛圆满收官,这场面向企业服务领域开发者的顶级赛事不仅吸引了来自全国的开发者同台竞技,更成为了一场展示技术实力与创新精神的盛宴。
23 0
|
9月前
第十九届浙大城市学院程序设计竞赛(F、L)
第十九届浙大城市学院程序设计竞赛(F、L)
45 0
|
5月前
|
Cloud Native 中间件 Serverless
2023 云原生编程挑战赛收官:1.8 万人报名,冠军花落北京邮电大学、电子科技大学、旷识科技
2023 云原生编程挑战赛收官:1.8 万人报名,冠军花落北京邮电大学、电子科技大学、旷识科技
2023 云原生编程挑战赛收官:1.8 万人报名,冠军花落北京邮电大学、电子科技大学、旷识科技
|
9月前
|
C++
山东省第一届省赛 Ivan comes again
山东省第一届省赛 Ivan comes again
39 0
|
机器学习/深度学习 人工智能 BI
江苏大学2021年第一届程序设计大赛(UJSCPC)题面
江苏大学2021年第一届程序设计大赛(UJSCPC)题面
161 0
|
机器学习/深度学习 人工智能 算法
四所中国高校夺冠三大赛道,这场24个国家2500多支队伍角逐的算法竞赛刚刚落幕
可以「欺骗」神经网络的对抗样本是近期计算机视觉,以及机器学习领域的热门研究方向。为了让 AI 能够抵御攻击,研究人员一直在寻找构建稳固机器学习算法的道路。最近,在国际顶级人工智能大会 IJCAI 上,一场有关人工智能安全的攻防战落下了帷幕。
140 0
四所中国高校夺冠三大赛道,这场24个国家2500多支队伍角逐的算法竞赛刚刚落幕
南京鼓楼区:千万礼包寻创客
3月12日,鼓楼区举办第二届“创赢鼓楼”创新创业大赛云上新闻发布会。由该区推出的创新创业人才大礼包在会上首发,优秀人才和项目最高可获千万奖励。
|
大数据
[开学季]内蒙古师范大学阿里云大数据学院成立仪式成功举办
11月30日,内蒙古师范大学计算机科学技术学院·阿里云大数据学院成立揭牌仪式暨内蒙古师范大学第一届大数据论坛在内蒙古自治区首府呼和浩特内蒙古师范大学盛乐校区举行。 成立大会结束后,嘉宾们来到内蒙古师范大学阿里云大数据学院实地考察指导,听取学院规划、人才培养等工作汇报。
2924 0
|
大数据
[开学季]西安铁路职业技术学院阿里云大数据应用学院第一次理事会暨开班典礼顺利举行
2018年11月2日,在西安铁路职业技术学院召开了阿里云大数据应用学院第一届理事会第一次会议暨开班典礼。西安铁路职业技术学院阿里云大数据应用学院是在西安市教育局大力支持下,结合阿里巴巴集团阿里云计算有限公司、慧科集团产业资源落地于西安铁路职业技术学院的一所产业学院。
2052 0