2022ICPC济南站

K

Stack Sort

题意:给你一个长度为n的排列,设有m个栈,你需要将这n个数按出现顺序入栈,每次入栈操作从m个栈中选择一个栈从栈顶入栈。当所有元素入栈完成后,需要不断选择栈,将栈中元素弹空。需满足出栈顺序为1 2 3 ... n,问完成上述任务所需最少栈的个数为多少。

思路:遍历数组,设当前元素为x,我们就看是否存在栈顶为x+1的栈,若存在则入该栈;否则新开一个栈将x入栈。

#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0),cin.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;using namespace std;
/*
1 4 2 5 3
1 34 2 5 
找x+1存在否 存在不存在 ++
*/
int n;
bool st[N];
void solve()
{cin>>n;for(int i=1;i<=n+1;i++) st[i]=0;int ans=0;for(int i=1;i<=n;i++){int x;cin>>x;if(st[x+1]){st[x+1]=0;st[x]=1;}else{st[x]=1;ans++;}}cout<<ans<<'\n';
}
signed main()
{//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);ios;int _t=1;cin>>_t;while(_t--) solve();system("pause");return 0;
}

M

Best Carry Player

题意:给定n个元素的数组a[],起始sum=0,不断执行sum+=a[i],问加法过程中的总进位次数为多少?

思路:模拟

#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0), cin.tie(0)
#define PII pair<int, int>
typedef long long ll;
const int N = 1e5 + 10;
const int inf = 0x3f3f3f3f;using namespace std;
int n;
string a[N];
void solve()
{cin >> n;for (int i = 1; i <= n; i++){string x;cin >> x;reverse(x.begin(), x.end());a[i] = x;}string ret = "000000000000000";int ans = 0;int del = 0;for (int i = 1; i <= n; i++){for (int j = 0; j < 15; j++){int c1 = int(ret[j] - '0');int c2 = 0;if(j<a[i].size()) c2=int(a[i][j] - '0');int t = c1 + c2 + del;ret[j] = char(t % 10 + '0');if (t >= 10){ans++;del = 1;}elsedel = 0;}}cout << ans << '\n';
}
signed main()
{// freopen("input.txt","r",stdin);// freopen("output.txt","w",stdout);ios;int _t = 1;cin >> _t;while (_t--)solve();system("pause");return 0;
}

E

Identical Parity

题意:一个序列的值定义为所有数字的和,给定n,k问是否存在长度为n的排列满足所有长度为k的子段的值奇偶性都相同。

思路:当k=1时,若n=1 Yes;k=1, n不为1 No

当k为偶数时,我们可以奇偶交替的放,Yes

当k为奇数时,我们可以分成k组,每组的下标满足a, a+k, a+2k...a属于[1,k],同一组我们放相同奇偶的数。我们发现这样的序列就满足条件。

设n/k=b余c,我们将k/2个组,这些组的位置放偶数;其余k/2+1个组,这些组的位置上放奇数。那么还剩下c个数没放,判断剩下的数是否满足奇偶个数。

