众所周知 NOIP = NOI plus。
NOIP ZJ-PJ 2018
以下仅为游记 . 题解预留.- >T3 T4 (T1T2太水了不放了)
定位 杭州学军中学紫荆港校区(浙江赛区)
day-n ~day0 本蒟蒻一直在刷题(逃
day1 听xh初三大佬说今年TG都是历年原题 中午看了下好像我都能AK TGday1
然而我产生了错觉啊真是崩溃(以为下午的比赛很简单然而全是假的)
下午大概2点左右进考场吧(竟然是体育馆坐个几百人)
今年的真是毒瘤 不能提前碰电脑真的是
还能依稀记起来 我比赛的时候以为密码是GaiGeKaiFang(40)nian(
真是毒瘤) 然而正确的密码在前面有个&(这。。。害的我少做了五分钟的题目 整整五分钟我就差5分钟玩完我最后一把扫雷)2:20 到考场里面说了一大堆东西(
反正我也没好好听)然后说什么时间是错的 仔细对了一下表好像真是错的。。。(
艾希真是恶心)好了话不多说(
好像真说了一大堆了)
T1
#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
",ans);
return 0;
//noip rp++;
}
预计100 实际100
T1 开个getline 5分钟秒了
T2
#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
",ans);
return 0;
//noip rp++;
}
第二题也很好做(不过不知道为什么很多人又双叒叕地爆了 就只有很少的分数)
十年OI一张空 不开LL见祖宗第二题开个LL5分钟秒了
预计100 实际100
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
",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
",ans);
return 0;
//noip rp++;
}
T3AC的大佬%%%真的是tql!!
主要我只想贪心骗一部分 然后就凉凉了
没办法了 送的十分也没拿到啊
预计10分 实际0分(MLE)
T4
#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++;
}
以为T3这么难 T4更难(考完试有人告诉我这用枚举就能AC)
然后我T4就在想什么树哈希的骚操作
凉凉了
那个时候输入都没想好怎么输入 艾希
直到打完代码我才知道了我又双叒叕凉凉了T4
(还不如直接输出3 都有32分(
虽然我也有32分的特判。)
总结
T3实际0pts
T4实际32pts(我说我改一个数字我就52pts了你可信)
预计 100pts+100pts+10pts+32pts=242pts
实际 100pts+100pts+ 0 pt+32pts=232pts
这次NOIP是一个惨痛的教训只有232分
难得和实际相差10分
ZJ-PJ 1= 230 - > 喜提一等
(
不然OI这条路是真的凉凉)
from 初二的小蒟蒻 绣湖中学。