Codeforces Round 966 (Div. 3)(A,B,C,D,E,F)

A. Primary Task

签到

void solve()
{string s;cin>>s;bool bl=true;if(s.size()<=2)bl=false;else{if(s.substr(0,2)=="10"){if(s[2]=='0')bl=false;else if(s[2]=='1'&&s.size()<=3)bl=false;	}else bl=false;}if(bl)cout<<"YES\n";else cout<<"NO\n";return ;
}

B. Seating in a Bus

签到

#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
int q[N],a[N];
void solve()
{cin>>n;_rep(i,0,n+1)a[i]=0;_rep(i,1,n)cin>>q[i];_rep(i,1,n){if(i==1)a[q[i]]=1;else if(!a[q[i]-1]&&!a[q[i]+1]){cout<<"NO\n";return;}a[q[i]]=1;}cout<<"YES\n";return;
}

C. Numeric String Template

签到

题意是字符串和数组必须一一对应,注意要开两个map避免一个数字对应多个字母

#define _for(i,n) for(int i=0;i<(n);++i)
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
int q[N];
void solve()
{cin>>n;_rep(i,0,n-1)cin>>q[i];cin>>m;while(m--){string s;cin>>s;map<int,int>mp,has;if(s.size()!=n)cout<<"NO\n";else{bool bl=false;_for(i,s.size()){if(!mp.count(s[i])){if(!has.count(q[i]))mp[s[i]]=q[i],has[q[i]]=s[i];else {cout<<"NO\n";bl=true;break;}}else if(mp[s[i]]!=q[i]){cout<<"NO\n";bl=true;break;}}if(!bl)cout<<"YES\n";}}return ;
}

D. Right Left Wrong

题意,给定长度为n的数组和一个长度为n的LR序列,每次选择L***R都可以获取L~R之间的所有数字的和,但是每个L,R只能用一次,问能得到的最大值是多少

可以发现,无论怎么选择区间,如果两个区间不是相互包含的关系,那么就有更优的解,那就是选两个区间最左边没使用过的L和两个区间最右边没使用过的R,这样可以保证答案最大

举例说明:

第一行不如第二行(第二行多出来两个没有选择的”RL“)

第二行不如第三行(第三行选择最左L和最右R就可以包括第二行的所有情况)

第四行和第三行等价(相交也可以转化为包含的关系)

综上所述,只需要贪心 寻找从1~n 每个L的最右边没使用过的R就可以了,然后用前缀和把每一次的分数加上

#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
int q[N],qian[N];
void solve()
{cin>>n;vector<int>v;_rep(i,1,n)cin>>q[i],qian[i]=q[i]+qian[i-1];string s;cin>>s;s=" "+s;_rep(i,1,n)if(s[i]=='R')v.pb(i);int now=v.size()-1,res=0;_rep(i,1,n){if(s[i]=='L'){if(now>=0&&v[now]>i)res+=qian[v[now]]-qian[i-1],now--;else break;}}cout<<res<<'\n';return ;
}

E. Photoshoot for Gorillas

题意抽象出来就是W个大猩猩每一只高度为a[i],然后在一个n*m的矩阵的格子里面,每次划定一个k*k的正方形,奇观度的值加上正方形内部所有大猩猩的高度,在划定完所有不同位置的k*k正方形后为了使得奇观度最大,大猩猩应该如何放置

思路:一些格子被重复算了,那么重复次数越多的格子放的大猩猩高度尽可能高就能使答案最大,那么就把所有的格子倍率,也就是重复次数算出来,然后把格子倍率和大猩猩高度分别排序就能计算出最后答案

然后就是计算格子倍率的问题,现在只考虑列的重复次数样例如下

这个位置列被重复算的次数最多是2,那么也就是说,列重复的次数取决于这个点到左右两端的距离的最小值,也就是x=min(j,m-j+1),同时重复次数显然不能超过k,所以x=min(min(j,m-j+1),k);

但是还有一个问题,假设这个点到左端点的距离取到最小值,但是此时小正方形右边可能会超出矩形的范围怎么办

