CSP模拟

news2024/9/22 11:37:48

1.3n +-1 3N\pm 1

题目描述

给定一个整数n,只能对n进行以下这几种操作:

1.若n是3的倍数除以3

2.加1

3.减1

求最少多少次操作才能使n变为1?

输入

一行一个整数n

输出

一行一个整数表示答案

样例输入 

4

样例输出 

2

提示

对于样例1:4-1=3,3/3=1

对于60%的数据 0<=n<=10^9

对于100%的数据0<=n<=10^18

思路:

首先优先级肯定能除以3,先除以3.

其次进行减1或者加1,凑3的倍数

以此类推重复操作

注意:当n=0、1、2时,需要特殊处理,结果直接输出1

#

 2.邻而不同

题目描述

有 N 个人,从 1 到 N 编号,站成一圈。1 号的右边是 2 号,2号的右边是 3 号,……,N 号的右边是 1 号。

我们要给每个人一个 0 到 M−1 之间的整数(包括 0 和 M−1)。做这件事有 M^N 种方式,其中有多少种方式满足相邻的两个人的数不同。输出此数目除以 998244353 的余数。

数据范围

2≤N,M≤10^6
N 和 M 是整数。

输入

N M

输出

输出答案。

样例输入 

3 3

样例输出 

6

提示

样例输入 2
4 2
样例输出 2
2
样例输入 3
987654 456789
样例输出 3
778634319

思路:

 

#include<iostream>
using namespace std;
long long int n,m;
long long int modnum = 998244353;
long long int pw(long long int a,long long int b){
    long long int nw=a, ans=1;
    while(b){
        if(b & 1ll){
            ans *= nw;
            ans %= modnum;
        }
        b >>= 1;
        nw *= nw;
        nw %= modnum;
    }
    return ans;
}
int main(){
    cin >> n >> m; 
    cout << (pw (m - 1, n) + ((n & 1ll) ? (1 - m):(m - 1)) + modnum) % modnum << endl;
    return 0;
}

 3.代金券

题目描述

你到商店,要买 N 个东西。第 i 个东西的价格是 Pi​ 元。
你有 M 张代金券。第 i 张代金券可以用在一个价格不低于 Li​ 元的东西上,用了这张代金券可以获得 Di​ 元优惠。
每张代金券只能用一次。不能把多张代金券用在同一个东西上。
要买 N 个东西,至少要花多少钱?

数据范围

1≤N,M≤2×10^5
1≤Pi​≤10^9
1≤Di​≤Li​≤10^9
输入的值都是整数。

输入

N M
P_{1}......P_{N} 

L_{1}......L_{M}

D_{1}......D_{M}

输出

输出答案。

样例输入 

3 3
4 3 1
4 4 2
2 3 1

样例输出 

4

提示

样例2
输入

10 5
9 7 1 5 2 2 5 5 7 6
7 2 7 8 2
3 2 4 1 2

输出

37

思路:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 200010;
int p[maxn];
multiset<int> ms;
multiset<int>:: iterator it;
struct node {
    int l, d;
} vouchers[maxn];
bool cmp(node a, node b) {
    if (a.d != b.d) {
        return a.d > b.d;
    }
    return a.l < b.l;
}
int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    long long sum = 0;
    for (int i = 0; i < n; i++) {
        scanf("%d", &p[i]);
        ms.insert(p[i]);
        sum += p[i];
    }
    for (int i = 0; i < m; i++) {
        scanf("%d", &vouchers[i].l);
    }
    for (int i = 0; i < m; i++) {
        scanf("%d", &vouchers[i].d);
    }
    sort(p, p + n, greater<int>());
    sort(vouchers, vouchers + m, cmp);
    int j = 0;
    for (int i = 0; i < m; i++) {
        it= ms.lower_bound(vouchers[i].l);
        if (it != ms.end()) {
            sum -= vouchers[i].d;
            ms.erase(it);
        }
    }
    printf("%lld\n", sum);
    return 0;
}

4.疫情

题目描述

疫情期间,居民被封锁在家中,一栋楼居民楼可以视作尺寸为n行n列的矩阵,矩阵的每个位置为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人感染了病毒,以后每天,感染病毒的人会使其邻居感染病毒,(已经得病的不变),空房间不会传染。请输出第m天感染病毒的人数。

输入

第一行只有一个整数n,表示尺寸
接下来为n行n列的矩阵,
矩阵中 '.'表示未感染的人
'#'表示空房间
'@'表示感染病毒的人
最后一行是一个整数m

