但是会发现下取整这个操作非常难办,于是只能考虑优化这个操作:还是一样跑最短路,设当前是使用uu更新vv,假设dist[u]dist[u]是从1−>u1−>u的最短时间,现在要求vv的时间,如果在tt时刻出发走到vv的话,那么dist[v]=t+c[i]+d[i]/(t+1)(↓)dist[v]=t+c[i]+d[i]/(t+1)(↓)。
E:Dij,每次算距离的时候三分一下,三分的时候按照不下取整算实数来三分,因为如果下取整的话会出现平的一段导致不能三分。 详细题解和代码有空补。 A #include<iostream>#include<cstdio>template<typenameT>TMax(T x, T y){returnx > y ? x : y; }template<typenameT>TMin(T x, T y){returnx ...
AtCoder Beginner Contest 204 (AB水题,C题DFS,D题位运算DP,E题BFS好题),补题链接:HereA-Rock-paper-scissors石头剪刀布,两方是一样的则输出该值,否则输出该值ints[4]={0,1,2};voidsolve(){intx,y;cin>>x>>y;if(x==y)cout<<x;else{
AtCoder Beginner Contest 044(ABCD)题解 A - Tak and Hotels (ABC Edit) 思路:显然讨论一下 k k k的范围即可。 时间复杂度: O ( 1 ) O(1) O(1) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5,M=1e6+5,inf=0x3f3f3f3f,mod=1e9+7; #define...
AtCoder Beginner Contest 402(A-F详细题解) A 思路:我们直接输出字符串中的大写字母即可。 代码:#include<bits/stdc++.h> using namespace std; #define int long long #define N 500010 signed main(){ string s;cin>>… 秋日薄雾 AtCoder Beginner Contest 401 A-G 简易题解,如果题解...
intmain(){strings;cin>>s;for(chari='a';i<='z';i++){//枚举没出现过的字母intok=1;//假设i没出现过for(intj=0;j<s.size();j++){if(s[j]==i)ok=0;}if(ok==1){cout<<i<<endl;return0;}}return0;} B.Grid Rotation 思路: ...
B. Find snuke 枚举一个起点,再枚举方向,然后检验。 C. Almost Equal 用std::next_permutation枚举全排列。 D. Impartial Gift 把 排序,枚举 ,二分找到 中不超过 的最大的数,如果它不小于 则更新答案。 也可以把两个数组都排序之后双指针。 也可以每次检查两个数组中最大的数,如果差不超过 ...
按题意模拟。 B.Pasta 直接用multiset模拟选的过程,或统计每种数出现的次数。 C. Connect 6 枚举所有可能的横、竖、对角线判断即可。 D. Sequence Query 直接用multiset维护,询问时找到对应的迭代器向前/后移步即可。每次询问复杂度。 E. Putting Candies ...
题意: 题解 利用一个数能被3整除当且仅当其各位之和sum能被3整除。 如果sum本身能被3整除,则不需要删除。 否则统计原数的每一位数%3后的个数,比较%3 =1与%3 =2 的个数,有两种方法可以使其sum变为 %3 =0: %3=1 与%3=2,相互抵消,还剩下的差值即为答案。
链接:https://abc107.contest.atcoder.jp/tasks/arc101_b 思路:我感觉是道神仙题, 我要在这里手动膜一下余大神!!!口解题目tql!!!,首先不可能硬求中位数,我们考虑,如果所有的数为0和1的解法,那么我们可以考虑把0变为-1,然后对所有位置求前缀和,某两个前缀和后减前如果大于0则说明这个区间1更多(中位数...