浙江农林大学第二十二届程序设计竞赛

  • 目录
    • 瓜瓜打游戏(EASY)
      • 题目思路
      • 题目代码
    • 瓜瓜喜欢做 A + B
      • 题目思路
      • 题目代码
    • 瓜瓜不想上电工课
      • 题目思路
      • 题目代码
    • 瓜瓜的 01 串
      • 题目思路
      • 题目代码
    • 瓜瓜上电工
      • 题目思路
      • 题目代码
    • 策策学长找py
      • 题目思路
      • 题目代码
    • 周周的泡泡
      • 题目思路
      • 题目代码
    • 其他题目题解链接
  • 结语

目录

瓜瓜打游戏(EASY)

题目思路

简单dp,状态转移公式如下:

dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * a[i];

题目代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[5003][5003];
ll a[5003];
int main() {ll n, p;cin >> n >> p;for (int i = 1; i <= n; ++i)cin >> a[i];dp[0][1] = 0;for (int i = 1; i <= n; ++i) {dp[i][0] = 1;dp[i][1] = (dp[i - 1][1] + a[i]) % p;}dp[0][0] = 1;for (int i = 2; i <= n; ++i) {for (int j = 1; j <= i; ++j) {dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * a[i];dp[i][j] %= p;}}for (int i = 0; i <= n; ++i)cout << dp[n][i] << ' ';
}

瓜瓜喜欢做 A + B

题目思路

最后一个颜色所占面积最大

题目代码

#include<bits/stdc++.h>
using namespace std;
int main() {int n, m, k;cin >> n >> m >> k;int a, b, c;while (k--) {scanf("%d %d %d", &a, &b, &c);}cout << n + m - 1 << " " << c << endl;
}

瓜瓜不想上电工课

题目思路

贪心,对a和b之差进行排序,取前k个(差值为负数则不取)

题目代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct node {int x, y, z;
}a[100005];
bool cmp(node a, node b) {return a.z > b.z;
}
int main() {int n, m;cin >> n >> m;int x, y, z;ll sum = 0;for (int i = 1; i <= n; i++) {scanf("%d", &a[i].x);}for (int i = 1; i <= n; i++) {scanf("%d", &a[i].y);a[i].z = a[i].x - a[i].y;sum += a[i].x;}sort(a + 1, a + n + 1, cmp);for (int i = 1; i <= m; i++) {if (a[i].z <= 0)break;sum -= a[i].z;}cout << sum << endl;
}

瓜瓜的 01 串

题目思路

思维题目,判断0和1的个数和k的个数作比较

题目代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, k;
string s;
ll sum0, sum1;
int main() {cin >> n >> k >> s;for (int i = 0; i < s.size(); i++) {if (s[i] == '0')sum0++;}sum1 = n - sum0;if (k == 0) {cout << sum0 << endl;}else {if (sum0 == sum1) {if (k <= sum1) {cout << sum1 + k;}else {cout << n;}}else if (sum0 > sum1) {if (k <= sum1) {cout << sum0 + k;}else {if (k >= sum0) {int cnt0 = k - sum0;int cnt1 = k - sum1;if ((cnt0 & 1)||(cnt1%2==0)) {cout << n;}else {cout << n - 1;}}else {int cnt1 = k - sum1;if (cnt1 % 2 == 0) {cout << n;}else {cout << n - 1;}}}}else if(sum1>sum0) {if (k <= sum0) {cout << sum1 + (k - 1);}else {if (k >= sum1) {int cnt0 = k - sum0;int cnt1 = k - sum1;if ((cnt0 & 1) || (cnt1 % 2 == 0)) {cout << n;}else {cout << n - 1;}}else {int cnt0 = k - sum0;if (cnt0 & 1) {cout << n;}else {cout << n - 1;}}}}}
}

瓜瓜上电工

题目思路

用全排列把所有情况写出来,找最小情况