输出

输出第m天,感染的人数。

样例输入 

5
....#
.#.@.
.#@..
#....
.....
4

样例输出 

16

提示

1<=n,m<=100

思路:搜索

#include <iostream>
using namespace std;
int f[4][2] = {{0,1},{1,0},{-1,0},{0,-1}};
char map[110][110];
int main(){
    int n, m;
    cin >> n;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            cin >> map[i][j];
        }
    }
    cin >> m;
     
    while(--m){
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n; j++){
                if(map[i][j] != '@')continue;//未感染跳过
                for(int k = 0; k < 4; k++){//四个方向进行传染
                    int x = i + f[k][0];
                    int y = j + f[k][1];
                    if(map[x][y] == '.'){
//                        cout << x<<"---" << y<<"+++"<<endl;
                        map[x][y] = '*';//当前天刚感染  避免更新当前天感染的人再传染 
                    }
                }
            }
        }
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n; j++){
                if(map[i][j] == '*')
                    map[i][j] = '@';// 标记回来,不会对下次产生影响 
        }
    }
    }
    int cnt = 0;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            if(map[i][j] == '@')
                cnt++;
        }
    }
    cout << cnt << endl;
    return 0;
}

 

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

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

相关文章

亚马逊鲲鹏系统强大的指纹系统可有效防止账号关联

亚马逊鲲鹏系统最新的防指纹技术支持绑定不同的代理IP&#xff0c;可以根据ip创建不同的指纹环境&#xff0c;让账号伪装成来自不同地点、不同设备的流量&#xff0c;每个账号环境隔离开来&#xff0c;实现了完全独立的操作任务&#xff0c;避免了账户指纹关联和操作轨迹关联。…

搜集的升压芯片资料

DC-DC升压芯片,输入电压0.65v/1.5v/1.8v/2v/2.5v/2.7v/3v/3.3v/3.6v/5v/12v/24v航誉微 HUB628是一款超小封装高效率、直流升压稳压电路。输入电压范围可由低2V伏特到24伏特&#xff0c;升压可达28V可调&#xff0c;且内部集成极低RDS内阻100豪欧金属氧化物半导体场效应晶体管的…

桌面云架构讲解(VDI、IDV、VOI/TCI、RDS)

目录 云桌面架构 VDI 虚拟桌面基础架构 IDV 智能桌面虚拟化 VOI/TCI VOI 虚拟系统架构 TCI 透明计算机架构 RDS 远程桌面服务 不同厂商云桌面架构 桌面传输协议 什么是云桌面 桌面云是虚拟化技术成熟后发展起来的一种应用&#xff0c;桌面云通常也称为云桌面、VDI等 …

Swagger3 GET请求,使用对象接收 Query 参数,注解怎么写?

简中互联网上就没一个靠谱的答案&#xff0c;最终翻到了 Github Issue 上才解决&#xff0c;真 TMD…… CSDN 就一坨 shit mountain 解决方案 原文&#xff1a;https://github.com/swagger-api/swagger-core/issues/4177 太长不看&#xff1a; 请求方法参数上加 ParameterObj…

【异步并发编程】使用aiohttp构建Web应用程序

文章目录 1. 写在前面1. 什么是aiohttp&#xff1f;1.1. 什么是异步编程&#xff1f; 2. 安装aiohttp3. 异步HTTP服务器4. 异步请求5. aiohttp REST实例 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力…

行情不好,程序员的路在哪里?

最近有人提问&#xff0c;行情不好&#xff0c;程序员的路在哪里&#xff1f;今天的文章从远程工作、市场和流量思维、新技术、自媒体几个维度来讲讲。 远程工作 如果你在二三线城市&#xff0c;机会比较少&#xff0c;可以考虑一下远程工作。找一份美国或欧洲的远程工作&…

开源网安受邀参加网络空间安全合作与发展论坛,为软件开发安全建设献计献策

​11月10日&#xff0c;在广西南宁举办的“2023网络空间安全合作与发展论坛”圆满结束。论坛在中国兵工学会的指导下&#xff0c;以“凝聚网络空间安全学术智慧&#xff0c;赋能数字经济时代四链融合”为主题&#xff0c;邀请了多位专家及企业代表共探讨网络安全发展与数字经济…

助力燃气安全运行:智慧燃气管网背景延展

