VJ结营测试
A
这题其实自己画一下图可以发现当奇数行为每行都为W,偶数行为W与R交替出现,就可以得到满足题意的图形了。
点击查看代码
#include<bits/stdc++.h>
using namespace std;
void solve()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		if(i%2==1){
			for(int j=1;j<=n;j++) cout<<'W';
			cout<<endl;
		}
		else {
			for(int j=1;j<=n;j++){
				if(j%2==1) cout<<'W';
				else cout<<'R';
			}
			cout<<endl;
		}
	}
}
signed main()
{
	int t=1;
	while(t--)
	{
		solve();
	}
	return 0;
}
B
这题的思路就是你可以把它想象成找多少个不重复的线段区间,我们将每个区间按尾部端点大小进行排序,然后比较前一个区间的尾部和下一个区间的头部,若头部大于等于那个尾部,答案就加上1
点击查看代码
#include<bits/stdc++.h>
using namespace std;
struct a{
	int h;//每个区间的头和尾巴;
	int t;
};
bool cmp(a&x,a&y){
	return x.t<y.t;//让每个区间按尾部大小进行排序
}
int solu(vector<a>&ve){
	if(ve.empty()) return 0;
	int cnt=1;
	int end=ve[0].t;
	for(int i=1;i<ve.size();i++)
	{
		if(ve[i].h>=end)//后一个区间的头大于等于前一个区间的尾;
		{
			cnt++;
			end=ve[i].t;
		}
	}
	return cnt;
}
void solve()
{
	 int n,k;
	cin>>n>>k;
	vector<a>ve(k);
	for(int i=0;i<k;i++){
		cin>>ve[i].h>>ve[i].t;
	}
	sort(ve.begin(),ve.end(),cmp);
	cout<<solu(ve);
}
int main()
{
	int t=1;
	while(t--){
		solve();
	}
}
C
这题将故事篇幅排序一下然后算一下前缀和,在通过upper_bound找到第一个大于该数的下标即可
点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
void solve()
{
	ll n,k,a[N],sum[N],b[N];
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=k;i++) cin>>b[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++)
	{
		sum[i]=sum[i-1]+a[i];
	}
	for(int i=1;i<=k;i++)
	{
		ll m=upper_bound(sum,sum+n,b[i])-sum;
		if(sum[m]<=b[i]) cout<<n<<" ";
		else cout<<m-1<<" ";
	}
}
int main()
{
	int t=1;
	while(t--)
	{
		solve();
	}
	return 0;
}
D
这题有几个点需要注意,开头必须是(,最后必须是 ),而且如果n为奇数就无法满足,题意应该是让我们验证正确的括号形式,(()()()()),((((()),正括号和反括号数量要相等,且从左往右数时反括号的数不能多于正括号,开一个计数指针,若计数为负数则不符合
点击查看代码
#include <bits/stdc++.h>
using namespace std;
void solve()
{
	int n,count1=0;
	string s;
	cin>>n;
	cin>>s;
	if(n%2==1) cout << "NO";
	else{
		for(int i=0;i<s.size();i++){
			if(s[i]=='(') count1++;
			if(s[i]==')') count1--;
			if(count1<0){
				cout<<"NO";
				return ;
			}
		}
		if(s[0]=='('&&s[s.size()-1]==')'&&count1==0){
			cout<<"YES";
		}
		else cout<<"NO";
	}
}
int main()
{
	solve();
	return 0;
}
E
要让总积分最高,那么只需要让队伍实力两两不相同即可,先给队伍实力按照升序排序,若下一个队伍的实力小于等于前一个队伍的实力,让下一个队伍等于前一个队伍的实力+1
点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
void solve()
{
	ll n,a[N],ans=0;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n);
	for(int i=1;i<n;i++){
		if(a[i]<=a[i-1]){
		ans+=a[i-1]-a[i]+1;
		a[i]=a[i-1]+1;
		}
	}
	cout<<ans;
}
int main()
{
	int t=1;
	while(t--){
		solve();
	}
	return 0;
}
F
高精度加法,模板题
点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
vector<int> add(vector<int>&A,vector<int>&B)
{
	vector<int>C;
	int t=0;
	for(int i=0;i<A.size()||i<B.size();i++){
		if(i<A.size()) t+=A[i];
		if(i<B.size()) t+=B[i];
		C.push_back(t%10);
		t/=10;
	}
	if(t) C.push_back(t);
	return C;
}
void solve()
{
	string a,b;
	cin>>a>>b;
	vector<int>A,B;
	for(int i=a.size()-1;i>=0;i--) {
		A.push_back(a[i]-'0');
	}
	for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
	auto C=add(A,B);
	for(int i=C.size()-1;i>=0;i--){
		cout<<C[i];
	}
}
int main()
{
	int t=1;
	while(t--){
		solve();
	}
	return 0;
}
J
这一题虽然是分类讨论cax,xat,cxt,但是有很多细节需要注意,确保每个字母的顺序是对的,先讨论cax和cxt,再讨论xat,讨论cax时注意a不可以在最末尾,讨论cxt的时候注意t不可以在c的后面,讨论xat的时候把0位留给x,从第一位开始找
点击查看代码
#include <bits/stdc++.h>
using namespace std;
void solve()
{
    int n,cntc=0,cnta=0,cntt=0,posa,posc,post;
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        //先整个扫一遍分类讨论ca,ct,at,cat;
        if(s[i]=='c'&&cntc==0) {//找第一个c
            cntc=1;
            posc=i;
        }
        if(s[i]=='a'&&cntc==1&&cnta==0){//找第一个c后面的第一个a,cntc=1才标记,这个条件就有posa>posc了
            cnta=1;
            posa=i;
        }
        if(s[i]=='t'&&cntc==1) {//找第一个c后面的t
            post=i;
            cntt=1;
        }
    }
    //cax
	if(cntc&&cnta&&posa+1<s.size()){
		cout<<posc+1<<" "<<posa+1<<" "<<posa+2;
	}//cxt
	else if(cntc&&cntt&&posc+1<post)//最低满足c后面第二位是t即可
	{
	 cout<<posc+1<<" "<<posc+2<<" "<<post+1;
	 }
	 else {//xat
	 	cnta=0,cntt=0;//记得重新标记一下
	 	for(int i=1;i<s.size();i++) //从1开始第0个位置留给x
	 	{
	 		if(s[i]=='a'&&cnta==0){
	 			cnta=1;
	 			posa=i;
			 }
			 if(s[i]=='t'&&cnta==1){
			 	cntt=1;
			 	post=i;
			 	break;
			 }
	}
		if(cntt&&cnta){
			cout<<1<<" "<<posa+1<<" "<<post+1;
			return;
		}
	 	cout<<-1;
	 }
}
int main()
{
    int t=1;
    while(t--)
    {
        solve();
    }
    return 0;
}
VJ结营测试的更多相关文章
- 【FICO系列】SAP FICO-模块 关于固定资产年结和折旧的问题
		公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FICO系列]SAP FICO-模块 关于固定 ... 
