社区讨论
求优化!
P7078[CSP-S 2020] 贪吃蛇参与者 4已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lo1hp81q
- 此快照首次捕获于
- 2023/10/22 21:13 2 年前
- 此快照最后确认于
- 2023/11/02 21:50 2 年前
CPP
#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> LL;
const int N = 1910810;
int a[N];
multiset<LL>s;
int n, k;
int ans1 = -1,ans2 = -1;
void write(int x)
{
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar(x%10+'0');
}
int main() {
// ios::sync_with_stdio(NULL);
// cin.tie(0);
// cout.tie(0);
freopen("1.in", "r", stdin);
freopen("1.out", "w", stdout);
int t;
scanf("%d",&t);
for (int i = 1; i <= t; i++) {
if (i == 1) {
scanf("%d",&n);
for (int i = 1; i <= n; i++)
scanf("%d",&a[i]);
} else {
scanf("%d",&k);
for (int i = 1; i <= k; i++) {
int x, y;
scanf("%d%d",&x,&y);
a[x] = y;
}
}
s.clear();
for (int i = 1; i <= n; i++)
s.insert({a[i],i});
//cout<<s.size()<<endl;
// bool flag = 0;
ans1 = -1,ans2 = -1;
while (s.size() > 1) {
auto v = *(--s.end()), u = *s.begin(), nmsl = *(--s.end());
v.first -= u.first;
// cout<<v.first<<" "<<v.second<<endl;
s.erase(s.begin());
//if(s.size()==1) break;
if (s.size())
s.erase((--s.end()));
// cout<<s.size()<<" "<<flag<<endl;
if (v < *s.begin()) {
s.insert(v);
if (ans1 == -1)
ans1 = s.size();
//cout<<ans1<<endl;
} else {
s.insert(v);
if (ans1 != -1) {
ans2 = s.size();
break;
}
}
}
//cout << ans2 << endl;
if(ans2 == -1) {
ans2 = 2;
}
if(ans2 == 2 and ans1 == -1) {
ans1 = 1;
}
else if(ans2 % 2 != ans1 % 2) {
ans1++;
}
write(ans1);
putchar('\n');
// s.insert(v);
}
// if (flag)
// printf("%d\n", s.size() + 1);
// else
// printf("%d\n", s.size());
}
$70$ pts 有啥优化方法?(不开 O2)
回复
共 6 条回复,欢迎继续交流。
正在加载回复...