关键词&#xff1a;城市燃气管网、智慧燃气管网、智慧管网、智慧燃气管网解决方案、智慧燃气 01背景 当前&#xff0c;随着我国城市化进程不断加快&#xff0c;城市燃气管网也不断延伸&#xff0c;运行规模庞大&#xff0c;地下管线复杂&#xff0c;不少城市建设“重地上轻地…

Web后端开发_01

Web后端开发 请求响应 SpringBoot提供了一个非常核心的Servlet 》DispatcherServlet&#xff0c;DispatcherServlet实现了servlet中规范的接口 请求响应&#xff1a; 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据响应&#xff08;HttpServletRe…

2011年09月29日 Go生态洞察:image/draw包的深度解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

会展服务预约小程序的作用如何

不少场景都会有会展服务需求&#xff0c;比如婚宴、年会、展会等&#xff0c;往往需要租订场地&#xff0c;不同地域不同时间地点等&#xff0c;尤其大城市需求频次较高。 但在实际经营中&#xff0c;会员服务企业面临着一些难题。对多数企业来讲&#xff0c;线上是不可或缺的…

地面沉降监测站可以监测什么?

随着城市化的飞速发展&#xff0c;地面沉降问题日益凸显。为了及时掌握土地沉降情况&#xff0c;确保人们安全&#xff0c;就需要借助地面沉降监测站的力量。 一、实时监测土地沉降 地面沉降监测站的核心功能是实时监测土地沉降。通过高精度GNSS位移监测站和先进的数据分析技术…

使用Java实现一个简单的贪吃蛇小游戏

一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。 然后&#xff0c;创建贪吃蛇游戏的Java项目命名为snake_game&#xff0c;并在这个项目里创建一个文件夹命名为images&#xff0c;将图片素材导入文件夹。 再在src文件下创建两个包&#xff0…

性能压测工具:Locust详解

一、Locust介绍 开源性能测试工具https://www.locust.io/&#xff0c;基于Python的性能压测工具&#xff0c;使用Python代码来定义用户行为&#xff0c;模拟百万计的并发用户访问。每个测试用户的行为由您定义&#xff0c;并且通过Web UI实时监控聚集过程。 压力发生器作为性…

在Android上使用Jetpack Compose定制下拉刷新

在Android上使用Jetpack Compose定制下拉刷新 在Jetpack Compose中向LazyList添加下拉刷新非常简单。说真的&#xff0c;只需几行代码。然而&#xff0c;默认的外观和感觉并不是那么令人满意。我们希望做得更好一些&#xff0c;类似于iOS版本&#xff1a;当用户向下拉动列表时…

opencv差值法检测移动物体代码

void CrelaxMyFriendDlg::OnBnClickedOk() {hdc this->GetDC()->GetSafeHdc();// TODO: 在此添加控件通知处理程序代码string addrImg "c:/Users/actorsun/Pictures/";string addrVideo "c:/Users/actorsun/Videos/";string addr addrVideo &qu…

使用阿里云服务器学习Docker

首先我这里选择的系统服务器是CentOS 7.9 64位 因为centos系统里面的安装指令是&#xff1a;yum,而非apt-get. yum install docker -y试着建立一个容器&#xff1a; docker run -d -p 80:80 httpd启动docker的守护进程&#xff1a; sudo systemctl start docker 查看Docke…

基于springboot实现结合疫情情况的婚恋系统【项目源码】计算机毕业设计

基于springboot实现结合疫情情况的婚恋系统演示 SpringBoot框架 SpringBoot是一个全新开源的轻量级框架。基于Spring4.0设计&#xff0c;其不仅继承了Spring框架原来有的优秀特性&#xff0c;而且还通过简化配置文件来进一步简化了Spring应用的整个搭建以及开发过程。另外在原…

人机功能分配困难的原因之一

人机功能分配困难的原因之一是人类与机器都不能同时确定事实与价值的大小。事实是指客观存在的数据、信息和情况&#xff0c;而价值是指对这些事实的评判和喜好。人类和机器在确定功能分配时&#xff0c;都需要考虑到这两个方面。 首先&#xff0c;人类和机器在事实方面的认知能…

​ArcGIS Pro怎么生成山顶点

山顶点是指山脉、山丘或山脉系统中最高的地点&#xff0c;通常是山的最高峰&#xff0c;这是山地地貌中的最高点&#xff0c;往往是山脉的标志性特征之一&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro获取山顶点&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用…