首页 > 其他分享 >【学校训练记录】11月个人训练赛4个人题解

【学校训练记录】11月个人训练赛4个人题解

时间:2024-11-17 18:20:23浏览次数:1  
标签:11 cout int 题解 long 训练赛 b1 b2 1010

A


题意可以理解为在a,b的范围内如果一个数是某个整数的立方,求与其距离为k的范围内有几个整数的平方数,我们可以对于每个立方数求出其数量,注意边界问题

#include <bits/stdc++.h>
#define int long long
using namespace std;

int a, b, k;
void solve(){
	cin >> a >> b >> k;
	int a1 = ceil(cbrt(a)), b1 = floor(cbrt(b));
	int sum = 0;
	for(int i = a1; i <= b1; i++){
		int x = i*i*i;
		int l = ceil(sqrt(max(x-k, a)));
		int r = floor(sqrt(min(x+k, b)));
		sum+=r-l+1;
	}
	cout << sum;
}
signed main (){
    solve();
    return 0;
}

B


观察不难看出,对于每一个次方数我们只需要
判断输出正负号,输出数字,输出x,以及^n
对于符号,只有在第一个数且为正时不输出
对于数字为1和-1时不输出,特殊的在最后一个需要输出
对于x只有最后一位1不输出
对于^n最后两位不输出

#include<bits/stdc++.h>
using namespace std;
int n,k[105],v;
int main(){
		cin>>n;
		for(int i=n;i>=0;i--)cin>>k[i];
		for(int i=n;i>=0;i--){
			if(k[i]!=0){
			if(i!=n&&k[i]>0) cout << "+";
			if(k[i]<0) cout << "-";
			if(abs(k[i])>1) cout << abs(k[i]);
			if(i>0) cout << "x";
			if(i>1) cout << "^" << i;
			if(i == 0 && abs(k[i]) == 1) cout << abs(k[i]);
		}
	}
		cout<<endl;
	return 0;
}

C


贪心,每次尽可能加入大的平方数

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n; 
void solve(){
	cin >> n;
	int num = 0;
	while(n){
		
		n-=(int)sqrt(n)*(int)sqrt(n);
//		cout << n;
		num++;
	}
	cout << num;
}
signed main (){
    solve();
    return 0;
}

D


定义答案数组为b

a1 = b1/2+b2/2
a2 = b2/2+b3/2
...
an = bn/2+b1/2
化简得
b1 = 2a1-b2(1)
b2 = 2a1-b3(2)
...
bn = 2an-b1(n)
上面各式奇数项加,偶数项减得
b1 = 2a1-2a2+2a3-2a4..+2an-b1(n一定为奇数,故此处必为+2an-b1)
b1 = a1-a2+a3-a4+...+an
在将其带入之前的式子可得
b2 = 2a1-b1
b3 = 2a2-b2
bn = 2a(n-1)-b(n-1)

#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;

int n, a[100010], b[100010];
void solve(){
	cin >> n;
	memset(b,0,sizeof(b));
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		if(i&1) b[1]+=a[i];
		else b[1]-=a[i];
	}	
	cout << b[1] << ' ';
	for(int i = 2; i <= n; i++){
		b[i] = 2*a[i-1]-b[i-1];
		cout << b[i];
		if(i!=n) cout << ' ';
	}
}
signed main (){
	ios::sync_with_stdio(false);
	cin.tie(nullptr); 
	int T;
//	cin >> T;
	T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

F


对于#找出与其连接的.的数量,自身也算一个,预处理将每个区域的数量算出来,利用记忆化搜索记录数量,并将每一个区域作标记,因为同一区域只算一次

#include <bits/stdc++.h>
//#define int long long
using namespace std;

int n, m, a[1010][1010], b[1010][1010], d[1010][1010];
int num;
int ret;
char c[1010][1010];
int s1[4] = {0,0,1,-1};
int s2[4] = {1,-1,0,0};
void se(int x, int y){
	b[x][y] = num;
	d[x][y] = ret;
	for(int i = 0; i < 4; i++){
		int nx = x+s1[i];
		int ny = y+s2[i];
		if(nx>=1&&nx<=n&&ny>=1&&ny<=m){
			if(a[nx][ny]!=2 && c[nx][ny]=='.'){
				a[nx][ny]++;
				se(nx, ny);
			}
		}
	}
}
void dfs(int x, int y){
	num++;
	for(int i = 0; i < 4; i++){
		int nx = x+s1[i];
		int ny = y+s2[i];
		if(nx>=1&&nx<=n&&ny>=1&&ny<=m){
			if(a[nx][ny]!=1 && c[nx][ny]=='.'){
				a[nx][ny]++;
				dfs(nx, ny);
			}
		}
	}
}
void solve(){
	scanf("%d %d", &n, &m);
	getchar();
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			scanf("%c", &c[i][j]);
		}
		getchar();
	}
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			if(c[i][j]=='.' && a[i][j] == 0){
				a[i][j]++;
				dfs(i, j);
				ret++;
				se(i, j);
				num = 0;
			}
		}
	}
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			if(c[i][j] == '.') printf(".");
			else {
				int ret = b[i-1][j]+1;
				if(d[i+1][j]!=d[i-1][j]) ret+=b[i+1][j];
				if(d[i][j-1]!=d[i+1][j] && d[i][j-1]!=d[i-1][j]) ret+=b[i][j-1];
				if(d[i][j+1]!=d[i][j-1] && d[i][j+1]!=d[i+1][j] && d[i][j+1]!=d[i-1][j]) ret+=b[i][j+1];
				printf("%d", ret%10);
			}
		}
		printf("\n");
	}
}
signed main (){
    solve();
    return 0;
}

