社区讨论

求优化!

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 条回复,欢迎继续交流。

正在加载回复...