那么还要加一个约束条件,假设此时的小正方形的最左边为y,那么就有y+k-1<=m,也就是y<=(m-k+1)

所以最后计算列重复的次数的公式为:x=min(min(j,m-j+1),min(k,m-k+1));

与行重复次数相乘就是某一个点的重复次数

代码实现

#include <map>
#include <set>
#include <queue>
#include <deque>
#include <cmath>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define pp pop_back()
#define int long long
#define laile cout<<"laile"<<endl
#define lowbit(x) ((x)&(-x))
#define double long double
#define sf(x) scanf("%lld",&x)
#define sff(x,y) scanf("%lld %lld",&x,&y)
#define sd(x) scanf("%Lf",&x)
#define sdd(x,y) scanf("%Lf %Lf",&x,&y)
#define _for(i,n) for(int i=0;i<(n);++i)
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
#define _pre(i,a,b) for(int i=(a);i>=(b);--i)
#define all(x) (x).begin(), (x).end()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
typedef unsigned long long ULL;
typedef pair<int,int>PII;
const int N=1e6+10,INF=4e18;
int n,m,k,cn;
int q[N];
void solve()
{cin>>n>>m>>k;cin>>cn;_rep(i,1,cn)cin>>q[i];sort(q+1,q+1+cn,greater<int>());vector<int>now;_rep(i,1,n)_rep(j,1,m)now.pb(min(min(i,n-i+1),min(k,n-k+1))*min(min(j,m-j+1),min(k,m-k+1)));sort(all(now),greater<int>());int res=0;_rep(i,0,cn-1){
//		cout<<q[i+1]<<" "<<now[i]<<endl;res+=q[i+1]*now[i];}cout<<res<<'\n';return ;
}
signed main()
{IOS;int T=1;cin>>T;while(T--)solve();return 0;
}

F. Color Rows and Columns

题意:

针对每一个小矩形(a*b),每次涂色都选择当前边最短的那条(假设为a),然后使用a次操作获得一分

然后未涂色的矩形又是一个新的小矩形,直到最后一步1*1的矩形,可以用1次操作获得2分,这样操作1为最优的操作

那每个小矩形要操作几次?要从每个小矩形上得到多少分才是最优解?感觉贪心不能解决这个问题,于是用DP

由于要至少得到V分,那么不妨设V为体积

假设f[i]:得分为i的时候操作次数最少为f[i]

那么每一个小矩形显然要选择一种得分v来对应相应的最小操作数为w

显然每一个小矩形都可以计算出几组{v,w}然后选择其中的一组

那么用一个分组背包就可以解决这个问题

#include <map>
#include <set>
#include <queue>
#include <deque>
#include <cmath>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define pp pop_back()
#define int long long
#define laile cout<<"laile"<<endl
#define lowbit(x) ((x)&(-x))
#define double long double
#define sf(x) scanf("%lld",&x)
#define sff(x,y) scanf("%lld %lld",&x,&y)
#define sd(x) scanf("%Lf",&x)
#define sdd(x,y) scanf("%Lf %Lf",&x,&y)
#define _for(i,n) for(int i=0;i<(n);++i)//
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
#define _pre(i,a,b) for(int i=(a);i>=(b);--i)
#define all(x) (x).begin(), (x).end()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
typedef unsigned long long ULL;
typedef pair<int,int>PII;
const int N=1e6+10,INF=4e18;
int n,m;
int a[N],b[N];
struct aa
{int v,w;
};
int f[10010];
void solve()
{cin>>n>>m;memset(f,0x3f,(m+1)*8);f[0]=0;_rep(i,1,n){int a,b,w=0,v=0;cin>>a>>b;vector<aa>q;if(a>b)swap(a,b);while(b>a){b--;w+=a,v++;q.pb({v,w});}if(a==b&&a==1)q.pb({v+2,w+1});else{_pre(i,a,1){w+=i,v++;q.pb({v,w});if(i==a)continue;w+=i,v++;if(i!=1)q.pb({v,w});else q.pb({v+1,w});}}
//		for(auto i:q)cout<<i.v<<" "<<i.w<<endl;for(int j=m;j>=0;j--)for(int k=0;k<q.size();k++)
//				if(q[k].v<=j)f[j]=min(f[j],f[max(j-q[k].v,0ll)]+q[k].w);}if(f[m]!=0x3f3f3f3f3f3f3f3f)cout<<f[m]<<'\n';else cout<<"-1\n";return ;
}
signed main()
{IOS;int T=1;cin>>T;while(T--)solve();return 0;
}

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

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

相关文章

一套完整的NVR网络硬盘录像机解决方案和NVR程序源码介绍

随着网络技术的发展&#xff0c;视频数据存储的需求激增&#xff0c;促使硬盘录像机&#xff08;DVR&#xff09;逐渐演变为具备网络功能的网络视频录像机&#xff08;NVR&#xff09;。NVR&#xff0c;即网络视频录像机&#xff0c;负责网络视音频信号的接入、存储、转发、解码…

答题情况和每题得分

文章目录 1.提交答题情况1.PracticeDetailController.java2.PracticeDetailService.java3.PracticeDetailServiceImpl.java4.PracticeDetailDao.java5.PracticeDetailDao.xml6.reqSubmitSubjectDetailReq.java 7.dto1.SubjectDetailDTO.java2.SubjectDTO.java3.SubjectOptionDT…

<C语言>指针的深度学习

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.&数组名与数组名 3.数组指针的使用 四、数组参数、指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 六、函数指针数组 七、指向函数指针数组的指针 八、回调函数 1…

HCIP-HarmonyOS Application Developer 习题(三)

1、在JS(JavaScript)Ul框架中&#xff0c;完成对平台层进行抽象&#xff0c;提供抽象接口&#xff0c;对接到系统平台的是哪一层? A. 应用层 B. 前端框架层 C. 引擎层 D. 平台适配层 答案&#xff1a;D 分析&#xff1a;适配层主要完成对平台层进行抽象&#xff0c;提供抽象接…

iOS更新后在IPhone上恢复丢失的文本消息的4种方法

您是否在更新 iPhone 软件后丢失了重要的短信&#xff1f;丢失数据可能会令人沮丧&#xff0c;尤其是当它包含有价值的信息或感性信息时。幸运的是&#xff0c;有一些方法可以在iOS更新后恢复iPhone上丢失的短信。 在这篇博文中&#xff0c;我们将讨论可用于恢复丢失的短信的不…

Edge浏览器 (文本选择)I型光标消失不见问题

Edge浏览器 I型&#xff08;文本选择&#xff09;光标消失不见的问题。 在白色背景中 光标也变成了纯白色&#xff0c;所有都是纯白 也就看不到光标在哪里了&#xff0c;会影响正常使用。 解决方案&#xff1a;把默认的I型光标替换掉 选择一个 beam*.cur , 可以在预览框中查看…

C语言家教记录(六)

导语 本次授课的内容如下&#xff1a;指针&#xff0c;指针和数组 辅助教材为 《C语言程序设计现代方法&#xff08;第2版&#xff09;》 指针 指针变量 计算机按字节划分地址&#xff0c;每个地址访问一个字节 指针变量指向变量的地址&#xff0c;指的是变量第一个字节的…

Leetcode JAVA刷刷站(39)组合总和

一、题目概述 二、思路方向 为了解决这个问题&#xff0c;我们可以使用回溯算法来找到所有可能的组合&#xff0c;使得组合中的数字之和等于目标数 target。因为数组中的元素可以无限制地重复选择&#xff0c;所以在回溯过程中&#xff0c;我们不需要跳过已经选择的元素&#x…

yolov8交互式指定区域行人计数/车辆计数

使用 Ultralytics YOLOv8 进行区域计数 (视频推理) 区域计数是一种用于统计指定区域内物体数量的方法&#xff0c;当考虑多个区域时&#xff0c;这种方法能提供更为精细的分析。这些区域可以根据用户的需求进行调整&#xff0c;并且计数过程能够在实时视频中进行。 目录 装…

Ricardo Milos

目录 一、题目 二、思路 三、payload 四、思考与总结 一、题目 <!-- Challenge --> <form id"ricardo" method"GET"><input name"milos" type"text" class"form-control" placeholder"True" va…

顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评

Q&#xff1a;顺丰科技2025届校园招聘面向对象是&#xff1f; A&#xff1a;2025届应届毕业生&#xff0c;毕业时间段为2024年10月1日至2025年9月30日&#xff08;不满足以上毕业时间的同学可以关注顺丰科技社会招聘或实习生招聘&#xff09;。 Q&#xff1a;我可以投递几个岗…

c语言---文件

这一节我准备分三个部分来带领大家了解文件 ——一、有关文件的基础知识 ————二、文件的简单操作 ————————三、文件结束的判定 ————————————四、文件缓冲区 一、文件的基础知识&#xff1a; 首先在了解文件之前&#xff0c;我们需要了解C/C程序内存…

安卓相关环境配置

安卓相关环境配置 偶尔更新。。。 JEB&#xff08;动态调试好用&#xff09; JEB动态调试Smali-真机/模拟器&#xff08;详细&#xff0c;新手必看&#xff09; 夜步城 JADX官网&#xff08;静态分析&#xff09; https://github.com/skylot/jadx/releases/tag/v1.5.0 雷…

MATLAB多项式拟合

订阅专栏或下载资源可以获得源代码:https://download.csdn.net/download/callmeup/89632160 拟合和插值 拟合和插值是两种常见的数学方法,用于以某种方式近似或估计实际数据。 拟合是在给定一组已知数据点的情况下,通过选择一个合适的数学模型来拟合数据。拟合的目标是找到…

民航管理局无人机运营合格证技术详解

1. 证书定义与意义 民航管理局无人机运营合格证&#xff08;以下简称“合格证”&#xff09;是对符合民航法规、规章及标准要求的无人机运营单位或个人进行资质认证的重要证明。该证书旨在确保无人机运营活动的安全、有序进行&#xff0c;保护国家空域安全&#xff0c;维护公众…

Linux·权限与工具-yum与vim

1. Linux软件包管理器 yum 1.1 什么是软件包 在Linux下安装软件&#xff0c;一个通常的办法是下载到程序的源代码&#xff0c;并进行编译&#xff0c;得到可执行程序。但这样做太麻烦了&#xff0c;于是有些人把一些常用的软件提前编译好&#xff0c;做成软件包(可以理解成Win…

超有性价比深度学习卡特斯拉 P100,16G大显存,Stable Diffusion AI 绘画利器

超有性价比深度学习卡特斯拉 P100&#xff0c;16G大显存&#xff0c;Stable Diffusion AI 绘画利器 在当今数字化创作的时代&#xff0c;AI 绘画技术正以惊人的速度发展&#xff0c;为艺术家和创作者们带来了全新的可能性。而要实现高效的 AI 绘画&#xff0c;一款性能卓越的显…

Camera基础知识系列(5)——景深

目录 一. 前言 二. 景深 2.1 弥散圆 2.2 容许弥散圆 2.2 景深(DoF) 三. 如何控制景深 1. 光圈因素 2. 容许弥散圆因素 四. 总结 一. 前言 在摄影中&#xff0c;我们有时会有模糊背景、突出主体的需求&#xff0c;即背景虚化。如下图所示&#xff0c;左边是没有做背景虚化…

序列建模之循环和递归网络 - 递归神经网络篇

序言 在序列建模的广阔领域中&#xff0c;递归神经网络&#xff08; Recursive Neural Network, RNN \text{Recursive Neural Network, RNN} Recursive Neural Network, RNN&#xff09;&#xff0c;注意此处的 RNN \text{RNN} RNN与常用于序列处理的循环神经网络在命名上有所…

打包时未添加camera模块,请参考https://ask.dcloud.net.cn/arss/1ooticle/283

今天在app打包使用的时候突然发现app在拍照上传照片的时候遇到这个问题 遇到这种情况通常是因为app打包的时候manifestjson文件中App模块配置中的Camera&Gallery配置没有打开&#xff0c;点击相应选项勾选即可 然后再上传打包就好了! 哈哈哈好久没写博客了最近太忙了&…