长春CCPC邀请赛
总体来说一般般吧,都是能写的都是写不是太难的题,G题很亏,非常简单的题最开始没看出来正确思路后边打一堆模拟错了好多发。
G、Platform Game
题目链接:Problem - G - Codeforces
题目很好懂,就是一个球只能往右下走,下面有很多板子,只能绕开板子走。正解非常简单,只需要模拟它的路线就行了。当会挡住它的时候就向右,不然就向下就行了。
代码:
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int, int>
#define se second
#define fi first
const int N = 1e6+1;
int a[N];
int n,m;
int sx,sy,ans;
struct p
{int l;int r;int h;
}s[N];
bool cmp(p a, p b)
{return a.h > b.h;
}
void solve()
{cin >> n;for(int i=0; i<n; i++) cin >> s[i].l >> s[i].r >> s[i].h;cin >> sx >> sy;ans=sx;sort(s,s+n,cmp);for(int i=0; i<n; i++){if(sy>=s[i].h&&ans>s[i].l&&ans<s[i].r)ans=s[i].r;}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;
}
I、The Easiest Problem
题目链接:Problem - I - Codeforces
没什么好说的。
代码:
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int, int>
#define fi first
#define se second
const int N = 1e6+1;
int a[N];
string s;
int n,m,sum,cnt;
int x,y;
void solve()
{cout << 21;
}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t=1;
// cin >> t;while(t--) solve();return 0;}
L、Recharge
题目链接:Problem - L - Codeforces
题目比较好懂,分为奇数和偶数的情况进行模拟即可。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int, int>
#define fi first
#define se second
const int N = 1e6+1;
int a[N];
string s;
int n,m,sum,cnt;
int x,y;
int ans,k;
int yv;
void solve()
{int n;ans=0;cin >> k >> x >> y;if(k==1){cout << x+y << endl;return ;}if(k%2==0){ans+=(y*2)/k;m=y*2%k;if(x>=k-m){ans++;ans+=(x-(k-m))/k; }}else//k为奇数 {ans+=min(x,y/((k-1)/2));if(x==y/((k-1)/2)){cout << x << endl;return ;}if(x<y/((k-1)/2)){ans+=(y-(k-1)/2*x)/((k+1)/2);}if(x>y/((k-1)/2))//x剩余 {x-=min(x,y/((k-1)/2));x--; //此时最上边有个x yv=y%((k-1)/2);if(x<k-1-yv*2){cout << ans <<endl;return ;}else{ans++;x-=k-1-yv*2;ans+=x/k;}}}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;}