NOIP2024模拟3
NOIP2024模拟3
GHzoj 3765. 超市抢购
点击查看原版数据生成器
int a[maxn],b[maxn];
int randseed;
unsigned int rnd()
{
unsigned int r;
r = randseed = randseed * 1103515245 + 12345;
return (r << 16) | ((r >> 16) & 0xFFFF);
}
int main()
{
cin>>n>>randseed;
int sum=0;
for (int i=n;i>=1;i--)
{
a[i]=rnd()%1000,b[i]=rnd()%1000;
if (sum+(a[i]-b[i])<0) swap(a[i],b[i]);
sum+=(a[i]-b[i]);
}
}
-
题面有些绕口。其实就是如果第
种商品可以使用 点法力借用 件第 种商品。 -
下发的数据生成器实际上是将种子自然溢出后再求解,但最后答案会炸
int
,如果直接#define int long long
会生出错误数据。点击查看代码
const int maxn=10000010; int a[maxn],b[maxn]; int n,randseed; unsigned int rnd() { unsigned int r; r = randseed = randseed * 1103515245 + 12345; return (r << 16) | ((r >> 16) & 0xFFFF); } void solve() { ll ans=0; for(int i=1;i<=n-1;i++) { if(b[i]>a[i]) { ans+=b[i]-a[i]; a[i+1]-=b[i]-a[i]; } } cout<<ans<<endl; } int main() { cin>>n>>randseed; int sum=0; for (int i=n;i>=1;i--) { a[i]=rnd()%1000,b[i]=rnd()%1000; if (sum+(a[i]-b[i])<0) swap(a[i],b[i]); sum+=(a[i]-b[i]); } solve(); return 0; }
GHzoj 3766. 核酸检测
-
第一问同区间选点问题,贪心胡乱做就行。
-
观察到住户(询问区间)很多,但时刻很少,说明有很多无用区间(能被覆盖的区间)。
-
对于每个左端点
我们仅保存最小的右端点 。 -
设
表示在 喊了一句,要使观望时间与 有交集的人全部听到的最小喊的次数,考虑刷表,有 ,边界为 。方案数在继承状态时一并转移即可。点击查看代码
const ll p=1000000007; ll r[1100],f[100010],g[100010]; int main() { ll n,x,y,maxl=0,maxr=0,ans=0x7f7f7f7f,sum=0,i,j,k; cin>>n; memset(r,0x3f,sizeof(r)); memset(f,0x3f,sizeof(f)); for(i=1;i<=n;i++) { cin>>x>>y; r[x]=min(r[x],y); maxl=max(maxl,x); maxr=max(maxr,y); } f[0]=0; g[0]=1; for(i=0;i<=maxr-1;i++) { for(j=i+1,k=r[i+1];j<=k;j++,k=min(k,r[j])) { g[j]=((f[j]<=f[i]+1)*g[j]+(f[j]>=f[i]+1)*g[i])%p; f[j]=min(f[j],f[i]+1); } } for(i=maxl;i<=maxr;i++) { sum=((ans<=f[i])*sum+(ans>=f[i])*g[i])%p; ans=min(ans,f[i]); } cout<<ans<<endl; cout<<sum<<endl; return 0; }
GHzoj 3767. 七龙珠
-
时限
。 -
部分分
:输出Stop dreaming xm!
。Q:为什么没有设置这档分呢?
A:因为
是不可能被战胜的。Q:那为什么数据中小明一定能召唤出神龙呢?
A:因为就算小明召唤了神龙也无法改变
是不可能被战胜的事实。
-
正解
- 龙珠能量有阈值限制,背包维护每种碎片所能拼出的所有能量值。
- 然后等价于从
个不等长数组中各取出 个数乘以一定的权重作为其权值,找到其中第 大的数。做法同 POJ2442 Sequence ,可由 luogu P1631 序列合并 拓展得到。注意去重。- 具体地,设构成第
大的元素在所处个数组中的排名为 ,则构成第 大的元素在所处个数组中的排名为一定 。
- 具体地,设构成第
- 时间复杂度瓶颈在背包预处理上,需要
bitset
优化。
点击查看代码
struct node { ll val; vector<ll>s; bool operator < (const node &another) const { return val<another.val; } }; ll a[10],x[10],b[10][10010]; bitset<100010>f; vector<ll>s[10],g; priority_queue<node>q; map<vector<ll>,bool>c; int main() { ll m,k,sum=0,i,j,h; cin>>m>>k; for(i=1;i<=7;i++) { cin>>a[i]; } for(i=1;i<=7;i++) { cin>>x[i]; for(j=1;j<=x[i];j++) { cin>>b[i][j]; } } for(h=1;h<=7;h++) { f.reset(); f[0]=1; for(i=1;i<=x[h];i++) { f|=(f<<b[h][i]);//溢出的直接丢掉 } if(a[h]>=0) { for(i=m;i>=0;i--) { if(f[i]==1) { s[h].push_back(i); } } } else { for(i=0;i<=m;i++) { if(f[i]==1) { s[h].push_back(i); } } } } for(i=1;i<=7;i++) { g.push_back(0); sum+=a[i]*s[i][g[i-1]]; } c[g]=true; q.push((node){sum,g}); while(q.empty()==0) { k--; if(k==0) { break; } else { sum=q.top().val; g=q.top().s; q.pop(); for(i=1;i<=7;i++) { if(g[i-1]<s[i].size()-1) { g[i-1]++; if(c.find(g)==c.end()) { c[g]=true; q.push((node){sum+a[i]*(s[i][g[i-1]]-s[i][g[i-1]-1]),g}); } g[i-1]--; } } } } if(k==0) { cout<<q.top().val<<endl; } else { cout<<"Stop dreaming xm!"<<endl; } return 0; }
GHzoj 3768. 龙珠游戏
-
时限
,内存限制给到了 。 -
luogu P7137 [THUPC2021 初赛] 切切糕 中的优先选择权不适用于本题,而 初中信息奥赛模拟测试 T4 ZEW 玩 thd 对补刀的理解可以适用于本题。
-
龙若不拿左右两段,而拿中间的龙珠在一定时间内是不会影响答案的。即若拿中间的龙珠可以先钦定拿,最后一次性全部拿出统计答案。因此我们可以只统计龙和小明只拿两端的龙珠的情况。
-
设
表示要拿掉 内的龙珠,龙能额外(之前应该拿的时候没有拿导致的)拿 龙珠,轮到龙/小明拿龙珠,小明最少/最多能拿多少个龙珠,状态转移方程为 。点击查看代码
ll v[505],f[505][505][255],g[505][505][255]; int main() { ll n,i,len,l,r; cin>>n; for(i=1;i<=n;i++) { cin>>v[i]; } for(len=1;len<=n;len++) { for(l=1,r=l+len-1;r<=n;l++,r++) { for(i=0;i<=n/2;i++) { f[l][r][i]=g[l][r][i]=max(f[l][r-1][i+1]+v[r],f[l+1][r][i+1]+v[l]); if(i-1>=0) { f[l][r][i]=min(f[l][r][i],min(f[l+1][r][i-1],f[l][r-1][i-1])); } } } } cout<<g[1][n][0]<<endl; return 0; }
总结
- 有大样例,赢。
- 发下来的数据生成器尽量不要改。
- 不保证发下来的数据生成器能够通过编译。
- 第二问口胡了正着放一遍,反着放一遍,然后容斥的做法写假了,赛后发现两次区间都是一样的,白容斥了。
后记
-
昨晚上一开始将比赛加进来的时候显示的是
赛制 ,后来又改成了 赛制。 -
比赛还没开始就把大样例发下来了。
-
- 发下来的数据生成器不能通过编译,还需要亲自定义
和 。
- 发下来的数据生成器不能通过编译,还需要亲自定义
-
-
什么是
bendan
?
-
-
-
双引号的前后引号都写反了。
-
某hub是啥?
-
小明就算召唤了神龙,找到了
, 了 ,解决了 完全问题也不能打败 。 是无敌的。 -
小明原来还好这口。话说 @jijidawang 还没女装呢。
-
本文来自博客园,作者:hzoi_Shadow,原文链接:https://www.cnblogs.com/The-Shadow-Dragon/p/18296267,未经允许严禁转载。
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】