题目代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct node {int x, y;
}a[14];
int b[11] = { 0,1,2,3,4,5,6,7,8,9,10 };
int n, q;
bool check(int x, int y, int c, int d) {if (x == c || x == d || y == c || y == d)return true;return false;
}
int main() {cin >> n >> q;for (int i = 1; i <= q; ++i) {int c, b;cin >> c >> b;a[i].x = c;a[i].y = b;}ll ans = 999999999;do {int dx = 0, dy = 0;ll sum = 0;for (int i = 1; i <= q; ++i) {int nx = a[b[i]].x, ny = a[b[i]].y;if (check(dx,dy,nx,ny))++sum;else sum += 2;dx = nx;dy = ny;}if (sum < ans)ans = sum;} while (next_permutation(b + 1, b + q + 1));ans += 2;cout << ans << endl;
}

策策学长找py

题目思路

上一行任何一个块这一行只能在其左上方,判断一下

题目代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, k;
string s;
ll sum0, sum1;
int begi[10005];
int last[10005];
int main() {int t;cin >> t;while (t--) {for (int i = 1; i <= 10000; i++) {last[i] = -1;begi[i] = 100000;}int n, m, k;scanf("%d%d%d", &n, &m, &k);int x, y;for (int i = 1; i <= k; i++) {scanf("%d %d", &x, &y);last[x] = max(last[x], y);begi[x] = min(begi[x], y);}int v;int g;for (int i = 1; i <= n; i++) {if (last[i] != -1) {v = last[i];g = i;break;}}int ok = 1;for (int i = g; i <= n; i++) {if (begi[i] != 100000) {if (begi[i] < v) {ok = 0;break;}v = last[i];}}if (ok == 1) {puts("YES");}else {puts("NO");}}}

周周的泡泡

题目思路

既然是连续的,就只用枚举左端点然后二分查找右端点就行了

题目代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[200005];
ll suml[200005], sumr[200005],sum[200005];
int main() {ll n, h;cin >> n >> h;for (int i = 1; i <= n; i++) {scanf("%lld", &a[i]);suml[i] = suml[i - 1] + a[i];}for (int i = n; i >= 1; i--) {sum[i] = sum[i + 1] + a[i];}for (int i = 1; i <= n; i++) {sumr[i] = sum[n - i + 1];}ll Min = 9999999999;for (int i = 0; i <= n; i++) {int x = h - suml[i];if (x <= 0)break;ll dx = lower_bound(sumr, sumr + n-i, x)-sumr-1;Min = min(Min, x - sumr[dx]);}cout << Min << endl;
}

其他题目题解链接

  • 瓜瓜选妃 (二维差分 + 二分)

结语


“遇事不决,可问春风。春风不语,即随本心。”的意思是:对一件事犹豫不决,就问春风该如何做,春风给不出答案,就凭自己本心做出决断。“遇事不决可问春风,春风不语即随本心”一句出自网络作家“烽火戏诸侯”的《剑来》,其原文是:“遇事不决,可问春风。春风不语,遵循己心”。


