第二场L、J、K

发布时间:2026/8/24 15:25:33
第二场L、J、K 小组合作 - 题目详情 - JNACMer Online Judge这道题可能一开始你会想到满足所有大的这样就可以让分组合法而且好像看上去也不影响是最多的但是有一种情况如果把一个大数放在一个已经够人数的组里而且这个人数大于这个大数那么你可以省掉一个大数的组而去分成一个小数的组所以你可以从小数开始但是你必须在满足最大的那个数字的前提下不然不合法#include bits/stdc.h using namespace std; int a[100010]; void solve() { int n; cin n; for(int i 1; i n; i) cin a[i]; sort(a 1, a n 1); if(a[n] n) { cout -1; return; } int ans 1, cnt 0; for(int i 1; i n - a[n]; i) { cnt; if(cnt a[i]) { ans; cnt 0; } } cout ans; } int main() { solve(); }MEX 合并 - 题目详情 - JNACMer Online Judge这题的解法是根据最大的MEX的基础上加数字因为其他MEX比他小只有那个MEX上用空位就行其他多的数字可以当成比那个最大的MEX更大的数字然后就是有一个坑如果所有MEX都一样或者只有最大的那个MEX有多的数字那么合并后的MEX就是原本最大的MEX#include bits/stdc.h #define int long long using namespace std; signed main() { int n; cinn; int x,y,x10,sum0,cnt0,u0; for(int i0;in;i){ cinxy; if(i!0x1!x){ u1; } x1max(x1,x); sumy-x; if(y-x!0){ cnt; } } if(cnt1u1){ sumx1; coutsum; }else coutx1; return 0; } #include bits/stdc.h #define int long long using namespace std; signed main() { int n; cinn; int x,y,x10,sum0,cnt0,u0; for(int i0;in;i){ cinxy; if(i!0x1!x){ u1; } x1max(x1,x); sumy-x; if(y-x!0){ cnt; } } if(cnt1u1){ sumx1; coutsum; }else coutx1; return 0; }蛇形走位 - 题目详情 - JNACMer Online Judge这道题的思路是枚举因为总共才10的7次方种而且纯计算所以可以暴力枚举方法是设计二进制数比如这一位是0就减是1就加把所有可能的二进制数都写出来就可以了怎么写出来比如3位数你就0、1、2、3、4就行了这样不就是三位二进制吗#include bits/stdc.h #define ll long long using namespace std; signed main() { int n; cinn; vectorll l(n); ll cnt10; for (int i 0; i n; i) cin l[i]; for(int i0;i(1n);i){ ll nt1;//(变化前) ll net0; ll cnt0; for(int j0;jn;j){ if(i(1j)){ netnt2*l[j]; }else{ netnt-2*l[j]; } if((net0)!(nt0)){ cnt; } ntnet; } cnt1max(cnt1,cnt); } coutcnt1; return 0; }

相关新闻