xp04 - day02 考试
2025-08-13 21:03:27
发布于:浙江
平均选择
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1010;
int a[N];
void solve(){
ll n,x;cin>>n>>x;
ll res=0;
for(int i=1;i<=n;i++){
cin>>a[i];
res+=a[i];
}
if(res==n*x) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
int main(){
int T=1;cin>>T;
while(T--){
solve();
}
return 0;
}
奇怪的鼓点
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
string p,s;
cin >> p >> s;
int i = 0,j = 0;
bool flag = true;
while(i<p.size() && j<s.size()){
int s1 = 0,s2 = 0;
char now = p[i];
while(p[i]==now){
s1++;
i++;
}
while(s[j]==now){
s2++;
j++;
}
if(s1>s2 || s1*2<s2){
flag = false;
break;
}
}
if(flag) cout << "YES" << endl;
else cout<<"NO"<<endl;
}
return 0;
}
星际航道规划
// dp[i] 从前个下标中选,以a[i]结尾的最长上升子序列的长度
// (1<=j<=i-1) if(a[i] > a[j]) dp[i] = max(dp[j]+1,dp[i]);
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N = 50010;
int n;
int dp[N];
PII p[N];
int main(){
cin >> n;
for (int i = 1; i <= n; ++ i) cin >> p[i].x >> p[i].y;
sort(p + 1, p + n + 1);
for (int i = 1; i <= n; ++ i){
dp[i] = 1;
for (int j = 1; j < i; ++ j){
if (p[j].y < p[i].y) dp[i] = max(dp[i], dp[j] + 1);
}
}
int res = 0;
for (int i = 1; i <= n; ++ i) res = max(res, dp[i]);
cout << res << endl;
return 0;
}
奇奇怪怪的数组
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int t;
cin >> t;
long long ans1 = 0, ans2 = 0, sum = 0, cnt = 0;
deque<long long> q, rq;
int mod = 0;
while (t--) {
int op;
cin >> op;
if (op == 1) {
if (mod == 0) {
long long x = q.back(); q.pop_back();
q.push_front(x);
ans1 += sum - x * cnt;
long long y = rq.front(); rq.pop_front();
rq.push_back(y);
ans2 -= sum - y * cnt;
} else {
long long x = rq.back(); rq.pop_back();
rq.push_front(x);
ans2 += sum - x * cnt;
long long y = q.front(); q.pop_front();
q.push_back(y);
ans1 -= sum - y * cnt;
}
} else if (op == 2) {
mod ^= 1;
} else {
long long k;
cin >> k;
cnt++;
if (mod == 0) {
q.push_back(k);
rq.push_front(k);
sum += k;
ans1 += cnt * k;
ans2 += sum;
} else {
rq.push_back(k);
q.push_front(k);
sum += k;
ans2 += cnt * k;
ans1 += sum;
}
}
if (mod == 0) cout << ans1 << "\n";
else cout << ans2 << "\n";
}
}
}
数字变换
#include <bits/stdc++.h>
using namespace std;
const int N = 62;
const long long INF = 1e18;
long long dp[N + 1][N + 1][N + 1];
int main() {
int T;
cin >> T;
for (int k = 0; k <= N; k++)
for (int i = 0; i <= N; i++)
for (int j = 0; j <= N; j++)
dp[k][i][j] = INF;
dp[0][0][0] = 0;
for (int k = 1; k <= N; k++) {
for (int i = 0; i <= N; i++) {
for (int j = 0; j <= N; j++) {
dp[k][i][j] = dp[k - 1][i][j];
if (i - k >= 0)
dp[k][i][j] = min(dp[k][i][j], dp[k - 1][i - k][j] + (1LL << k));
if (j - k >= 0)
dp[k][i][j] = min(dp[k][i][j], dp[k - 1][i][j - k] + (1LL << k));
}
}
}
while (T--) {
long long x, y;
cin >> x >> y;
long long ans = INF;
for (int i = 0; i <= N; i++) {
for (int j = 0; j <= N; j++) {
if ((x >> i) == (y >> j))
ans = min(ans, dp[N][i][j]);
}
}
cout << ans << "\n";
}
return 0;
}
奇奇怪怪的数组 暴力
#include<bits/stdc++.h>
using namespace std;
int t;
void solve(){
int q;
scanf("%d",&q);
long long n[200005];
int x=0;
while(q--){
int s;
scanf("%d",&s);
if(s==1){
long long num=n[x];
for(int i=1;i<=x;i++){
swap(n[i],num);
}
long long c=0;
for(int i=1;i<=x;i++){
c+=n[i]*i;
}
printf("%lld\n",c);
}else if(s==2){
for(int i=1;i<=x/2;i++){
swap(n[i],n[x-i+1]);
}
long long c=0;
for(int i=1;i<=x;i++){
c+=n[i]*i;
}
printf("%lld\n",c);
}else{
x++;
int k;
cin>>k;
n[x]=k;
long long c=0;
for(int i=1;i<=x;i++){
c+=n[i]*i;
}
printf("%lld\n",c);
}
}
}
int main(){
scanf("%d",&t);
while(t--){
solve();
}
return 0;
}
这里空空如也
有帮助,赞一个