首页 > 其他分享 >2021CCPC 哈尔滨

2021CCPC 哈尔滨

时间:2024-04-09 16:13:12浏览次数:13  
标签:10 int long 哈尔滨 2021CCPC solve ans define

2021CCPC 哈尔滨

J. Local Minimum

对每个位置的数判断一下 是否是其所在的行和列中最小的数即可

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

int board[1010][1010];

void solve()
{		
	int n,m;
	cin >> n >> m;
	vector<int> x(n+10,1e18);
	vector<int> y(m+10,1e18);

	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin >> board[i][j];
			x[i] = min(x[i],board[i][j]);
			y[j] = min(y[j],board[i][j]);
		}
	}
	int ans = 0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(board[i][j]==x[i]&&board[i][j]==y[j]) ans++;
		}
	}
	cout << ans << endl;
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int T = 1;
	//cin >> T;
	while(T--) solve();
    return 0;
}

B. Magical Subsequence

枚举和,因为数据范围是[1,100],所以和的范围是[2,200]。

按数存位置,枚举第二个数,我们要尽可能的让第二个数靠左,每次到j就看看能不能在前面找到值位(sum - a[j])的数。

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

const int N = 1e5 + 10;
int a[N];
vector<int> idx[110]; 
int n;

void solve()
{		
	cin >> n;
	for(int i=1;i<=n;i++)
	{
		cin >> a[i];
		idx[a[i]].push_back(i);
	}	
	int ans = 0;
	for(int i=2;i<=200;i++)
	{
		//cout << i << endl;
		int l = 0;
		int sum = 0;
		for(int j=1;j<=n;j++)
		{
			if(i-a[j]<=0 || i-a[j]>100 || j <= l) continue;
			int pos = upper_bound(idx[i-a[j]].begin(),idx[i-a[j]].end(),l) - idx[i-a[j]].begin();
			if(pos==idx[i-a[j]].size())continue;
			pos = idx[i-a[j]][pos];
			if(pos<j)
			{
				sum++;
				l = j;
			}
		}
		ans = max(sum,ans);
	}
	cout << ans*2 << endl;
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int T = 1;
	//cin >> T;
	while(T--) solve();
    return 0;
}

E. Power and Modulo

根据数据范围,很显然我们可以找到M,找不到就是不存在。找到了就按题意跑一遍看他符不符合就行了。

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

const int N = 1e5 + 10;
int a[N];
int n;

void solve()
{		
	cin >> n;
	for(int i=1;i<=n;i++) cin >> a[i];
	bool ok = false;
	int ans = 0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]==0&&(!ok))
		{
			ans = (1ll << (i-1));
			ok = true;
		}
		if(ok&&a[i]!=0)
		{
			cout << -1 << endl;
			return;
		}
	}
	map<int,int> idx;
	int len = 0;
	for(int i=1;i<=n;i++)
	{
		if(a[i] != (1ll << (i-1)))
		{
			ans = (1ll << (i-1)) - a[i];
			if(ans < 0)
			{
				cout << -1 << endl;
				return;
			}
			if(i>=2 && ans <= (1ll >> (i-2)))
			{
				int q = (1ll >> (i-2)) / ans;
				ans = ans * (q + 1);
				if(ans>=(1ll >> (i-1)))
				{
					cout << -1 << endl;
					return;
				}
			}
			break;
		}
	}
	if(ans==0)
	{
		cout << -1 << endl;
		return;
	}
	int sum = 1;
	for(int i=1;i<=n;i++)
	{
		sum %= ans;
		if(sum!=a[i])
		{
			cout << -1 << endl;
			return;
		}
		sum <<= 1;
	}
	cout << ans << endl;
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int T = 1;
	cin >> T;
	while(T--) solve();
    return 0;
}

D. Math master

易知 ap=bq ,通过数据范围我们很容易发现我们可以通过二进制枚举算出p中删掉的位数进而求出a,再通过前述公式求出b。此时问题就变成了b是不是q中的子序列,求解判断即可。

注意:会爆LL,用ull更会死,最好开int128,要自己写输入输出

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

int p,q;
char sp[30],sq[30];
int delp[10],delq[10];
int lenp,lenq;

int read(){	int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=f*-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}
void write(int x){if(x>9) write(x/10ll);putchar(x%10+'0');}

bool check(int x){
	for(int i = lenq-1;i>=0;i--)
	{
		if(x%10==(sq[i]-'0'))
		{
			x/=10;
			continue;
		}
		delq[sq[i]-'0']++;
	}
	if(x) return false;
	for(int i=0;i<10;i++)
	{
		if(delp[i]!=delq[i]) return false;
	}
	return true;
}

