明显感觉到码力下降了 需要老年人康复训练计划
这场码力比较大 需要思维比较巧来减少码力 算是少见的cf div2了

A. Anti-knapsack
给你 nnn 和 kkk ,问是否有办法找出最大的集合使得集合中任意子集和不为k 我们发现每次分奇偶去掉 m/2m/2m/2 (分奇偶),那么也意味着 i<=m/2i <= m/2i<=m/2 (分奇偶)也凑不出来 毕竟按照我们的定义可以无限递归下去 这样我们凑 m=11m = 11m=11 的时候, 11=1+3+711 = 1 + 3 + 711=1+3+7 11=4+711 = 4 + 711=4+7 那么按照我们的规则 444 是凑不出来的 因为没有 1、2、3、41、2、3、41、2、3、4 所以我们只用考虑 11=4+711 = 4 + 711=4+7 不需要考虑递归下去的情况

#include<cstdio>
using namespace std;
const int MAX_N = 1025;int arr[MAX_N];int main()
{int t;scanf("%d",&t);while(t--){int n,m;int cnt = 0;scanf("%d%d",&n,&m);if(m%2==0){for(int i = m/2;i<=n;++i){if(i==m) continue;arr[++cnt] = i;}}else{for(int i = m/2+1;i<=n;++i){if(i==m) continue;arr[++cnt] = i;}}printf("%d\n",cnt);for(int i = 1;i<=cnt;++i){i==cnt?printf("%d\n",arr[i]):printf("%d ",arr[i]);}}return 0;
}

B. Planet Lapituletti
比较烦躁的模拟 给你一个镜面数字 并且给你 nnn 小时制 与 mmm 分钟制度 问你能不能找一个给出时间的将来时刻(包括给出时间)满足时间为镜面时间 按照镜面时间的定义去搜索 符合条件的则输出 否则到下一天认为是 00:00

#include<cstdio>
#include<map>
#include<iostream>
using namespace std;
#define dbg(x) cout << #x << " = " << (x) << endl;
#define dbg2(x,y) cout << #x << " = " << (x) << " " << #y << " = " << (y) << endl;
#define dbg3(x,y,z) cout << #x << " = " << (x) << " " << #y << " = " << (y) << " " << #z << " = " << (z) << endl;char str[15];
map<int,int> mp;
int arr[6] = {0,0,1,2,5,8};int main()
{int t,n,m;scanf("%d",&t);mp[0] = 0;mp[1] = 1;mp[2] = 5;mp[5] = 2;mp[8] = 8;while(t--){int ans_h = -1,ans_mi = -1;scanf("%d%d",&n,&m);scanf("%s",str+1);bool flag = false;int h = (str[1]-'0')*10 + str[2]-'0';int mi = (str[4]-'0')*10 + str[5] - '0';int minn = 0x3f3f3f3f;for(int i = 1;i<=5;++i){for(int j = 1;j<=5;++j){int h_ = arr[i]*10+arr[j];if(h_>=n||h_<h) continue;for(int k = 1;k<=5;++k){for(int l = 1;l<=5;++l){int mi_ = arr[k]*10+arr[l];if(mi_>=m||(h_==h&&mi_<mi)) continue;if((mp[arr[l]]*10+mp[arr[k]]>=n)||(mp[arr[j]]*10+mp[arr[i]]>=m)) continue;if(((h_-h)*m+mi_-mi)<minn){minn = ((h_-h)*m+mi_-mi);ans_h = h_;ans_mi = mi_;flag = true;}}}}}if(flag){if(ans_h<10) printf("0");printf("%d:",ans_h);if(ans_mi<10) printf("0");printf("%d\n",ans_mi);}else printf("00:00\n");}return 0;
}

