NOIP2024模拟1
\(T1\) GHzoj 3752. 分糖果 \(100pts\)
-
设最终答案中有 \(a\) 个小组中的小朋友的糖数 \(\mod 3\) 均等于 \(1\) , \(b\) 个小组中的小朋友的糖数 \(\mod 3\) 互不相等, \(c\) 个小组中的小朋友的糖数 \(\mod 3\) 均等于 \(0\) , \(d\) 个小组中的小朋友的糖数 \(\mod 3\) 均等于 \(2\) 。
-
得到不等式组 \(\begin{cases} 0 \le 3a+b \le cnt_{1} \\ 0 \le 3c+b \le cnt_{0} \\ 0 \le 3d+b \le cnt_{2} \\ 0 \le b \le \min(cnt_{0},cnt_{1},cnt_{2}) \end{cases}\) ,枚举 \(b \in [0,\min(cnt_{0},cnt_{1},cnt_{2})]\) ,有 \(\begin{cases} \max \{ a \}=\left\lfloor \frac{cnt_{1}-b}{3} \right\rfloor \\ \max \{ c \}=\left\lfloor \frac{cnt_{0}-b}{3} \right\rfloor \\ \max \{ d \}=\left\lfloor \frac{cnt_{2}-b}{3} \right\rfloor \end{cases}\) ,计算 \(\max(a+b+c+d)\) 即可。
-
最终,有 \(\max\limits_{b=0}^{\min(cnt_{0},cnt_{1},cnt_{2})} \{ \left\lfloor \frac{cnt_{1}-b}{3} \right\rfloor+b+\left\lfloor \frac{cnt_{0}-b}{3} \right\rfloor+\left\lfloor \frac{cnt_{2}-b}{3} \right\rfloor \}\) 即为所求。
点击查看代码
ll f[100010],cnt[5]; queue<ll>q[5]; int main() {ll n,ans=0,pos=0,i,j,k,a,b,c,d;cin>>n;for(i=1;i<=n;i++){cin>>f[i];cnt[f[i]%3]++;q[f[i]%3].push(i);}for(b=0;b<=min(cnt[0],min(cnt[1],cnt[2]));b++){a=(cnt[1]-b)/3;c=(cnt[0]-b)/3;d=(cnt[2]-b)/3;if(a+b+c+d>ans){ans=a+b+c+d;pos=b;}}cout<<ans<<endl;if(ans!=0){for(i=1;i<=pos;i++){for(k=0;k<=2;k++){cout<<q[k].front()<<" ";q[k].pop();}cout<<endl;}for(k=0;k<=2;k++){for(i=1;i<=(cnt[k]-pos)/3;i++){for(j=1;j<=3;j++){cout<<q[k].front()<<" ";q[k].pop();}cout<<endl;}}}return 0; }
\(T2\) GHzoj 3753. 乒乓球 \(30pts\)
- 弱化版: luogu P1042 [NOIP2003 普及组] 乒乓球
- 部分分
-
\(30pts\) :\(O(n)\) 枚举。
点击查看代码
char s[100010]; int main() {ll n,k,suma=0,sumb=0,ansa=0,ansb=0,i;cin>>n>>k>>(s+1);for(i=1;i<=n;i++){if(s[(i-1)%k+1]=='A'){suma++;if(suma>=11&&suma-sumb>=2){ansa++;suma=sumb=0;}}else{sumb++;if(sumb>=11&&sumb-suma>=2){ansb++;suma=sumb=0;}}}cout<<ansa<<":"<<ansb<<endl;return 0; }
-
\(T3\) GHzoj 3754. 与或 \(15pts\)
\(T4\) GHzoj 3755. 跳舞 \(0pts\)
\(T5\) GHzoj 3752. 音乐播放器 \(0pts\)
总结
- \(T1\) 喜提除
admin
外最劣解。
后记
- 信息与公告如下。要是明年 \(J\) 组是这个难度,直接爆炸了。
- 题目背景多次出现 \(huge\) 。