Codeforces Round 928 (Div. 4)(A、B、C、D、E、G)

文章目录

  • A
  • B
  • C
  • D
  • E
  • G

A

统计A、B输出

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;

void solve() {
	int cnt1=0,cnt2=0;
	string s;
	cin>>s;
	for(auto c:s){
		if(c=='A')	cnt1++;
		else cnt2++;
	}
	if(cnt1>=cnt2){
		cout<<"A"<<endl;
	}else{
		cout<<"B"<<endl;
	}
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

B

只需要判断正方形即可,不是正方形就是三角形。
正方形可以找到第一个行出现的1然后往下找,看是不是行列都是1

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;

void solve() {
	int n;
	cin>>n;
	string s[n];
	rep(i,0,n-1){
		cin>>s[i];
	}

	int xx=0,yy=0;
	rep(i,0,n-1){
		bool st=false;
		rep(j,0,n-1){
			if(s[i][j]=='1'){
				xx=i;
				yy=j;
				st=true;
				break;
			}
		}
		if(st){
			break;
		}
	}
//	cout<<xx<<' '<<yy<<endl;
	auto check=[&](int x,int y){
		for(int i=1;i+x<n&&y+i<n;++i){
			if(s[x+i][y]!=s[x][y+i]){
				return false;
			}
		}
		return true;
	};
	if(check(xx,yy)){
		cout<<"SQUARE"<<endl;
	}else{
		cout<<"TRIANGLE"<<endl;
	}
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

C

计算每个数字会出现的次数,乘起来就是答案。

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;

vector<int> get(int n) {
    vector<int> res(10, 0);
    if(!n) return res;
    if(n % 10 < 9) {
        res = get(n - 1);
        while(n) {
            res[n % 10]++;
            n /= 10;
        }
        return res;
    }
    res = get(n / 10);
    for(int i = 0; i < 10; i++) res[i] = res[i] * 10 + n / 10 + (i > 0);
    return res;
}

void solve() {
	int n;
	cin>>n;
	vector<int> ans = get(n);
	int res=0;
    for(int i = 1; i < ans.size(); i++) {
        res+=i*ans[i];
    }
    cout<<res<<endl;
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

D

用一个multiset存一下,之前的数按位取反的结果。
每次读进来之后在set里面查询,有的话直接删掉,没有的话插入就行。
每次删除会对答案造成-1的贡献。
之前的数按位取反有个简单的技巧:
异或上所有位都是1的数。参考jls的代码。

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;


void solve() {
	int n;
	cin>>n;
	
	multiset<int>s;
	int ans=n;
	auto change=[](int x){
		int ans=0;
		rep(i,0,30){
			int k=x&(1<<i);
			if(k){
			}else{
				ans|=(1<<i);
			}
		}	
		return ans;
	};
	rep(i,1,n){
		int val;
		cin>>val;
		if(s.count(val)){
			s.erase(s.find(val));
			ans--;
		}
		else s.insert(change(val));
	}
	cout<<ans<<endl;

}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

image

E

赛时找到规律了,但是有个小细节没注意到导致没过
就是每个二次幂取的数是当前的 ( n + 1 ) 2 \frac{(n+1)}{2} 2(n+1)
然后n每次减半。
每个二次幂下都是一个等差数列

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;


void solve() {
	int n,k;
	cin>>n>>k;
	int cnt=0;
	while(k>(n+1)/2){
		k-=(n+1)/2;
		n/=2;
		cnt++;
	}
	cout<<((2*k-1)<<cnt)<<endl;
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

G

树上dp。
f [ u ] [ 0 ∣ 1 ] f[u][0|1] f[u][0∣1]:以u为根的为 S ∣ P S|P SP时的最小隔板数
转移
f [ u ] [ 0 ] + = m i n ( f [ v ] [ 0 ] , f [ v ] [ 1 ] + 1 ) ; f[u][0]+=min(f[v][0],f[v][1]+1); f[u][0]+=min(f[v][0],f[v][1]+1);
f [ u ] [ 1 ] + = m i n ( f [ v ] [ 1 ] , f [ v ] [ 0 ] + 1 ) ; f[u][1]+=min(f[v][1],f[v][0]+1); f[u][1]+=min(f[v][1],f[v][0]+1);


#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;


void solve() {
	int n;
	cin>>n;
	vector<vector<int>>g(n+1);
	rep(i,2,n){
		int u;
		cin>>u;
		g[u].pb(i);
	}
	string s;
	cin>>s;
	vector<vector<int>>f(n+1,vector<int>(2));
	auto dfs=[&](auto &&dfs, int u)->void{
		f[u][0]=f[u][1]=0;
		if(s[u-1]=='S')	f[u][0]=1e9;
		if(s[u-1]=='P')	f[u][1]=1e9;
		for(auto v:g[u]){
			dfs(dfs,v);
			f[u][0]+=min(f[v][0],f[v][1]+1);
			f[u][1]+=min(f[v][1],f[v][0]+1);
		}
	};
	dfs(dfs,1);
	cout<<min({f[1][0],f[1][1]})<<endl;
	
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot+flowable 使用方式

创建flowble制定流程图 登录flowalbe 制定流程图 进入建模器应用程序 创建流程图 分配用户 下载流程图 使用springboot 调用flowable /*** 导入流程图老师流程*/Testvoid startTeacherApprover(){Deployment deploy repositoryService.createDeployment().addClasspathRes…

2024,“热辣滚烫”的春节热点!

2024春节&#xff0c;都发生了哪些热点事件&#xff1f; 搜肠刮肚比较难&#xff0c;于是百度了一下&#xff0c;但结果难以令人满意&#xff0c;不同博主的眼中都有不同的热点。 这才想起&#xff0c;我们早已生活在自己的“信息茧房”中&#xff0c;每个人都有自己关注的热…

GZ036 区块链技术应用赛项赛题第9套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷&#xff08;9卷&#xff09; 任 务 书 参赛队编号&#xff1a; 背景描述 随着异地务工人员的增多&#xff0c;房屋租赁成为一个广阔是市场&#xff1b;目前&#xff0c;现有技术中的房屋租赁是由…

天拓四方:如何通过工业智能网关进行设备数据采集,以及其带来的优势

工业智能网关是一种嵌入式设备&#xff0c;设计用于连接和管理各种工业设备和系统。它充当设备间的通信中介&#xff0c;实现数据采集、转换和传输。与传统的网关相比&#xff0c;工业智能网关具有更强的数据处理能力和更广泛的连接性&#xff0c;可以支持多种通信协议。在当今…

Unity MVC开发模式与开发流程详解

在Unity游戏开发中&#xff0c;采用MVC&#xff08;Model-View-Controller&#xff09;模式是一种非常常见的设计模式。MVC模式将应用程序分为三个部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#x…

数论 - 容斥原理

文章目录 一、题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 二、算法思路三、代码 在计数时&#xff0c;必须注意没有重复&#xff0c;没有遗漏。为了使重叠部分不被重复计算&#xff0c;人们研究出一种新的计数方法&#xff0c;这种方法的基本思…

VSCODE使用Django

https://code.visualstudio.com/docs/python/tutorial-django#_use-a-template-to-render-a-page 通过模板渲染页面 HTML文件 实现步骤 1&#xff0c; 修改代码&#xff0c;hello的App名字增加到installed_apps表中。 2&#xff0c; hello子目录下&#xff0c;创建 .\templat…

【无刷电机学习】基础概念及原理入门介绍

目录 0 参考出处 1 定义 2 各种电机优势比较 2.1 有刷与无刷比较 2.2 交流与直流比较 2.3 内转子与外转子比较 2.4 低压BLDC的一些优点 3 基本原理 3.1 单相无刷电机 3.2 三相无刷电机 4 驱动方法 4.1 六步换相控制 4.2 正弦波控制 5 转子位置信息的获取 5…

苍穹外卖学习-----2024/02/19

1.开发环境搭建 我的git截图我使用的datagrip 运行sql学习到jwt令牌一种新的配置方式&#xff0c;写配置文件学习到了build属性nginx解决跨域的问题2.导入接口的文档 结果如图所示 3.Swagger /*** 通过knife4j生成接口文档* return*/Beanpublic Docket docket() {ApiInfo api…

leetcode hot 100最后一块石头重量Ⅱ

在本题中&#xff0c;我们可以知道&#xff0c;是要求最后石头返还的重量&#xff0c;也就是&#xff0c;将整个数组分割成两个子集&#xff0c;求让两个子集的差值最小。这和上一道分割整数集类似&#xff0c;只是需要我们返回差值。所以我们采用动态规划01背包来做&#xff0…

2024.2.19

1.使用fread和fwrite完成两个文件的拷贝 #include<myhead.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./zhanmusi.bmp","r"))NULL){perror("fopen error");return -1;}//fseek(fp,54,SEEK_SET);//3200054cha…

猫头虎分享: All in AI时代来临,作为程序员我们应该做些什么?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

左右联动布局效果

效果图&#xff1a; <template><el-dialog :modelValue"modelValue" :before-close"close" fullscreen :close-on-click-modal"false"><div class"farmer_detail"><div class"info_content"><di…

精工电联:定制精工线缆,赋能科技互联---致力于为客户提供卓越的连接线缆和连接器产品

精工电联 “定制精工线缆 &#xff0c;赋能科技互联”&#xff0c;精工电联致力于为高科技产业提供全方位、多维度的集成线缆解决方案。凭借深厚的研发实力和丰富的行业经验&#xff0c;精工电联已经成功地在工控设备、医疗设备、人工智能、新能源领域、轨道交通和超声波设备等…

HCIP---OSPF

题目&#xff1a; 一&#xff1a;IP规划并配置 全网拿192.16.0.0/16划分&#xff0c;先按区域划分&#xff0c;一共有五个区域加上一共RIP网段&#xff0c;要借三位。 255.255. 11100000.00000000 172.16. 00000000.00000000 172.16.0.0/19 区域0 172.16. 00100000.00…

PostgreSQL按日期列创建分区表

在PostgreSQL中&#xff0c;实现自动创建分区表主要依赖于表的分区功能&#xff0c;这一功能从PostgreSQL 10开始引入。分区表可以帮助管理大量数据&#xff0c;通过分布数据到不同的分区来提高查询效率和数据维护的便捷性。以下是在PostgreSQL中自动创建分区表的一般步骤&…

找不到android.support.v4.app.Fragment的类文件

问题 android.support.v4.app.Fragment的类文件 详细问题 笔者Android项目开发集成QQ登录 控制台报错 D:\AndroidProjects\assistingAgriculture\app\src\main\java\com\example\assistingagriculture\activity\normal_mode\QQLoginActivity.java:43: 错误: 无法访问Fragme…

Compose 1.6 发布:性能大升级、拖放新功能、文本新变化...

翻译自&#xff1a; https://android-developers.googleblog.com/2024/01/whats-new-in-jetpack-compose-january-24-release.html 基于 1 月 24 号的 Compose 发行计划&#xff0c;我们正式推出了 Jetpack Compose 1.6 版本。 作为 Android 平台备受推崇的原生 UI 工具包&…

杨氏矩阵和杨辉三角

杨氏矩阵 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 分析 若要满足要求时间复杂度小于O(N)&#xff0c;就不能每一行一个个…

IO进程线程 2024.2.19

1.使用fread和fwrite完成两个文件的拷贝 #include<stdio.h> #include<stdlib.h> #include<string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./tset.txt","w"))NULL){perror("open error");ret…