A题

小a的计算器(水题)

链接:https://ac.nowcoder.com/acm/contest/317/A
来源:牛客网

小a的数学基础实在太差了,以至于他只会用计算器算数。他的计算器比较特殊,只有+,−,×,/+,−,×,/(即加减乘除)四种运算。
经过一番周折,小a终于算出了他想要的数,但是他却忘记了最初的数是什么。不过幸运的是他记下了整个操作序列,他想请你帮他算出最初的数

思路

就是用个数组,将操作序列记录下来,然后逆序进行求解,这里对乘的运算的逆是除,但是,要排除除以0的情况,进行下特判

代码

#include <bits/stdc++.h>
using namespace std;
int main()
{long long n,m;cin>>n>>m;long long op[105],x[105];for(int i=1;i<=n;i++) cin>>op[i]>>x[i];for(int i=n;i>=1;i--){if(op[i]==1) m-=x[i];else if(op[i]==2)m+=x[i];else if(op[i]==3) {if(x[i]==0) m=0;else m=m/x[i];}else m=m*x[i];}cout<<m<<endl;return 0;
}

B题

小a与204

链接:https://ac.nowcoder.com/acm/contest/317/B
来源:牛客网

小a非常喜欢204204这个数字,因为′a′+′k′=204′a′+′k′=204。
现在他有一个长度为nn的序列,其中只含有2,0,42,0,4这三种数字
设aiai为序列中第ii个数,你需要重新排列这个数列,使得∑ni=1(ai−ai−1)2∑i=1n(ai−ai−1)2最大(公式的含义是:每个数与前一个数差的平方的和)
注意:我们默认a0=0a0=0

思路

贪心,我们需要对一个序列进行排序,是的两两之差的平方,要尽可能的大。

这里我们只需要先将2 0 4这三个数的次数统计一下,然后从1开始,对于前一个数进行判断然后放值进行就行了

如果前一个数是0,那优先放4,如果4没了,就放2,如果2也没了,就放0,其他数也同理。

代码

#include <bits/stdc++.h>
using namespace std;
int main()
{int n,m;long long ans=0;int a=0,b=0,c=0;cin>>n;for(int i=0;i<n;i++){cin>>m;if(m==0) a++;if(m==2) b++;if(m==4) c++;}int t=0;for(int i=0;i<n;i++){if(t==0){if(c>0) c--,ans+=16,t=4;else if(b>0) b--,ans+=4,t=2;else a--;}else if(t==2){if(c>0) c--,ans+=4,t=4;else if(a>0) a--,ans+=4,t=0;else b--;}else if(t==4){if(a>0) a--,ans+=16,t=0;else if(b>0) b--,ans+=4,t=2;else c--;}}cout<<ans<<endl;return 0;
}

C题

小a与星际探索

链接:https://ac.nowcoder.com/acm/contest/317/C
来源:牛客网

小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往nn号星球。其中每个星球有一个能量指数pp。星球ii能到达星球jj当且仅当pi>pjpi>pj。
同时小a的飞船还有一个耐久度tt,初始时为11号点的能量指数,若小a前往星球jj,那么飞船的耐久度会变为t⊕pjt⊕pj(即tt异或pjpj,关于其定义请自行百度)
小a想知道到达nn号星球时耐久度最大为多少

注意:对于每个位置来说,从它出发可以到达的位置仅与两者的pp有关,与下标无关

思路

背包问题的dp

首先我们队这个能量指数进行排序,使得对于每个星球,在他之后的所有星球都可以从这个星球到达。

然后就开始dp呗,我自己的代码好像不是正确的。所以再贴一份官方的代码

代码

#include <bits/stdc++.h>
using namespace std;
int n;
struct node{int a,b;
}num[3005];int cmp(node x,node y){if(x.b==y.b) return x.a<y.b;return x.b>y.b;}
int main()
{std::ios::sync_with_stdio(false);cin>>n;for(int i=0;i<n;i++){cin>>num[i].b;num[i].a=i;}sort(num,num+n,cmp);int s,t;//for(int i=0;i<n;i++) cout<<num[i].a<<' '<<num[i].b<<endl;for(int i=0;i<n;i++){if(num[i].a==0) s=i;if(num[i].a==n-1) t=i;}//cout<<s<<' '<<t<<endl;if(s>t) cout<<-1<<endl;else{int dp[3005];memset(dp,0,sizeof(dp));dp[s]=num[s].b;for(int i=s+1;i<=t;i++){for(int j=s;j<i;j++){dp[i]=max(dp[i],dp[j]^num[i].b);}}if(!dp[t]) cout<<-1<<endl;else cout<<dp[t]<<endl;}return 0;
}

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int MAXN = 10003, INF = 1e9 + 10;
void chmin(int &a, int b) {a = (a < b ? a : b);}
void chmax(int &a, int b) {a = (a > b ? a : b);}
int sqr(int x) {return x * x;}
inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}
int N, mx;
bool f[MAXN][MAXN];
struct Node {int id, val;bool operator < (const Node &rhs) const {return val > rhs.val;}
}a[MAXN];
signed main() {//freopen("a2.in", "r", stdin);//cout << (457 ^ 23);N = read();for(int i = 1; i <= N; i++) a[i].id = i, a[i].val = read(); mx = 6001;sort(a + 1, a + N + 1);for(int i = 1, flag = 1; i <= N; i++) {if(a[i].id == 1) {flag = 0, f[i][a[i].val] = 1; continue;}if(flag) continue;if(a[i].id == N) {int k = i - 1;while(k && a[i].val == a[k].val) k--;if(!k) break;for(int j = mx; j >= 0; j--) {f[i][j] |= f[k][j ^ a[i].val];if(f[i][j]) {printf("%d", j); return 0;}} break;}else if(a[i].val == a[i - 1].val) {memcpy(f[i], f[i - 1], sizeof(f[i]));}else {for(int j = 0; j <= mx; j++) f[i][j] |= (f[i - 1][j ^ a[i].val] | f[i - 1][j]);     }}puts("-1");return 0;
}

