cpp入门
基础模板以下是我的常用模版 1234567891011121314151617#include"bits/stdc++.h"#define ll long long#define maxn 200005#define endl '\n'using namespace std;void solve() {}int main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int t = 1; cin >> t; while (t--) { solve(); } return 0;} #include"bits/stdc++.h":万能头包含了算法竞赛常用的各种库#define endl '\n':由于endl换行会强制刷新缓冲区导致输出变慢所以一般换行用\n但是我习惯写endl所以有了这个宏定义(这是个坏习惯)ios::sync...
第一场GPLT预选赛题解
L1-4数学题?分析我们设进行$x$次操作,为了满足条件我们就可以列出不等式:$$ A+xB \leq xDC $$移项得到$$ (CD-B)x \geq A $$因为要求$x$的最小值,所以当$C*D \leq B$时无法得到答案。否则,答案就是$\lceil \frac{A}{CD-B} \rceil$ 代码123456789101112131415161718192021#include<bits/stdc++.h>#define ll long longusing namespace std;void solve(){ ll a,b,c,d; cin>>a>>b>>c>>d; if(b>=c*d){ cout<<-1<<endl; } else{ cout<<(a+d*c-b-1)/(d*c-b)<<endl; }}int main()&...
Codeforces Round 1075 (Div. 2)
A. Table with Numbers题目链接 题意有一个$l \cdot h$的表格和一个数组$a$,从中选出$2 \cdot k$个数组成$k$个数对,问最多可以有几个数对在表格内 分析我们设$l$和$h$中较大的那个数为$mx$,较小的数是$mn$,如果$mn \leq a_i \leq mx$那么这个数只能放在mx那一列/行,那么剩下的那个数就要从小于等于$mn$中选择,如果不够和处在$mx$的数配对的话答案就是$a$中小于$mn的个数$而如果足够那就是小于等于$mx$的数除以$2$向下取整 代码12345678910111213141516171819void solve(){ int n,x,y; cin>>n>>x>>y; vector<int>vt(n+1),flag(n+1); int mn=min(x,y); int mx=max(x,y); int z=0,p=0; for(int i=1;i<=n;i++){ ci...
2026.1.22题解
A. Turtle Puzzle: Rearrange and Negate题目链接 题意有一数组$a$,你可以进行如下操作若干次: 选择$l$和$r$满足$(1 \leq l \leq r \leq n)$ 将$a_l,a_{l+1}, \dots a_{r}$变为原来的相反数最后求$\sum_{i=1}^n a_{i}$ 分析假设$a_{i}$是负数我们可以选择$l=r=i$,所以结果就是$$\sum_{i=1}^n abs(a_{i})$$ 代码1234567891011void solve(){ int n; cin>>n; int ans=0; for(int i=0;i<n;i++){ int y; cin>>y; ans+=abs(y); } cout<<ans<<endl;} B. Turtle and Piggy Are Playing a Game...
2026-1-20题解
A. Rudolf and the Ticket题目链接 题意左口袋有$n$枚硬币,右口袋有$m$枚硬币,问有多少种组合硬币的总价值小于等于$k$ 分析看数据范围发现完全可以暴力解决 代码1234567891011121314151617181920void solve(){ int n,m,k; cin>>n>>m>>k; vector<int>b(n+1),c(m+1); for(int i=1;i<=n;i++){ cin>>b[i]; } for(int i=1;i<=m;i++){ cin>>c[i]; } int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(b[i]+c[j]<=k){ ...
Codeforces Round 1074 (Div. 4)
A. Perfect Root分析签到题 代码1234567void solve(){ int n; cin>>n; for(int i=1;i<=n;i++){ cout<<i<<" \n"[i==n]; }} B. Prefix Max分析还是签到题 代码1234567891011void solve(){ int n; cin>>n; int mx=-1; for(int i=0;i<n;i++){ int y; cin>>y; mx=max(y,mx); } cout<<(ll)mx*n<<endl;} C. Shifted MEX分析发现只要找一段最长的连续的序列就行了 代码12345678910111213141516171819202122232425vo...
Codeforces Round 1073 (Div. 2)
A. Array Coloring题目链接 题目描述一个数组排好序后,相邻两个数的原来的下标奇偶性是否相同 分析用pair<int,int>模拟即可 代码1234567891011121314151617void solve(){ int n; cin>>n; vector<pair<int,int> >vt(n+1); for(int i=1;i<=n;i++){ cin>>vt[i].first; vt[i].second=i; } sort(vt.begin()+1,vt.end()); for(int i=1;i<=n-1;i++){ if(vt[i].second%2==vt[i+1].second%2){ cout<<"NO"<<endl; return; ...
2026.1.16题解
A. Halloumi Boxes题目链接 题意有一个长度为n的数组,你每次操作能使一段区间反转,最长能反转的区间的长度是k,问进行若干次操作能否使数组变成非降序排列 分析 k>=2就可以一直选长度为2的区间反转,相当于交换相邻的两个数,这样就可以像冒泡排序那样排好序。 k=1说明不能进行任何操作,所以判断初始数组是否是非降序即可 代码12345678910111213141516171819void solve(){ int n,k; cin>>n>>k; vector<int >vt(n+1); for(int i=1;i<=n;i++){ cin>>vt[i]; } if(k>=2){ cout<<"YES"<<endl; return; } for(int i=1;i<=n-1;i++){...
Codeforces Round 1072 (Div. 3)
A. Social Experiment题目链接 题意有n个人分成若干组,每个组只能是2或3个人,每个组可以选择两个实验的其中一个,求两个实验的人数差最少是多少 分析 当n<=3时,只能分成一组,所以人数差只能是n 当n>3时,如果n为偶数,那么必定可以使人数相等,输出0即可;如果n为奇数时,先把n-1个人分成相等的两份,多出来的一个一定可以融入某一方(2+1=3,3+1=2+2)。 代码12345678910111213141516void solve() { int n; cin>>n; if(n==2 || n==3){ cout<<n<<endl; return; } if(n%2==0){ cout<<0<<endl; return; } else{ cout<<1<<e...
我的第一篇博客
Ciallo我要坚持打一场比赛写一场题解 个人主页 这是我的b站 这是我的github 这是我的cf 愿你前行的道路有群星闪耀,愿你留下的足迹有百花绽放










