The 2023 ICPC Asia Nanjing Regional Contest CG
C. Primitive Root
题意:问你满足:
思路:我们知道异或的性质:
由于
那么
根据上述性质:
即:
又因为
- 对于任意
即 都是满足条件的。(最大的都比m小了,那肯定是满足的了),这里有 个 - 对于任意
即 都是不合法的。(最小的都比m大了) - 对于
是不确定是,需要手动判断。
// AC one more times // nndbk #include <bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 1e9 + 7; const int N = 2e5 + 10; int main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int t; cin>>t; while(t--) { ll p,m; cin>>p>>m; ll l = m/p-1+1,r = (m-2)/p+((m-2)%p!=0)+1; ll cnt = m/p; for(ll k = l;k <= r; k++) if(((k*p+1)^(p-1))<=m)cnt++; cout<<cnt<<"\n"; } return 0; }
G. Knapsack
题意:给你
思路:一开始想法的先做
我们注意到两个事情:
- 如果有两个物品
,其中 选择免费,而 选择花钱。那么一定有 - 如果有两个物品
,其中 选择免费,而 不选择。那么一定有
那么我们发现一个事情:一定存在一个分界点
我们按照
// AC one more times // nndbk #include <bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 1e9 + 7; const int N = 5e3 + 10; struct node { ll w,v; }a[N]; bool cmp(node a,node b) { return a.w > b.w; } ll sum[N],f[5010][10010],pre[N]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int n,W,k; cin>>n>>W>>k; for(int i = 1;i <= n; i++) { ll w,v; cin>>w>>v; a[i].w = w,a[i].v = v; } sort(a+1,a+1+n,cmp); multiset<int>s; for(int i = 1;i <= n; i++) { int val = a[i].v; if(s.size()<k) { s.insert(val); pre[i] = pre[i-1] + val; } else if(s.size()==k && k != 0){ int t = *s.begin(); if(t < val) { s.erase(s.begin()); s.insert(val); pre[i] = pre[i-1] - t + val; } else pre[i] = pre[i-1]; } } ll ans = 0; for(int i = n;i >= 1; i--) { for(int j = 0;j <= W; j++) { f[n-i+1][j] = f[n-i][j]; if(j>=a[i].w) f[n-i+1][j] = max(f[n-i+1][j],f[n-i][j-a[i].w]+a[i].v); } } for(int j = k;j <= n; j++) { ans = max(ans,f[n-j][W]+pre[j]); } cout<<ans<<"\n"; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix