Codeforces Round 946 (Div. 3)

Codeforces Round 946 (div3)

  • A. Phone Desktop
    • 题意:
    • 题解:
    • 代码:
  • Symmetric Encoding
    • 题意:
    • 题解:
    • 代码:
  • C. Beautiful Triple Pairs
    • 题意:
    • 题解:
    • 代码:
  • Ingenuity-2
    • 题意:
    • 题解:
    • 代码:
  • E. Money Buys Happiness
    • 题意:
    • 题解:

A. Phone Desktop

题意:

x x x 1 ∗ 1 1*1 11 y y y 2 ∗ 2 2*2 22的网格,问最少需要多少个 3 ∗ 5 3*5 35的网格可以存下。

题解:

,因为 3 ∗ 5 3*5 35的网格可以由 11 11 11 1 ∗ 1 1*1 11 1 1 1 2 ∗ 2 2*2 22的网格或者 7 7 7 1 ∗ 1 1*1 11 2 2 2 2 ∗ 2 2*2 22的网格或者 15 15 15 1 ∗ 1 1*1 11的网格构成,所以先根据 2 ∗ 2 2*2 22的数量去判断最少需要多少个网格,然后判断这些网格能否存下 1 ∗ 1 1*1 11的网格,不够就再添加。

代码:

#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<vector>
#include<set>
#include<map>
#include<numeric>
#include<functional>
#include<stack>
using namespace std;
typedef long long ll;
void solve()
{int x, y;cin >> x >> y;int s=(y+1)/2;if(s*15-y*4>=x){cout<<s<<endl;}else{s+=(x-(s*15-y*4)+14)/15;cout<<s<<endl;}}
int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t;cin >> t;while (t--) {solve();}return 0;
}

Symmetric Encoding

题意:

存在一种变换操作,有一个原始字符串s,首先构造辅助字符串r,该字符串由字符串s中所有不同的字母组成,按字母顺序书写,然后将s的每一个字符替换成对应r的对称字符。题目给定操作后的字符串,求原始字符串。

题解:

对操作后的字符串去重后排序,然后将给出的字符串对应替换回来即可。

代码:

#include<iostream>
#include<algorithm>
#include<math.h>
#include<vector>
#include<map>using namespace std;void solve(){int n;map<char,char> mp;string a;string b;cin>>n>>a;map<char,int> temp;for(int i=0;i<n;i++){if(!mp[a[i]]){b.push_back(a[i]);mp[a[i]]++;}}sort(b.begin(),b.end());int sz=b.size();for(int i=0;i<=sz;i++){mp[b[i]]=b[sz-i-1];}for(int i=0;i<n;i++){cout<<mp[a[i]];}cout<<endl;
}
int main(){int t;cin>>t;while(t--) solve();return 0;
}

C. Beautiful Triple Pairs

题意:

若满足两个三元组[ b i b_{i} bi, b i + 1 b_{i+1} bi+1, b i + 2 b_{i+2} bi+2]和[ c i c_{i} ci, c i + 1 c_{i+1} ci+1, c i + 2 c_{i+2} ci+2]中仅存在两个对应位置的元素相等则这对三元组为好三元组,给出一个数组,问该数组中存在多少个三元组。

题解:

遍历一下数组,用map存储在此之前每种三元组的数量,每次加上可与当前匹配的。最后减去多加上的。

代码:

#include<iostream>
#include<algorithm>
#include<math.h>
#include<vector>
#include<map>
#define int long longusing namespace std;const int N=2e5+10;
int a[N];void solve(){int n;int ans=0;cin>>n;for(int i=0;i<n;i++) cin>>a[i];map<pair<int,int>,int> x,y,z;map<vector<int>,int> low;for(int i=0;i+2<n;i++){ans+=x[{a[i],a[i+1]}]++;ans+=y[{a[i],a[i+2]}]++;ans+=z[{a[i+1],a[i+2]}]++;vector<int> v={a[i],a[i+1],a[i+2]};ans-=low[v]*3;low[v]++;}cout<<ans<<endl;
}
signed main(){int t;cin>>t;while(t--) solve();return 0;
}

Ingenuity-2

题意:

有两个棋子,一个为r,另一个为h,初始时都在(0,0),有四种操作(N,S,W,E),N向上移动一格,S向下移动一格,E向右移动一格,W向左移动一格。有n个给定操作,你可自由分配给两个棋子,但不可有一个棋子不移动,问如何分配所有操作两个棋子最终在同一个位置上。

题解:

因为N操作和S操作可以相互抵消,E和W也是如此。
1.如果E和S操作次数的差值无法均分给两个棋子则不存在方案,N和S也是如此。2.当两个同时可以相互抵消时,当操作次数为2时,一定不存在,否则可以将其中一个棋子向一个方向移动一次然后在反方向移动一次,别的操作都分配给另一个棋子,这样在最终两个棋子都在原点。
3.当无法抵消时就均分给两个棋子。

代码:

#include<iostream>
#include<algorithm>
#include<math.h>
#include<vector>
#include<map>using namespace std;int t;char inv(char c) {if (c == 'N') return 'S';if (c == 'S') return 'N';if (c == 'E') return 'W';if (c == 'W') return 'E';return ' ';
}int main(){cin >> t;while(t--){int n;cin >> n;string s;cin >> s;string r="R";int x=0,y=0;for(int i=0;i<n;i++){if(s[i]=='N') y+=1;if(s[i]=='S') y-=1;if(s[i]=='E') x+=1;if(s[i]=='W') x-=1;}//计算x,y//初始化全为Rstring ans;for(int i=0;i<n;i++) ans+=r;if(x%2 || y%2) {puts("NO");continue;}if(x==y && y==0){if(n==2) {puts("NO");continue;}//第一个为H,然后找到一个与一个操作相反的操作也为Hans[0]=ans[s.find(inv(s[0]))] = 'H';}else{for(int i=0;i<n;i++){//平分x,yif(s[i]=='N' && y>0) ans[i]='H',y-=2;if(s[i]=='S' && y<0) ans[i]='H',y+=2;if(s[i]=='E' && x>0) ans[i]='H',x-=2;if(s[i]=='W' && x<0) ans[i]='H',x+=2;}}cout << ans << endl;}return 0;
}

E. Money Buys Happiness

题意:

你是一个物理学家。一开始你没有钱,每个月的末尾你会得到 x x x英镑。在第 i i i个月里,你可以付出 c i c_{i} ci英镑,获取 h i h_{i} hi的幸福。在任何时刻你都不能欠钱,问你在m个月过后最多能获得多少幸福。

题解:

#include <bits/stdc++.h>using namespace std;
const int N = 2e6 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> ar;
int mod = 998244353;
const int maxv = 4e6 + 5;
#define endl "\n"void solve()
{int n;cin>>n;ll x;cin>>x;vector<ll> c(n+5),h(n+5);int sum=0;for(int i=1;i<=n;i++) cin>>c[i]>>h[i],sum+=h[i];ll ans=0;vector<ll> dp(sum+5,1E18);dp[0]=0;for(int i=1;i<=n;i++){for(int j=sum+5;j>=h[i];j--){if((i-1)*x>=dp[j-h[i]]+c[i]){dp[j]=min(dp[j],dp[j-h[i]]+c[i]);ans=max(ans,(ll)j);}}}cout<<ans<<endl;
}int main()
{int t;t=1;cin>>t;while(t--){solve();}return 0;
}

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

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

相关文章

洛谷 CF1209D Cow and Snacks

题目来源于&#xff1a;洛谷 题目本质&#xff1a;并查集 解题思路&#xff1a; 我们以每种化为一个点&#xff0c;以每个客人喜欢的两朵花给两朵花连一条无向边。则会出现一定数目的连通块&#xff0c;连通块总个数为 ans。 对每个连通块进行分析&#xff1a;第一个客人买走…

QGraphicsView实现简易地图17『涟漪效果』

前文链接&#xff1a;QGraphicsView实现简易地图16『爆炸效果』 模仿水波荡漾时的涟漪效果&#xff0c;参考了echarts中的散点图 支持设置散点大小、颜色、涟漪线条宽度。 动态演示效果 静态展示图片 核心代码 #pragma once #include "../AbstractGeoItem.h" #incl…

452. 用最少数量的箭引爆气球(中等)

452. 用最少数量的箭引爆气球 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;452. 用最少数量的箭引爆气球 2.详细题解 引爆所有气球&#xff0c;弓箭数要最少&#xff0c;那么每支弓箭尽量多的引爆气球&#xff0c;采用贪心策略。对于…

ThingsBoard网关在燃气泄漏监测中的应用

据不完全统计&#xff0c;全国城市燃气企业的供销差率大约在3%~4%&#xff0c;也就意味着越多的天然气销量就有越多的天然气损失。城市燃气企业计量管理已经接近最不利的状态&#xff0c;开展有效的计量管理势在必行。 智慧燃气综合管理系统 在燃气管网中部署智能传感器、数据采…

AI分析SP和pk进行sk分析

SP原始表行标题代表题目序号&#xff0c;列代表学生&#xff0c;如果学生答对题目为1&#xff0c;否则为0。问题知识点矩阵这个文件横轴代表每个知识点&#xff0c;列标题代表每个题目序号&#xff0c;如果题目包含这个知识点则该处值为1。通过两个文件判断学生对于每个知识点的…

微服务架构中服务间通信的最佳实践是什么?

在微服务架构中&#xff0c;服务间通信的最佳实践通常是使用轻量级的通信机制&#xff0c;如HTTP或RPC。以下是一些关键的最佳实践&#xff1a; 使用RESTful API或类似的设计风格&#xff1a;RESTful API基于标准的HTTP方法和状态码&#xff0c;使得服务之间的通信更加简单和可…

【一站式学会Kotlin】第十一节:非空断言操作符!!

作者介绍: 百度资深Android工程师T6,在百度任职7年半。 目前:成立赵小灰代码工作室,欢迎大家找我交流Android、微信小程序、鸿蒙项目。= 一:通俗易懂的人工智能教程:https://www.captainbed.cn/nefu/ 点一下,打开新世界的大门。 二:【一站式学会Kotlin】免费领取:作者…

规格说明(Specifications)

1.为什么需要规格说明&#xff1f; &#xff08;1&#xff09;许多程序中的严重错误是由于代码之间接口的行为误解引起的。虽然每个程序员心中都有规格说明&#xff0c;但并非所有程序员都将其写下来。这导致团队中的不同程序员对同一个接口有不同的理解。 &#xff08;2&#…

Web安全:文件上传漏洞详解,文件上传漏洞原理、绕过方式和防御方案。

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

Java实现链表

链表 前言一、链表的概念及结构二、链表的分类三、链表的实现无头单向非循环链表实现无头双向链表实现具体代码 四、链表习题五、顺序表和链表的区别 前言 推荐一个网站给想要了解或者学习人工智能知识的读者&#xff0c;这个网站里内容讲解通俗易懂且风趣幽默&#xff0c;对我…

51单片机-实机演示(单多个数码管)

仿真链接&#xff1a; http://t.csdnimg.cn/QAPhx 目录 一.引脚位置 二.多个显示 三 扩展 一.引脚位置 注意P00 - >A ; 这个多个的在左边,右边的A到B是控制最右边那个单个的. 接下来上显示单个的代码 #include <reg52.h> #include <intrins.h> #define u…

大字体学生出勤记录系统网页HTML源码

源码介绍 上课需要一个个点名记录出勤情况&#xff0c;就借助AI制作了一个网页版学生出勤记录系统&#xff0c; 大字体显示学生姓名和照片&#xff0c;让坐在最后排学生也能看清楚&#xff0c;显示姓名同时会语音播报姓名&#xff0c; 操作很简单&#xff0c;先导入学生姓名…

嵌入式学习 (Day:27 IPC --- 进程间通信)

IPC 进程间通信 interprocess communicate &#xff08;即&#xff1a;进程间进行数据交换&#xff09; 三大类&#xff1a; 进程间通信的方式&#xff08;共8种&#xff09; 1、古老的通信方式&#xff08;Linux设计时就有的&#xff09; 无名管道 有名…

用源码建站可能涉及知产侵权,建站的注意!

近日普推知产老杨看到央视报道一家公司用了某建站源码涉及知产侵权&#xff0c;起诉了全国八千多家公司&#xff0c;某梦自从创始人因病转给某公司后&#xff0c;也在大量起诉用其建站代码公司侵权&#xff0c;他们也都是申请了相关的著作权。 有的中小企业在运营中会涉及建站…

c++ 将指针转换为 void* 后,转换为怎么判断原指针类型?

当将指针转换为void后&#xff0c;擦除了指针所指向对象的类型信息&#xff0c;因此无法通过void指针来判断原始指针的类型。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个…

【面试题】JavaScript基础高频面试(下)

10、Javascript 闭包是什么,闭包形成的原因和闭包的用途 &#xff1f; 闭包&#xff08;Closure&#xff09;是 JavaScript 中的一个非常重要的概念。简单地说&#xff0c;闭包就是一个函数能够访问另一个函数的作用域。这是因为在 JavaScript 中&#xff0c;函数是一等公民&a…

Oracle直接路径读解析

目录 一、直接路径读概念二、直接路径读在OLTP和OLAP环境中的不同点三、如何禁止直接路径读方法1&#xff1a;使用事件设置方法2&#xff1a;使用隐含参数 一、直接路径读概念 直接路径读&#xff08;Direct Path Read&#xff09;是Oracle数据库中的一种数据读取机制&#xf…

10编码(数据转化为信号)

目录 数据转化为信号 数字数据编码为数字信号&#xff1a; 数字数据调制为模拟信号&#xff1a; 模拟数据编码为数字信号&#xff1a; 模拟数据调制为模拟信号&#xff1a; 数据转化为信号 数据转化为数字信号要通过编码&#xff0c;转化为模拟信号通过调制 数据又分为数字…

PXI总线测试模块-6939 矢量信号发生器

频率范围&#xff1a;250kHz&#xff5e;6GHz 6939 矢量信号发生器 6939矢量信号发生器提供频率范围250kHz~6GHz的多制式信号&#xff0c;单边带相位噪声优于-120dBc/Hz10kHz&#xff08;载波1GHz&#xff09;、EVM优于1.0%&#xff0c;能够实现高纯连续波输出、模拟调制信号输…

Linux: network: TCP: zero window size/window full 示例

最近遇到一个问题,当前机器的CPU使用率非常高,然后导致其中一个程序处理socket的数据过慢,然后出现下面的zero的示例。 下面是在接收buff用光的时候,发出的 TCP zeroWindows的消息 这种问题就是内存,CPU,网速之间的性能取舍。具体解决的话,需要看具体的需要是什么样的?…