首页 > 其他分享 >【训练记录】山东济南齐鲁工业大学ACM集训队第二次入队赛同步赛(场外VP)

【训练记录】山东济南齐鲁工业大学ACM集训队第二次入队赛同步赛(场外VP)

时间:2024-10-07 21:22:08浏览次数:1  
标签:int while long VP -- 入队 solve ACM include

https://icpc.qlu.edu.cn/contest/66ed8b746002253a77c10d5e

训练情况

场外 rk#2 AK

赛后反思

A题太菜了,没看出来是01背包DP,往前缀和上面想了,写了个假做法。

B题又不认真看题,忘记了 \(= 0\) 的情况。

C题博弈论乱猜

D题未考虑完全导致一次WA

A题

分两组,两组和相同,观察数据范围我们考虑 01 背包,先求出所有的和。显然,如果和为奇数则无法分组,当为偶数的时候,判断能否取出 \(\frac{sum}{2}\) 即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 1e7 + 3;

int dp[N];

void solve(){
	int n; cin>>n;
	vector<int> a(n + 1);
	int sum = 0;
	dp[0] = 1;
	for(int i = 1;i<=n;i++) cin>>a[i],sum+=a[i];
	if(sum&1){
		cout<<"No"<<endl;
		return;
	}
	for(int i = 1;i<=n;i++){
		for(int j = sum/2;~j;j--){
			if(j-a[i] < 0) continue;
			if(dp[j-a[i]]) dp[j] = dp[j-a[i]];
		}
	}
	if(dp[sum/2]) cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

B题

找没被区间覆盖的点,考虑差分了再前缀和,坑点:\(0\) 也算。

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 1e6 + 3;
int a[N];

void solve(){
	int n,m; cin>>n>>m;
	for(int i = 1;i<=m;i++){
		int l,r; cin>>l>>r;
		a[l]++,a[r+1]--;
	}
	for(int i = 1;i<=n;i++) a[i]+=a[i-1];
	int ans = 0;
	for(int i = 0;i<=n;i++) if(!a[i]) ans++;
	cout<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

C题

逆天我不会的博弈论,逆天后手必胜的结论,通过玩 \(n \le 4\) 的样例,大胆猜测后手必胜

我又会了,后手有一个必胜策略,就是跟着先手的人走中心对称的那条边,最后出现一个正方形三条边的情况,直接去占即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
    cout<<"Tianmingren"<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

D题

考虑什么时候走不到 \(n\),当某一位为零的时候,并且前面的点没有办法跨过这个 \(0\)。维护一个最右的边界,同时遇到 \(0\) 判断即可,如果无法跨过答案就是 No,否则 Yes。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int n; cin>>n;
	vector<int> a(n + 1);
	for(int i = 1;i<=n;i++) cin>>a[i];
	int last = 0;
	for(int i = 1;i<n;i++){
		if(a[i]) last = max(last,i+a[i]-1);
		if(!a[i] && last < i){
			cout<<"No"<<endl;
			return;
		}
	}
	cout<<"Yes"<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

E题

快读模板 + %99

#include <bits/stdc++.h>
#define int long long

using namespace std;

inline int read(){
	int s = 0; char c = getchar();
	while(!isdigit(c))  c = getchar();
	while(isdigit(c)){
		s = (s << 1) + (s << 3) + (c ^ 48);
		s%=99;
		c = getchar();
	}
	return s;
}

int ans = 0;

void solve(){
	int x; x = read();
	if(!x) ans++;
}

signed main(){
	int T; cin>>T; while(T--)
	solve();
	cout<<ans<<endl;
	return 0;
}

F题

模拟题,我们发现字母的位置是两倍的 \(i\) 或 \(j\),其他都是 # 号。

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 8007;

char ans[N][N];

void solve(){
	int n,m; cin>>n>>m;
	vector<string> s(n + 1);

	for(int i = 0;i<n;i++) cin>>s[i];
	for(int i = 0;i<n;i++){
		for(int j = 0;j<m;j++){
			if(s[i][j] >= 'A' && s[i][j] <= 'Z') s[i][j]+=32;
			else s[i][j] -= 32;
		}
	}
	for(int i = 0;i<n;i++){
		for(int j = 0;j<m;j++){
			ans[(i+1)*2][(j+1)*2] = s[i][j];
		}
	}
	for(int i = 1;i<=2*n+1;i++){
		for(int j = 1;j<=2*m+1;j++){
			if(!ans[i][j]) ans[i][j] = '#';
		}
	}
	for(int i = 1;i<=n*2+1;i++){
		for(int j = 1;j<=m*2+1;j++){
			cout<<ans[i][j];
		}
		cout<<endl;
	}
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

G题

单调不降,我们可以发现减少前面的较大值比增加后面的较小值要更优,减小前面的最大值会让数列变得更容易单调不降,维护一个当前的最大值(考虑 \(O(nlogn)\) 优先队列),若出现比他还小的替换掉当前最大值更新答案即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

priority_queue<int> q;

int ans;

void solve(){
	int x; cin>>x;
	q.push(x);
	if(x<q.top()){
		ans+=q.top()-x;
		q.pop();
		q.push(x);
	}	
}

signed main(){
	int T; cin>>T; while(T--)
	solve();
	cout<<ans<<endl;
	return 0;
}

H题

天数要向上取整,观察到取模有很好的周期性,把星期都偏移到 \(0 \sim 6\) 上,然后取模即可,然后再加回来

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int x,y,a; cin>>x>>y>>a;
	int add = (x+(y-1))/y;
	a--;
	a+=add;
	a%=7;
	a++;
	cout<<a<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

标签:int,while,long,VP,--,入队,solve,ACM,include
From: https://www.cnblogs.com/longxingx/p/18450507

相关文章

  • 分别使用OVP-UVP和OFP-UFP算法以及AFD检测算法实现反孤岛检测simulink建模与仿真
    1.课题概述分别使用OVP-UVP和OFP-UFP算法以及AFD检测算法实现反孤岛检测simulink建模与仿真。 2.系统仿真结果  3.核心程序与模型版本:MATLAB2013b   functionsys=mdlOutputs(t,x,u)%定义全局变量globalf_i;globalf_vo;globalf_v_hb......
  • 题解:SP1703 ACMAKER - ACM (ACronymMaker)
    题目大意:一个有一些单词组成的短语,给定一个缩写词,求此缩写由此短语的单词组成的可能方案数。注意,短语中所有重要的单词都要用到,顺序必须和缩写词单词顺序一致。思路动态规划设置:\(dp_{i,j}\):使用前\(i\)个重要单词形成前\(j\)个缩写字符的方法数。\(dp2_{k,m}\):辅助数组......
  • [CVPR2024]CDMAD Class-Distribution-Mismatch-Aware Debiasing for Class-Imbalanced
    Introduction在不平衡数据集上训练的分类器往往对头部类(majorityclasses)有偏好。在半监督学习(semi-supervisedlearning,SSL)设置下,生成伪标签的算法由于生成带偏置的伪标签,往往会进一步加剧偏置。带偏置的伪标签会降低表征学习质量。特别的,如果有标签集合和无标签集合的分布差异......
  • 即插即用篇 | YOLOv10 引入单头视觉Transformer模块 | CVPR 2024
    本改进已同步到YOLO-Magic框架!最近,高效的视觉Transformer在资源受限的设备上以低延迟表现出了出色的性能。传统上,它们在宏观层面上采用4×4的Patch嵌入和四阶段结构,而在微观层面上使用多头配置的复杂注意力机制。本文旨在通过内存高效的方式解决各个设计层面的计算冗余......
  • 98th 2024/9/4 VP-ARC183小结
    洪文局A很快打出来了,但还是不够快因为要构造出最中间的那个序列,所以很显然可以直接构造因为要最中间,所以试一试就可以直接试出\(n\)为偶数的样式,然后\(n\)为奇数的可以通过把最中间的数字全部放到最前面,然后在构造二实现这题简单就简单在做它的办法太多了,没思路打个暴力也能找......
  • 基于VU9P的4路 100G光纤 6U VPX板卡
    基于VU9P的4路100G光纤6UVPX板卡一款VPX的光纤接入卡,板卡的前面板提供4路100GQSFP28+接口(16路GTY接口),后出线接入到VPX背板,提供28路GTY接口。板卡的P1提供16lanePCI-E3.0接口,可运行一路16X的接口协议,板卡的P2提供两组PCI-E3.08X接口,可提供两组8X的接口协议。板上提供......
  • 准备蓝桥杯和ACM:C++标准库头文件及其常用功能简介
    概述        在C++编程中,标准库为开发者提供了丰富的工具和功能,使得代码更简洁、易于维护。本文将深入探讨一些常用的C++标准库头文件,如<iostream>、<algorithm>、<string>等,以及它们所提供的基本功能与常见用法。通过对这些头文件的理解和应用,开发者能够更加高效地......
  • 【2024秋#113】锦城ACM周测题解
    2024秋#112】锦城ACM周测题解A.awa1思路这里是对答案进行二分,我们预测一个答案的范围,取这个范围的中点,试探是否可行。如果可行,将这个范围的右边的范围缩小到mid(注意我们所求是最短时间,所以当mid可行的时候我们是将预测的最大的值变小),如果不可行,说明我们预测的这个范围左边......
  • 循环队列入队出队
    队列队列特性:先进先出限定插入操作只能在队尾进行,而删除操作只能在队头进行。循环队列:一种线性数据结构,其操作表现基于先进先出,队尾被连接在队首之后以形成一个循环。循环队列的操作与普通队列类似,但又有独特的优点下面给出一些循环队列的操作函数:队列创建、入队、......
  • IPSec VPN
    IPsecVPN是一种基于IPsec(InternetProtocolSecurity)协议来实现远程接入或站点到站点连接的虚拟专用网络(VirtualPrivateNetwork,VPN)技术。IPsec全称为InternetProtocolSecurity,是由InternetEngineeringTaskForce(IETF)定义的一套为IP网络提供安全性的协议和服务的......