void solve()
{		
	scanf("%s%s",sp,sq);
	lenp = strlen(sp);
	lenq = strlen(sq);
	p = 0,q = 0;
	for(int i=0;i<lenp;i++) p = p * 10 + sp[i] - '0';
	for(int i=0;i<lenq;i++) q = q * 10 + sq[i] - '0';	
	int x = p , y = q;
	for(int i=0;i<(1ll<<lenp);i++)
	{
		for(int j=0;j<10;j++)
		{
			delq[j] = delp[j] = 0;
		}
		int a=0,b;
		for(int j=0;j<lenp;j++)
		{
			if(i >> j & 1)
			{
				delp[sp[j] - '0']++;
			}
			else
			{
				a = a*10 + (sp[j] - '0');
			}
		}
		if(a==0 || q*a%p) continue;
		b = q*a/p;
		if(check(b))
		{
			x = min(x,a);
			y = min(y,b);
		}
	}
	//cout << p << "! " << q << " " << sp << "? " << sq << endl; 
	write(x);putchar(' ');
	write(y);putchar('\n');
}

signed main(){
	int T = 1;
	T = read();
	while(T--) solve();
    return 0;
}

标签:10,int,long,哈尔滨,2021CCPC,solve,ans,define
From: https://www.cnblogs.com/zfxyyy/p/18124200

相关文章

  • 哈尔滨理工大学3-31校赛模拟赛第一场题解
    概览:ABF为签到题,CE模拟,D深搜,G最短路,H双指针A.提取数字:注意前导零的情况需要排除,由于组成的数不超过longlong范围,所以直接用res承接就好了#include<iostream>usingnamespacestd;longlongres;intmain(){charc;while(cin>>c)if(c>='0'&&c<='9......
  • 哈尔滨理工大学 计算机调剂仪器仪表工程 经验分享
    教育背景:本科二本,专业是计算机科学与技术,23考研总分341分,报考专业代码是085400,调剂哈尔滨理工大学仪器仪表工程。拒绝拟录取,最终调剂到安徽大学。调剂流程分享:去年在得知自己没有通过一志愿复试以后,那段时间一直在找调剂,有幸得到哈尔滨的某位学姐的指导,在这里感谢一下这位......
  • 哈尔滨工业大学选购我司HS-DR-5导热系数测试仪
    近日,哈尔滨工业大学决定选购我司HS-DR-5导热系数测试仪,以提升其材料科学研究水平。这一决策不仅体现了哈工大对科研设备的重视,也对我司的产品质量与服务给予了高度认可。哈尔滨工业大学HS-DR-5导热系数测试仪是一款功能强大、性能稳定的科研设备,广泛应用于材料科学、能源、航空航天......
  • 哈尔滨华德学院-新生编程挑战赛
    哈尔滨华德学院-新生编程挑战赛A-签到_哈尔滨华德学院-新生编程挑战赛(同步赛)(nowcoder.com)签到#include<bits/stdc++.h>#definedebug(a)cout<<#a<<"="<<a<<'\n';usingnamespacestd;usingi64=longlong;typedefpair<i64,i64>PII......
  • 2023 CCPC 哈尔滨 BLM
    [2023CCPC哈尔滨](The2ndUniversalCup.Stage10:Harbin-Dashboard-Contest-UniversalCupJudgingSystem(ucup.ac))BLMB.Memory思路:由递推式:\(Mood(i)=\sum_{j=1}^{i}2^{j-i}\timesa_j\)可知,\(f[i]=f[i-1]/2+a[i]\)显然直接\(/2\)会有精度问题啦,怎么办......
  • 2021CCPC桂林
    B题意:1e6位a+b=c算式。每次修改某个加数的某一位,求这一位修改后的值和算式改变的位数。题解:用set维护\(a_i+b_i\neq9\)的位置,这样修改后的修改位的值和改变的位数都可以通过它算出来,然后每次修改至多往set插入或删除一个元素。////Createdbyblackbirdon2023/11/16.//......
  • 2021 CCPC 哈尔滨
    gym开场zsy签了J,gjk签了B,我读错了E的题(\(=\bmod\)而不是\(\equiv\pmod2\)),gjk读对后过了zsy读了K给我,我记得是模拟赛原题,跟欧拉定理有关,但很难。他俩过了DI,我大概会了G但不会DP期望,跟zsy无效交流了一会凭感觉写1A了。C好像也是模拟赛原题就丢给他俩了L......
  • 华为云智能编程助手助力哈尔滨工业大学(深圳)培养新时代软件研发人才​
    近日,哈尔滨工业大学(深圳)举行了一场主题为“华为代码大模型的方案与应用”的活动。本次活动旨在深入探讨代码大模型的起源、发展、优势以及应用,同时结合华为云CodeArtsSnap智能编程助手案例,分析其在赋能开发者高效、可信开发方面的作用,以满足日益增长的人才需求。代码大模型起源于......
  • 华为云智能编程助手助力哈尔滨工业大学(深圳)学子,引领软件研发新趋势​
    在哈尔滨工业大学(深圳)教学楼,3月31日下午华为代码大模型的方案与应用主题活动在这里精彩上演。华为云PaaS技术创新LabDevAILab负责人马宇驰,华为云PaaS服务产品部HR刘莉,PaaS技术创新Lab产品经理张芮恺为现场150多位参会者,讲解了代码大模型的历程和在实际应用中的突出表现,结合华为代......
  • 2023哈尔滨工程大学信息安全研究中心招生
    哈尔滨工程大学信息安全研究中心招生由于团队科研工作需要,哈尔滨工程大学计算机学院杨武教授团队在2023年度拟招收硕士研究生20~25人。热忱欢迎对人工智能与信息安全感兴趣......