C. K-beautiful Strings
题意:给你 nnn 长度的字符串,与 kkk 问你能不能找到一种字典序大于小于给出字符串的字符串满足每个字母出现次数的和为 kkk 的倍数
做法:如果字符串本身满足 我们输出字符串 否则一定需要增大字典序 我们发现如果去倒着遍历求一遍第一个增大字典序的位置 这样怎么check 是否合理是关键,因为是倒着枚举 我们能填放的位置均在后面为 n−xbn-xbn−xb xbxbxb 为枚举的下标 我们只要用这个判断出现了几个字母 * k 是否大于 n−xbn-xbn−xb 进行check 找到第一个符合的按照字典序从大到小从后面往前插入,因为此时字典序已经比原字符串大 你可以放完再sort逻辑也是一致的

#include<cstdio>
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<cstring>
#include<set>
#include<cmath>
#include<stack>
using namespace std;
const int MAX_N = 100025;#define dbg(x) cout << #x << " = " << (x) << endl;
#define dbg2(x,y) cout << #x << " = " << (x) << " " << #y << " = " << (y) << endl;
#define dbg3(x,y,z) cout << #x << " = " << (x) << " " << #y << " = " << (y) << " " << #z << " = " << (z) << endl;
char str[MAX_N],ans[MAX_N];
int n,m,sum[MAX_N][29],tmp[29];bool check(int xb,int ckStr)
{int cnt = 0;for(int i = 0;i<26;++i) tmp[i] = sum[xb-1][i];tmp[ckStr]++;for(int i = 0;i<26;++i){if((tmp[i]%m)!=0){tmp[i] = m-(tmp[i]%m),cnt+=tmp[i];}else{tmp[i] = 0;}}if(cnt>n-xb) return false;for(int i = 1;i<=n;++i) ans[i] = str[i]; // importantans[xb] = 'a' + ckStr;for(int i = n;i>xb;--i){for(int j = 25;j>=0;--j){if(tmp[j]){ans[i] = 'a' + j;tmp[j]--;goto thisEnd;}}ans[i] = 'a';thisEnd:;}ans[n+1] = '\0';printf("%s\n",ans+1);return true;
}int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);scanf("%s",str+1);if(n%m){printf("-1\n");continue;}for(int i = 1;i<=n;++i){for(int j = 0;j<26;++j){sum[i][j] = sum[i-1][j];}sum[i][str[i]-'a'] = sum[i-1][str[i]-'a'] + 1;}bool flag = true;for(int i = 0;i<26;++i){if((sum[n][i]%m)!=0) flag = false;}if(flag){printf("%s\n",str+1);continue;}for(int i = n;i>=1;--i){for(int j = str[i]-'a' + 1;j<26;++j){if(check(i,j)) goto haveEnd;}}printf("-1\n");haveEnd:;}return 0;
}

D. GCD of an Array
给你 nnn 个数字,mmm 个操作
操作是将第 iii 位乘上 xxx
问你所有的数当前GCD为多少
一开始直接撸了个线段树,但是 gcd(A,B)%MOD != gcd(A%MOD,B%MOD) 就会 WAWAWA
后续是要对质因数进行处理,用一个 multiset 去存储每个质因数存放的下标,如果下标的 sizesizesize 到了 nnn 我们认为是产生贡献 如此我们用一个 mpmpmp 存储每个质因数当前的贡献 例如是几次方 模拟即可 一开始用 setsetset 去维护每次访问到的不同质因子 会 TLETLETLE 用数组减少常数过了