D题

小a与黄金街道

链接:https://ac.nowcoder.com/acm/contest/317/D
来源:牛客网

小a和小b来到了一条布满了黄金的街道上。它们想要带几块黄金回去,然而这里的城管担心他们拿走的太多,于是要求小a和小b通过做一个游戏来决定最后得到的黄金的数量。
游戏规则是这样的:
假设道路长度为nn米(左端点为00,右端点为nn),同时给出一个数kk(下面会提到kk的用法)
设小a初始时的黄金数量为AA,小b初始时的黄金数量为BB
小a从11出发走向n−1n−1,小b从n−1n−1出发走向11,两人的速度均为1m/s1m/s
假设某一时刻(必须为整数)小a的位置为xx,小b的位置为yy,若gcd(n,x)=1gcd(n,x)=1且gcd(n,y)=1gcd(n,y)=1,那么小a的黄金数量AA会变为A∗kx(kg)A∗kx(kg),小b的黄金数量BB会变为B∗ky(kg)B∗ky(kg)
当小a到达n−1n−1时游戏结束
小a想知道在游戏结束时A+

转载于:https://www.cnblogs.com/maybe96/p/10431242.html

牛客寒假算法集训 1相关推荐

  1. 小a与204(牛客寒假算法集训营1题目B)

    链接:https://ac.nowcoder.com/acm/contest/317/B 来源:牛客网 时间限制:C/C++ 1秒, 其他语言2秒 空间限制: C/C++ 262144K,其他语言52 ...

  2. 2023牛客寒假算法集训营3

    (数学场真折磨人) A. 不断减损的时间(贪心) 题意: 给定一个数组,任意次操作,每次操作可以 选择一个偶数除以 222 . 求最终数组所有元素之和的最小值. 思路: 要使得所有元素之和最小,那肯定 ...

  3. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

  4. 2022牛客寒假算法基础集训营6 签到题5题(附基础集训营4-6签到题总结)

    1.I-A+B问题 模拟,类似于高精度,竖式运算 #include<bits/stdc++.h> using namespace std; typedef long long LL; in ...

  5. 2022牛客寒假算法基础集训营3 签到题7题(附基础集训营1-3签到题总结)

    1.A-智乃的Hello XXXX 签到 #include<bits/stdc++.h> using namespace std; int main(){cout<<" ...

  6. (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II

    2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II 思路: 一开始我是考虑全部都是B会怎么样,然后删改,结果到后面发现很难推到普遍规律(可能是因为我没看出来). 看了题解之后,觉得这题出的挺有意 ...

  7. 2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II二进制详解

    2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II B 牛牛的DRB迷宫II 输入: 25 输出: 5 5 RBBBR BBBBB BBBDB BDBBB RBBBB 题解 由图求方案数,我们 ...

  8. 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」

    6/13 教育场是有被教育到.(预计会鸽几题. 已过非太水的题们 //B //https://ac.nowcoder.com/acm/contest/46812/B//小构造小数学#include & ...

  9. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  10. 2023牛客寒假算法基础集训营1_20230116「典dp」「典set」「小思维+bfs」「小思维+构造+码力」「位运算博弈(人类智慧)」

    6/13 打得不好,这两天家里也很不好,跟做梦一样,脑子好像被僵尸吃掉了,前两个小时胡乱瞎写交题只过样例,wa了再看,什么b错都能写出来. M. M-本题主要考察了找规律_2023牛客寒假算法基础集训 ...

最新文章

  1. 搜索引擎优化 SEO
  2. 9月19日下午JavaScript数组冒泡排列和二分法
  3. matlab中的containers.Map()
  4. thinkphp phpexcel导出
  5. 数据结构及算法之快速排序-python实现
  6. DevOps落地三部曲:如何归责?用啥工具?往哪里去?
  7. 怎看沃科斯扫地机器人型号_科沃斯型号区别是什么?
  8. 多乐融依托大数据锻造五重风控防线
  9. 设计模式(行为型模式)——模板方法模式(Template Method)
  10. 华为云PBX_基于华为云客服平台打造的比特百灵鸟AI管家解决方案发布
  11. 卡方检验与方差分析的区别
  12. Java-模拟新浪微博用户注册功能实现(控制台程序)
  13. 工欲善其事必先利其器-前端实习简历篇
  14. 使用dd命令制作固定大小的文件
  15. SQL查找时间记录最近一条
  16. 微信小程序 位置定位position详解,相对定位relative,绝对定位absolute相关问题
  17. Binary Hypotheses
  18. 使用开源软件Prometheus监控企业内部应用
  19. 深圳南山区的篮球场大全
  20. 【ECCV2022】OSFormer: One-Stage Camouflaged Instance Segmentation with Transformers

热门文章

  1. 如何解决 MacBook Pro Touch ID不起作用?
  2. 如何在Mac上禁用iCloud驱动器?
  3. 201771010111李瑞红《第十六周学习总结》
  4. php windows环境 安装 Apache-apollo + phpMQTT 实现发送 MQTT
  5. 使用Project客户端和Project Server进行项目管理 - android开发实例 - 博客园
  6. 移动web点5像素的秘密(转)
  7. 教你如何创建unity3d多个定时器,以及定时器的其他操作
  8. nginx内核优化及配置
  9. init与clinit 与 类的初始化顺序
  10. 炸了!!又一 VSCode 神器面世!