浙江农林大学第二十二届程序设计竞赛部分题解相关推荐

  1. 浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛) K.来自良心出题人wzc的简单题

    链接 来源:牛客网 题目描述 罗德岛训练室今天的使用人是干员w,她的任务是使用手上的三个遥控炸弹,尽可能摧毁最大价值的目标. 测试区域是一个nn的矩阵,w可以选择任意格子安放炸弹,如果选择了位置[i] ...

  2. 来自wzc的简单拓扑dp———浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛)

    传送门 题目描述 (良心出题人wzc说这是个简单拓扑dp,它就必然是一个简单拓扑dp,wzc是不会骗人的) wzc在一张拓扑图上,他所在的起始位置被标记为0.除了起始位置外,还有被1到n这n个整数所标 ...

  3. 浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛-D 涛涛和策策的游戏(尼姆博弈)

    浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛-D 涛涛和策策的游戏 链接:https://ac.nowcoder.com/acm/contest/7872/D 来源:牛客网 题目描述 涛涛和策策打码 ...

  4. 浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛 涛涛和策策的游戏 (尼姆博弈)

    链接:https://ac.nowcoder.com/acm/contest/7872/D 来源:牛客网 题目描述 涛涛和策策打码累了的时候会聚在一起van游戏. 某一天他们又凑在一起玩游戏了,因为最 ...

  5. HHTC第十二届程序设计竞赛

    HHTC第十二届程序设计竞赛 今天学校举办了一场关于程序设计的比赛!!!本人很菜,只能AC几个简单的题目,其他的难以突破!!!! 0x001 工资 Problem Description 地主将金币作 ...

  6. 海淀区第九届单片机竞赛获奖名单_第十二届程序设计竞赛暨ACM选拔赛获奖名单...

    11月21日由北京信息科技大学ACM集训队主办,计算机学院承办,牟永敏老师指导的第十二届程序设计竞赛暨ACM选拔赛完美落幕.本次比赛的参赛队员来自北信科的各个学院的同学共同参与,共142人报名参与此次 ...

  7. 参加浙江中医药大学第十二届程序设计竞赛(ACM赛制)的小记

    前言 第二年参加这个 就贴个去年的博客参加浙江中医药大学第十一届程序设计竞赛(ACM赛制)的总结 今年翻车,所以不写总结了,就只记录一下吧 正文 这次总共13题,我们队出了8题,罚时有点多,rank1 ...

  8. 浙江农林大学第二十一届程序设计竞赛校选拔赛A E G H

    A 瓜瓜的春天 传送门 题意:电梯前有两列队伍,电梯一次可以坐两人,其中 有 25% 的可能,电梯是满的,没有办法乘坐电梯: 有 25% 的可能,电梯是空的,则两队队首都可以乘坐电梯: 有 50% 的 ...

  9. 浙江农林大学第二十一届程序设计竞赛校选拔赛(同步)

    瓜瓜的A+B #include <iostream> using namespace std;typedef long long ll;ll qmi(ll a, ll b, ll p) { ...

最新文章

  1. 卫星的性能和服务器比较,卫星通信的常用频段的详细对比
  2. 优秀的程序反而是廉价
  3. 爱奇艺拟发行5亿美元可转换优先债券
  4. 2. TypeScript笔记
  5. win10输入法简体繁体切换
  6. nginx 并发过十万
  7. mysql人事管理系统源代码_人事管理系统(源代码.doc
  8. java 下载工具_java_java编写Http服务器下载工具,这个工具比较简单,用于配合 - phpStudy...
  9. 网络钓鱼和欺诈相关专题
  10. [转载] 使用 Python 实现鼠标键盘自动化
  11. Liferay layout_configuration 分析
  12. 更改putty默认配色方案
  13. 汉诺塔问题(看完就记住)
  14. css动画和js动画_CSS与JS动画:哪个更快?
  15. windows下连接服务器
  16. nginx upstream 健康检查
  17. 火车头采集器 v9免费版使用
  18. 优秀!24岁北航博士一毕业即受聘211高校副教授
  19. Unity 摄像机简介
  20. VirtuaNES 模拟器 玩FC小游戏 热血系列集合

热门文章

  1. Yii学习(1)----使用方法
  2. 小程序和Web项目的区别
  3. 【跨区助手】Apex入库
  4. 同一台 win10 服务器跑多个 wiki(包括 DokuWiki、django-wiki)
  5. 操原作业(一)Ubuntu系统编译一个新的内核
  6. wgt包更新时会下载但是不会安装
  7. 华为机试(python):字符串1
  8. 《坤之色——楚雄》孙溟㠭中国艺术
  9. 数论概论读书笔记 21.-1是模p平方剩余吗? 2呢
  10. DFT分析连续非周期信号注意事项