#include<cstdio>
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<cstring>
#include<set>
#include<cmath>
#include<stack>
using namespace std;
const int MAX_N = 200025;
const int MOD = 1000000007;
multiset<int> st[MAX_N];
map<int,int> mp[MAX_N];#define ll long long
#define dbg(x) cout << #x << " = " << (x) << endl;
#define dbg2(x,y) cout << #x << " = " << (x) << " " << #y << " = " << (y) << endl;
#define dbg3(x,y,z) cout << #x << " = " << (x) << " " << #y << " = " << (y) << " " << #z << " = " << (z) << endl;int nxt[MAX_N],n,stTmp[MAX_N],brr[MAX_N];
ll ans;void init()
{nxt[1] = 1;for(int i = 2;i<MAX_N;++i){if(nxt[i]==0){nxt[i] = i;if(i>10000) continue; // 怕爆long longfor(int j = i*i;j<MAX_N;j+=i){if(nxt[j]==0) nxt[j] = i;}}}
}void add(int xb,int x)
{int xbNow = 0;while(nxt[x]!=1){if(!xbNow||stTmp[xbNow]!=nxt[x]){stTmp[++xbNow] = nxt[x];if(mp[xb].find(nxt[x])!=mp[xb].end()) brr[xbNow] = mp[xb][nxt[x]];else brr[xbNow] = 0,mp[xb][nxt[x]] = 0;}mp[xb][nxt[x]]++;x /= nxt[x];}for(int i = 1;i<=xbNow;++i){int minn=1,minnNow=0;if(!brr[i]) st[stTmp[i]].insert(brr[i]);if(st[stTmp[i]].size()==n){minn = *st[stTmp[i]].begin();}st[stTmp[i]].erase(st[stTmp[i]].find(brr[i]));st[stTmp[i]].insert(mp[xb][stTmp[i]]);if(st[stTmp[i]].size()==n){minnNow = *st[stTmp[i]].begin();}for(int j = minn+1;j<=minnNow;++j){ans = ans * stTmp[i] % MOD;}}
}int main()
{init();int m,xb,x;ans = 1;scanf("%d%d",&n,&m);for(int i = 1;i<=n;++i){scanf("%d",&x);add(i,x);}while(m--){scanf("%d%d",&xb,&x);add(xb,x);printf("%lld\n",ans);}return 0;
}

Codeforces Round #705 (Div. 2) A-D相关推荐

  1. Codeforces Round #705 (Div. 2) D. GCD of an Array 质因子分解 + stl维护

    传送门 题意: 给nnn个数,让后qqq个操作,每次选择一个位置的数使其乘xxx,每次询问后输出所有数的gcdgcdgcd. 思路: 这个题思路算是比较好想的.首先就是一个计算方式即计算所有数的gcd ...

  2. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  3. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  4. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  5. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  6. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  7. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  8. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  9. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

最新文章

  1. 在Ubuntu虚拟机中编译运行C程序
  2. 云计算具有什么平台_究竟什么是云计算?
  3. 具有Spring Boot和数据功能的Java头优先弹性搜索
  4. AcWing 116. 飞行员兄弟(二维指数型枚举)
  5. RMAN-06217: 错误
  6. Cassandra Wiki Login JmxSecurity
  7. SQL数据库打包发送与接收
  8. 袋鼠云数智之旅·上海站|探索“十四五”智慧校园新图景
  9. 工时分析怎么分析?分享:实用的工时分析方法及软件工具!
  10. FutureMapping:空间人工智能的计算结构
  11. 论文写作—如何添加图注、公式、表注的序号,自动编号,交叉引用方式
  12. 动态IP和静态IP有什么区别
  13. 电脑使用技巧 快捷键
  14. Lesson 20 One man in a boat 独坐孤舟
  15. 基于Springboot中小餐厅点餐管理系统设计
  16. 大O表示法和时间复杂度
  17. 亲子操打开孩子感官能力
  18. 图书馆管理系统中遇见的问题与问题的解决方法思路
  19. mysql当前读与快照读
  20. 杨振宁100周岁 张朝阳:他证明了中国人是世界上最聪明的人

热门文章

  1. 大数据算法在诸多领域“弄潮”
  2. 怎么做微信小程序商家店铺_分享商家店铺小程序制作
  3. [前端基础] JavaScript 基础篇(下)
  4. Unity Shader Early-Z技术
  5. HCIP网络配置(MGRE+OSPF+优化)
  6. Linux软件包管理-rpm、yum
  7. git commit 命令出现“fatal: unable to auto-detect email address (got '******@.(none)')错误
  8. 多普达 699之不完全新手须知
  9. 计算机视觉-CS231n-Lecture 1
  10. PPT的三种抠图方法-演示