dp[i][0][0] =0; for(intj =1; j <= i; ++ j) for(intk =0; k < d; ++ k){ dp[i][j][k] =max(dp[i -1][j][k], dp[i -1][j -1][(k - a + d) % d] + ba); } } LL ans = dp[n][k][0]; if(ans <0) ans =-1; cout << ans <<'\n'; return0;...
比赛链接: Tasks - AtCoder Beginner Contest 281 A,B,C 题目过水,略过不讲 D题意: 给定一个长度为 n(n<=10^2) 的序列,从中选取 K(K<=10^2) 个数,将所有选出的数相加后放入一个集合 S ,求集合 S 中存在…
可以看出,当该位上的元素都相同的时候(第1和第2情况),我们可以通过改变x在该位上的值,来使得每一个元素在该位上是0, 那么最终的最大值在该位上一定是0,会比最大值在该位是1的要小;所以,如果该位元素都相同,那么我们可以不用管这一位了。 大部分情况都是像第三种,那么在这个时候,我们可以先把在该位...
PI=acos(-1);string s[N];voidsolve(){int n;cin>>n;for(int i=0;i<n;i++)cin>>s[i];for(int i=n-1;i>=0;i--)cout<<s[i]<<endl;}intmain(){IOS;int _=1;// cin >> _;while(_--){solve
链接: E - Count Simple Paths分析: 这里要求解的是无向图,从一个节点出发的所有不同路径的个数,用DFS从节点开始进行遍历,这里和一般DFS不同的是,同一个节点可以多次访问, 只要保证每次递归的时候, 从初始节…
AtCoder Beginner Contest 382 题解 int n,k; cin>>n>>k; string p; cin>>p; int c=0; Rep(i,p.length()) c+=p[i]=='@'; cout<<n-c+min(k,c); 1. 2. 3. 4. 5. 6. 7. B - Daily Cookie 2 int n,k; cin>>n>>k;...
C. Almost Equal 用std::next_permutation枚举全排列。 D. Impartial Gift 把 排序,枚举 ,二分找到 中不超过 的最大的数,如果它不小于 则更新答案。 也可以把两个数组都排序之后双指针。 也可以每次检查两个数组中最大的数,如果差不超过 就是答案,否则更大的数一定不能选。
AtCoder Beginner Contest 042题解(ABCD) 传送门 A - Iroha and Haiku (ABC Edition) 签到题,直接判断是否是两个 5 5 5,一个 7 7 7。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5,M=1e6+5,inf=0x3f3f3f3f,mod=1e9+7; ...
AtCoder Beginner Contest 151的数学推导难不难? 组合数在AtCoder Beginner Contest 151中怎么运用? AtCoder Beginner Contest 151有哪些数论相关的题? 思路统计最大值出现的次数,和最小值出现的次数。虽然是每次都是MAX-MIN,我们先求MAX的和,然后再求MIN的和,做差。 这次代码写的真的很漂亮 题目地址: 代码语言...
D. Sequence Query 直接用multiset维护,询问时找到对应的迭代器向前/后移步即可。每次询问复杂度。 E. Putting Candies 显然若干次操作之后,糖果数会进入一个长度不超过的循环,找出这个循环快速计算,总共只需模拟步。 F. Skate 容易发现只有起点和与障碍相邻的点可能到达,总共个,每个点只有4种移动方式,BFS 即可。