#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0),cin.tie(0)
#define PII pair<int,int>
#define int long long
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;using namespace std;
int n,k;
void solve()
{cin>>n>>k;if(k==1){if(n==1) cout<<"Yes\n";else cout<<"No\n";}else if(k%2==0) cout<<"Yes\n";else{int tot_o=n/2,tot_j=(n+1)/2;//总的奇偶个数int k_o=k/2,k_j=k/2+1;//k组中有多少组奇数偶数int b=n/k,c=n%k;int r_o=tot_o-b*k_o,r_j=tot_j-b*k_j;//放完k组,还剩多少奇偶数没放if(r_o>=0&&r_j>=0&&r_o+r_j==c){if(r_o<=k_o&&r_j<=k_j) cout<<"Yes\n";else cout<<"No\n";}else cout<<"No\n";}
}
signed main()
{//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);ios;int _t=1;cin>>_t;while(_t--) solve();system("pause");return 0;
}

A

Tower

题意:有n座不同高度的塔,第i座塔的高度为a[i]

你可以将其中的m座塔移除,然后进行下面的操作:

1.选择一座塔,将其高度 a[i]增加 1

2.选择一座塔,将其高度 a[i]减少 1

3.选择一座塔,将其高度 a[i]/=2,向下取整

不允许操作后塔的高度为0。问将剩余n-m座塔的高度搞成相同所需最少的操作次数。

思路:最后变成的相同高度一定是某个塔的高度不断/2的结果。所以我们可以通过枚举最后高度,来计算塔到这个高度的最小操作次数。

#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0),cin.tie(0)
#define PII pair<int,int>
#define int long long
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;using namespace std;
int n,m;
int a[N];
int get(int now,int x)
{int ret=0;if(now<x) ret=x-now;else if(now==x) ret=0;else{while(now>x){if(now>x&&now/2<=x){ret+=min(now-x,1+x-now/2);break;}now/=2;ret++;}}return ret;
}
void solve()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];set<int>s;for(int i=1;i<=n;i++){int x=a[i];s.insert(x);while(x>=2){x/=2;s.insert(x);}}int ans=1e18;for(auto x:s){vector<int>v;for(int i=1;i<=n;i++){int t=get(a[i],x);v.push_back(t);}sort(v.begin(),v.end());int tem=0;for(int i=0;i<n-m;i++)tem+=v[i];ans=min(ans,tem);}cout<<ans<<'\n';
}
signed main()
{//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);ios;int _t=1;cin>>_t;while(_t--) solve();system("pause");return 0;
}

D

Frozen Scoreboard

题意:给你封榜前的情况和最终通过的题数和罚时,问最终的榜单

思路:将封榜前的过题数和罚时减去,再对封榜后的题进行二进制枚举,判断合法