标签:11,cout,int,题解,long,训练赛,b1,b2,1010
From: https://www.cnblogs.com/qkauto/p/18550856

相关文章

  • 第十一届传感云和边缘计算系统国际会议 2025 11th International Conference on Senso
    重要信息官网:https://ais.cn/u/vEbMBz......
  • 【未完结】 AtCoder Beginner Contest 380 题解
    AtCoderBeginnerContest380Rated:\(770\)A-123233简单模拟B-HurdleParsing字符串模拟C-MoveSegment找到第\(k\)个块的下标,模拟。D-StrangeMirroringE-1DBucketToolF-ExchangeGameG-AnotherShuffleWindow......
  • 2024.11.16模拟赛
    总结:日常犯困,日常去厕所清醒,日常疯狂调试,不日常四个半小时的模拟赛。打了T1的60分暴力+特殊样例,T4的40分暴力+特殊样例,但是T1不知道为什么\(dfs\)爆栈了,所以没骗到特殊样例的分,T4特殊样例式子推错,也没骗到分,所以最后T130分,T420分,共50分,挂了50分。关于T1:四个人,想了四个半小时,摸......
  • 11、两类中断控制器处理流程_链式和层级
    1.下级中断控制器的类别在后续课程中我们把GIC之下的中断控制器分为两类:链式(chained)、层级(hierarchy)。这个分类并没有官方定义,是我们根据代码概括出来的(Linux内核本来就缺乏文档)。1.1链式中断控制器(chained)上图中,左边的"chainedintc"就是链式中断控制器。它底下......
  • GBK&Unicode -2024/11/16
    UTF-8是一种编码规则为什么会有乱码:读取数据时未读完整个汉字编码和解码的方式不统一如何不产生乱码不要使用字节流读取文本文件编码解码时使用同一个码表,同一个编码方式publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{......
  • 闲话 11.17
    $settle\into\ash$好大雷EP,真的耐听。Theemberssettleintoash残火中余温成灰Refusetobend,tobreak,lookback不屈不折不曾回眸往昔It’salldecidedinthemomentwebothchoosetofightit在那决断时刻我们选择了抗争Youdon’tneedarmiestota......
  • 2024.11.16 2024 CCPC济南站
    Solved:5/13Penalty:707Rank:101Rank(ucup):200比赛链接A.TheFool题意:给一个\(n\timesm\)的字符串矩阵,有一个字符串和其他不同,求这个字符串的位置。直接模拟即可。#include<bits/stdc++.h>usingnamespacestd;constintN=205;stringa[N];intmain(){ios::s......
  • 《民用建筑修缮工程施工标准》(JGJ/T 112-2019),这是当前关于民用建筑修缮的最新国家标准
    《民用建筑修缮工程施工标准》(JGJ/T112-2019),这是当前关于民用建筑修缮的最新国家标准。该标准于2019年发布,对民用建筑的修缮施工提供了详细的指导,涵盖了修缮工程的设计、施工、验收等各个方面,旨在提高修缮工程的质量、安全性和可持续性。《民用建筑修缮工程施工标准》JGJ/T112......
  • CF603E Pastoral Oddities 题解
    Description给定一张\(n\)个点的无向图,初始没有边。依次加入\(m\)条带权的边,每次加入后询问是否存在一个边集,满足每个点的度数均为奇数。若存在,则还需要最小化边集中的最大边权。\(n\le10^5\),\(m\le3\times10^5\)。Solution考虑给定一个图,怎么判断这个图存在一个......
  • 11.17
    把\(A,B\)写完后胡完\(C\)就跑路了,感觉很有质量。S6A.「KDOI-11」打印线段树维护区间结束时间最早的打印机,如果全局结束时间最早的打印机的结束时间小于当前文件起始时间,那么线段树二分寻找最小编号,否则直接取结束时间最早打印机即可。点击查看代码#include<bits/stdc+......