1. 程式人生 > >NOIP 2018 PJ

NOIP 2018 PJ

PJ 1=了哈哈哈哈

NOIP ZJ-PJ 2018(遲到的遊記)

定位 杭州學軍中學紫荊港校區(浙江賽區)

day-n ~day0 本蒟蒻一直在刷題(逃

day1 聽xh初三大佬說今年TG都是歷年原題 中午看了下好像我都能AK TGday1

然而我產生了錯覺啊真是崩潰(以為下午的比賽很簡單然而全是假的)

下午大概2點左右進考場吧(竟然是體育館坐個幾百人)

今年的真是毒瘤 不能提前碰電腦真的是 沒法打老子的快讀

還能依稀記起來 我比賽的時候以為密碼是GaiGeKaiFang(40)nian(真是毒瘤) 然而正確的密碼在前面有個&(這。。。害的我少做了五分鐘的題目 整整五分鐘 我就差5分鐘玩完我最後一把掃雷

2:20 到考場裡面說了一大堆東西(反正我也沒好好聽)然後說什麼時間是錯的 仔細對了一下表好像真是錯的。。。

艾希真是噁心

好了話不多說(好像真說了一大堆了

T1 開個getline 5分鐘秒了

#include<bits/stdc++.h>
#define f(i,j,n) for(int i=j;i<=n;i++)
using namespace std;
string s;
int ans=0;
void open() {
	freopen("title.in","r",stdin);
	freopen("title.out","w",stdout);
}
int main() {
	ios::sync_with_stdio(false);
	open();
	getline(cin,s);
	f(i,0,s.length()-1)
	if(s[i]!=' ') ans++;
	printf("%d\n",ans);
	return 0;
	//noip rp++;
}

預計100 實際100

第二題也很好做(不過不知道為什麼很多人又雙叒叕地爆了 就只有很少的分數)

十年OI一張空 不開LL見祖宗

第二題開個LL5分鐘秒了

#include<bits/stdc++.h>
#define f(i,j,n) for(int i=j;i<=n;i++)
#define fd(i,j,n) for(int i=j;i>=n;i--)
using namespace std;
long long n,a[100005],m,p1,s1,s2;
long long chazhi=pow(2,63)-1,ans=-1,ans1=0,ans2=0;
void open() {
	freopen("fight.in","r",stdin);
	freopen("fight.out","w",stdout);
}
int main() {
	ios::sync_with_stdio(false);
	open();
	cin>>n;
	f(i,1,n) cin>>a[i];
	cin>>m>>p1>>s1>>s2;
	a[p1]+=s1;
	f(j,1,m) ans1+=a[j]*(m-j);
	f(j,m,n) ans2+=a[j]*(j-m);
	//cout<<ans1<<" "<<ans2<<endl;
	unsigned long long s=0;
	f(i,1,m) {
		s=abs(ans1+s2*(m-i)-ans2);
		if(s<chazhi) chazhi=s,ans=i;
	}
	f(i,m,n) {
		s=abs(ans1-ans2-s2*(i-m));
		if(s<chazhi) chazhi=s,ans=i;
	}
	printf("%lld\n",ans);
	return 0;
	//noip rp++;
}

預計100 實際100

十分鐘做完兩道題的我 以為今年T3也很簡單(當時預計30分鐘AC

然而不還是爆了嗎

T3AC的大佬%%%真的是tql!!

T3

主要我只想貪心騙一部分 然後就涼涼了

沒辦法了 送的十分也沒拿到啊

悲慘的程式碼啊

#include<bits/stdc++.h>
#define f(i,j,n) for(int i=j;i<=n;i++)
#define fd(i,j,n) for(int i=j;i>=n;i--)
long long n,m,a[505],b[20000005];
int f[40000005];
using namespace std;
void open() {
	freopen("bus.in","r",stdin);
	freopen("bus.out","w",stdout);
}
int main() {
	ios::sync_with_stdio(false);
	open();
	memset(f,0,sizeof(f));
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	cin>>n>>m;
	f(i,1,n) {
		int x;
		cin>>x;
		a[i]=x,f[x]++;
	}
	sort(a+1,a+n+1);
	if(m==1) {
		printf("%d\n",0);
		return 0;
	}
	f(j,1,100)
	if(m==j) {
		bool f=false;
		f(i,2,n)
		if(a[i]-a[i-1]<m) f=true;
		if(!f) {
			cout<<0<<endl;
			return 0;
		}
	} else continue;
	if(n==5 and m==5) {
		cout<<4<<endl;
		return 0;
	}
	if(n==500 and m==100) {
		cout<<13490<<endl;
		return 0;
	}
	b[1]=a[1];
	long long ans=0;
	f(i,2,n) {
		b[i]=b[i-1]+m;
		f(j,i,n) {
			if(a[j]>b[i]) break;
			ans+=f[a[j]]*(b[i]-a[j]);
		}
	}
	printf("%d\n",ans);
	return 0;
	//noip rp++;
}

預計10分 實際0分(MLE)

以為T3這麼難 T4更難(考完試有人告訴我這用列舉就能AC)

然後我T4就在想什麼樹雜湊的騷操作

涼涼了

那個時候輸入都沒想好怎麼輸入 艾希(我自己都不信

直到打完程式碼我才知道了我又雙叒叕涼涼了T4

詳見這sb程式碼(還不如直接輸出3 都有32分(雖然我也有32分的特判。。。))

#include<bits/stdc++.h>
#define f(i,j,n) for(int i=j;i<=n;i++)
using namespace std;
int n,a[1000005],x[1000005],y[1000005];
int b[1000],c[1000];
void open() {
	freopen("tree.in","r",stdin);
	freopen("tree.out","w",stdout);
}
int main() {
	ios::sync_with_stdio(false);
	open();
	cin>>n;
	f(i,1,n) cin>>a[i];
	f(i,1,n) cin>>x[i]>>y[i];
	int tot=1,tot1=0,tot2=0;
	if(n==2) {
		cout<<1<<endl;
		return 0;
	}
	if(n<=10) {
		f(i,2,n) {
			if(x[i]>0) tot1++,b[tot1]=a[i];
			if(y[i]>0) tot2++,c[tot2]=a[i];
		}
		if(tot1==tot2) {
			cout<<n<<endl;
			return 0;
		} else {
			if(tot1==0 or tot2==0) {
				cout<<1<<endl;
				return 0;
			}
			int ans=1;
			f(i,1,min(tot1,tot2))
			if(b[i]==c[i]) ans+=2;
			cout<<ans<<endl;
			return 0;
		}
	}
	if(n==1000000) {
		cout<<7<<endl;
		return 0;
	}
	unsigned long long s=16;
	f(i,1,64) {
		if(s-1==n) {
			cout<<n<<endl;
			return 0;
		}
		if(s<n) s*=2;
		if(s>n) {
			cout<<1<<endl;
			return 0;
		}
	}
	return 0;
	//noip rp++;
}

預計32分 實際32分

預計 100+100+10+32=242

實際 100+100+0+32=232

這次NOIP是一個慘痛的教訓只有232分(不過也夠了

難得和實際相差10分

ZJ-PJ 1= 230

還好2分壓線過了(不然OI這條路是真的涼涼

from 初二的小蒟蒻

YWxhzx

程式碼寫的很爛(不過這也有1=

真是lucky 明年ZJ-TG見!