#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0),cin.tie(0)
#define PII pair<int,int>
#define int long long
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;using namespace std;
int n,m;
int a[N],b[N];
struct node{char op;int x,y;int num;
}P[N];
void solve()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i]>>b[i];int nowt=0,nowcnt=0;vector<node>uk;for(int i=0;i<m;i++){char op;cin>>op;if(op=='+'){int u,v;char _;cin>>u>>_>>v;nowcnt++;nowt+=(u-1)*20+v;P[i]={'+',u,v};}else if(op=='-') {int u;cin>>u;P[i]={'-',u};}else if(op=='?'){int u,v;cin>>u>>v;P[i]={'?',u,v,i};uk.push_back({'?',u,v,i});}else P[i]={'.'};}if(nowcnt==a[i]&&nowt==b[i]){cout<<"Yes\n";for(int j=0;j<m;j++){if(P[j].op=='+') printf("+ %d/%d\n",P[j].x,P[j].y);else if(P[j].op=='-') printf("- %d\n",P[j].x);else if(P[j].op=='?') printf("- %d\n",P[j].y);else printf(".\n");}}else if(nowcnt<a[i]&&nowt<b[i]){int cnt=a[i]-nowcnt;int t=b[i]-nowt;bool f=0;for(int j=0;j<(1<<uk.size());j++){int mi=0,ma=0;for(int k=0;k<uk.size();k++){if((j>>k)&1){mi+=240+(uk[k].y-uk[k].x)*20;ma+=299+(uk[k].y-1)*20;}}if(t>=mi&&t<=ma){map<int,node>ans;int remt=t-mi;int finish=0;for(int k=0;k<uk.size();k++){if((j>>k)&1){int num=uk[k].num;int cishu=min(remt/20,uk[k].x-1);//封榜后wa了多少次ans[num].x=(uk[k].y-uk[k].x+cishu+1);remt-=cishu*20;int r1=min(remt,59ll);remt-=r1;ans[num].y=240+r1;finish++;}}if(remt==0&&finish==cnt){f=1;cout<<"Yes\n";for(int k=0;k<m;k++){if(P[k].op=='+') printf("+ %d/%d\n",P[k].x,P[k].y);else if(P[k].op=='-') printf("- %d\n",P[k].x);else if(P[k].op=='?'&&ans[k].x) printf("+ %d/%d\n",ans[k].x,ans[k].y);else if(P[k].op=='?') printf("- %d\n",P[k].y);else printf(".\n");}break;}}}if(!f) cout<<"No\n";}else cout<<"No\n";}
}
signed main()
{//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);//ios;int _t=1;//cin>>_t;while(_t--) solve();system("pause");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day53 django的三板斧与配置模块

昨日内容回顾 web应用程序 主要是因为接下来学习的Django框架主要就是用来开发web应用的 ​ web应用它是一款B/S架构的软件&#xff0c;只需要一个浏览器作为我们的客户端&#xff0c;我们自己写个服务端就行了 # 它的优点 1. 它只需要一个浏览器即可&#xff0c;无需安装其他…

单向循环代码实现cpp

// 单向循环链表 class CircleLink { public:CircleLink(){head_ new Node();tail_ head_;head_->next_ head_;}~CircleLink(){Node* p head_->next_;while (p ! head_){head_->next_ p->next_;delete p;p head_->next_;}delete head_;}public:// 尾插法 …

【不正经操作】百度深度学习框架paddlepaddle本地运行-Python环境配置笔记

百度深度学习框架PaddlePaddle 百度深度学习框架PaddlePaddle是一个支持深度学习和机器学习的开源框架。它由百度公司于2016年开发并发布&#xff0c;现在已经成为中国最受欢迎的深度学习框架之一&#xff0c;并且在国际上也获得了不少关注。 特点与功能 易于使用 PaddlePa…

ARMday01(计算机理论、ARM理论)

计算机理论 计算机组成 输入设备、输出设备、运算器、控制器、存储器 1.输入设备&#xff1a;将编写好的软件代码以及相关的数据输送到计算机中&#xff0c;转换成计算机能够识别、处理和存储的数据形式 键盘、鼠标、手柄、扫描仪、 2.输出设备&#xff1a;将计算机处理好的数…

百文买鸡和水仙花数问题(C#解法)

百文买鸡题目&#xff1a; ⽤100⽂买⼀百只鸡&#xff0c;其中公鸡&#xff0c;⺟鸡&#xff0c;⼩鸡&#xff0c;都必须要有&#xff0c;公鸡3⽂⼀只&#xff0c;⺟鸡5⽂⼀只&#xff0c;⼩鸡2⽂⼀只&#xff0c;请问公鸡、⺟鸡、⼩鸡要买多少只刚好凑⾜100⽂。 // x y z 公鸡…

解决 github.com 或者 raw.githubusercontent.com 打开慢、打不开问题

系列文章目录 文章目录 系列文章目录前言一、Windows 系统1.1 以管理员身份运行记事本1.2 打开 hosts 文件1.3 写入 IP 地址 二、Linux2.1 hosts 文件位置 三、Android 系统总结 前言 连接手机热点&#xff0c;将流量关闭马上打开&#xff0c;进入的成功率更高 一、Windows 系…

Netty入门指南之NIO 粘包与半包

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言问题产…

NOIP2023模拟13联测34 abstract

题目大意 有一棵有 n n n个点的树&#xff0c;每个点有一个点权 a i a_i ai​&#xff0c; f ( i , j ) f(i,j) f(i,j)和 g ( i , j ) g(i,j) g(i,j)分别表示 i i i到 j j j的路径上的权值与和权值或&#xff0c;求 ∑ i 1 n ∑ j i n f ( i , j ) g ( i , j ) \sum\limits_…

flutter开发实战-TweenSequence实现动画序列

flutter开发实战-TweenSequence实现动画序列 一、TweenSequence TweenSequence是允许创建一个Animation由一系列补间动画来确定值&#xff0c;每个TweenSequenceItem都有定义在动画的持续时间的权重确定动画间隔。 TweenSequence 动画组类TweenSequenceItem 用来定义每一个动…

深度学习读取txt训练数据绘制参数曲线图的方法

有一些深度学习模型是并不像yolo系列那样最终输出相应的参数图&#xff0c;有很多训练形成了一个训练log文件&#xff0c;于是需要读取log文件中的内容并绘制成曲线图。 如下实例&#xff0c;有一个log文件的部分截图&#xff0c;需要将其读取出来并绘制曲线图 废话不多说&…

前端之Bootstrap框架

目录 【一】Bootstrap介绍 【二】Bootstrap引入 【1】CDN加速链接 【2】注意 【三】布局容器 【四】栅格系统 【五】栅格参数 【六】列偏移 【七】排版 标题 内联文本元素 对齐 改变大小写 引用 列表 【八】表格 基本实例 条纹状表格 带边框的表格 鼠标悬停…

汽车工业生产线数字孪生可视化管理平台,赋予工厂车间数字化智慧化管理

在工业4.0 的时代背景下&#xff0c;随着企业数字化进程的推进&#xff0c;数字孪生可视化技术逐渐在汽车行业得到广泛应用&#xff0c;数字孪生智慧工厂的建设也成为了汽车行业数字化转型的趋势之一。汽车制造业属于典型的离散制造行业&#xff0c;汽车生产包含冲压、焊接、涂…

19.13 Boost Asio 发送TCP流数据

Boost框架中默认就提供了针对TCP流传输的支持&#xff0c;该功能可以用来进行基于文本协议的通信&#xff0c;也可以用来实现自定义的协议。一般tcp::iostream会阻塞当前线程&#xff0c;直到IO操作完成。 首先来看服务端代码&#xff0c;如下所示在代码中首先通过GetFileSize…

C++的Odyssey之旅——STL

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a;我们已经将基本语法了解的差不多了&#xff0c;现在我们就该进入C中最重要也是最富有特点的一部分——STL。在学习C语言中我们想要使用顺序表、链表等一些数据结构进行做题时都需要进行这…

Go invalid memory address or nil pointer dereference错误 空指针问题

Go 指针声明后赋值&#xff0c;出现 panic: runtime error: invalid memory address or nil pointer dereference&#xff0c;这种是内存地址错误。 首先我们要了解指针&#xff0c;指针地址在 Go 中 * 代表取指针地址中存的值&#xff0c;& 代表取一个值的地址对于指针&am…

WordPress主题 JustNews主题6.0.1(亲测首页不空白)

介绍 资源入口 需要用WordPress5.X版本 JustNews介绍&#xff1a;一款专为博客、自媒体、资讯类的网站设计开发的WordPress主题&#xff0c;自v3.0版开始支持自主研发的前端用户中心&#xff0c;不仅支持注册、登录、账户设置、个人中心等常用页面的添加&#xff0c;还可以上传…

【原创】java+jsp+servlet简单图书管理系统设计与实现

摘要&#xff1a; 图书管理系统是一个专门针对图书馆管理而设计的系统&#xff0c;它可以帮助图书管理员有效的对图书进行管理&#xff0c;在图书管理系统的设计中&#xff0c;首先要考虑的是系统的需求分析&#xff0c;该系统的设计与实现涉及多个方面&#xff0c;包括数据库…

【赠书第2期】嵌入式虚拟化技术与应用

文章目录 前言 1 背景概述 2 专家推荐 3 本书适合谁&#xff1f; 4 内容简介 5 书籍目录 6 权威作者团队 7 粉丝福利 前言 随着物联网设备的爆炸式增长和万物互联应用的快速发展&#xff0c;虚拟化技术在嵌入式系统上受到了业界越来越多的关注、重视和实际应用。嵌入式…

哪些人更容易受到网络攻击?

当下&#xff0c;企业的安全已从传统的外部网络安全威胁防御&#xff0c;逐渐延伸到内部威胁防御。很多时候IT基础设施被攻陷不是外部造成&#xff0c;而是内部使然&#xff0c;这些内部威胁要复杂得多且难以管理。那么&#xff0c;哪些员工最脆弱、最有可能给企业组织带来网络…

Linux 入门

Linux 入门 1&#xff1a;linux 用户 root 用户 &#xff1a;也叫超级用户&#xff0c;UID0&#xff0c;其权限最高。系统用户&#xff1a;也叫虚拟用户&#xff0c;UID 1-999普通用户: UID1000-60000, 可以登录系统,操作自己目录下的文件. 1.1:用户操作命令 切换用户: su …