- 学Python,只有不到15%的同学会成功
		我给大家唱首歌:<坚持的意义> 你看过了许多书籍 你看过了许多视频 你迷失在屏幕上每一道短暂的光阴 你品尝了代码的糟心 你踏过算法的荆棘 你熟记书本里每一段你最爱的公式 却说不出你爱Pyt ... 
- Elasticsearch 安装中文分词
		github地址:https://github.com/medcl/elasticsearch-analysis-ik 注意版本要对应,否则编译完成后elasticsearch不能正常启动 下载文件, ... 
- 关于LIST.Select().ToList()慢的问题
		var sendlist = emailList.Select(email => new MailMessage { MailServer = SMTPServer, UserName = Se ... 
- [转帖]Oracle 11G RAC For Windows 2008 R2部署手册
		Oracle 11G RAC For Windows 2008 R2部署手册(亲测,成功实施多次) https://www.cnblogs.com/yhfssp/p/7821593.html 总体规划 ... 
- PKUWC 2018 铁牌记
		Day –INF: 联赛后根据分数一部分人继续停课.由于本蒟蒻撞上了狗屎运,联赛分数还行,可参加NOIWC和PKUWC,故继续停课训练.期间补全了一堆知识点,并成功翘掉期末考.(然而该还的还是要还的, ... 
- WCF使用net.tcp传输文件
		摘要:今天看了一些官方的资料和配置,简单写了一个WCF服务来传递一个文件,借此看看WCF传输大文件的能力,这里采用的是NetTcp绑定,之所以没有采用 basicHttpBinding是因为考虑这种方 ... 
- Oracle 11G RAC For Windows 2008 R2部署手册(亲测,成功实施多次)
		总体规划 服务器规划 1.建议使用两台硬件配置一模一样的服务器来作为 RAC 环境的两个物理节点 2.服务器至少需要配置两块物理网卡 3.服务器规划表: 节点 主机名 本地磁盘大小 操作系统 内存大小 ... 
- PKUWC2019 酱油记
		目录 PKUWC2019 酱油记 day0 Day1 Day2 Day3 Day4 PKUWC2019 酱油记 day0 早上从镇中出发到栎社机场,然后才了解到原来充电宝电脑是必须随身(原以为必须托运 ... 
- 【RAC】 RAC For W2K8R2 安装--操作系统环境配置 (二)
		[RAC] RAC For W2K8R2 安装--操作系统环境配置 (二) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可 ... 
随机推荐
- C语言实现高阶阶乘(1000的阶乘C语言实现)
			由于C语言的变量的大小的限制,使用已有变量无法保存阶乘结果,所以使用数组保存结果,从而使得无法保存的结果得以保存. #include <stdio.h> void Print_Factor ... 
- centos8网络配置问题
			由于RHEL8与centos8基本一样,所以以下方法同样适用于RHEL8 在centos8上进行网络配置时,出现以下问题: 意思是无法找到network.service 出现错误的原因是centos8 ... 
- linux:init
			init命令启动级别的含义(0-6) 0:停机1:单用户形式,只root进行维护2:多用户,不能使用net file system3:完全多用户4:未使用(系统之间可能略有不同,有些人的博客写的是安全 ... 
- C# Dev GridView当前行
			DEV获取GridControl当前行 //直接通过gridView获取当前行 dr=this.gridView1.GetDataRow(this.gridView1.FocusedRowHandle ... 
- 开源标杆!天翼云TeleDB入选《2024央国企开源项目典型实践》!
			近日,由中国通信标准化协会主办.中国信通院承办的2024 OSCAR开源产业大会在北京召开,会上发布<2024央国企开源项目典型实践>,天翼云科技有限公司打造的"TeleDB分布 ... 
- BurpSuite重放发包的一些区别
			目录 Send Group in parallel Single connection 和 Separate connections 的差别 实际应用场景 Reference 2022年之后,Burp ... 
- C# TorchSharp 图像分类实战:VGG大规模图像识别的超深度卷积网络
			目录 图像分类 | VGG大规模图像识别的超深度卷积网络 数据集 直接下载 opendatalab 数据集社区 自定义数据集 模型训练 教程名称:使用 C# 入门深度学习 作者:痴者工良 教程地址: ... 
- Linux嵌入式设备怎么确定网络端口的速率
			Linux嵌入式设备怎么确定网络端口的速率 突发奇想,就是Linux下面我能不能查询到端口的速率,以此来判断要不要频繁的发送网络数据包呢? 或者更换包利用率更高的协议呢. 于是抱着这样的想法,我开始学 ... 
- Arduino语法--数据类型
			Arduino与C语言类似,有多种数据类型.数据类型在数据结构中的定义是一个值的集合,以及定义在这个值集上的一组操作,各种数据类型需要在特定的地方使用.一般来说,变量的数据类型决定了如何将代表这些值的 ... 
- Elasticsearch搜索引擎学习笔记(四)
			分词器 内置分词器 standard:默认分词,单词会被拆分,大小会转换为小写. simple:按照非字母分词.大写转为小写. whitespace:按照空格分词.忽略大小写. stop:去除无意义单 ... 
