目录

A

第一个遇到连续两个荆棘的地方就不能再赢金币了。

所以统计连续两个荆棘之前的所有金币

  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define rep(i,a,b) for(int i = (a); i <= (b); ++i)
  4. #define fep(i,a,b) for(int i = (a); i >= (b); --i)
  5. #define pii pair<int, int>
  6. #define ll long long
  7. #define db double
  8. #define endl '\n'
  9. #define x first
  10. #define y second
  11. #define pb push_back
  12. using namespace std;
  13. void solve() {
  14. int n;
  15. cin>>n;
  16. string str;
  17. cin>>str;
  18. int pos=n;
  19. rep(i,0,n-2){
  20. if(str[i]=='*'&&str[i+1]=='*'){
  21. pos=i;
  22. break;
  23. }
  24. }
  25. int ans=0;
  26. if(pos!=n){
  27. rep(i,0,pos-1){
  28. if(str[i]=='@'){
  29. ans++;
  30. }
  31. }
  32. }else{
  33. rep(i,0,n-1){
  34. if(str[i]=='@'){
  35. ans++;
  36. }
  37. }
  38. }
  39. cout<<ans<<endl;
  40. }
  41. signed main() {
  42. ios::sync_with_stdio(false);
  43. cin.tie(0);
  44. cout.tie(0);
  45. // freopen("1.in", "r", stdin);
  46. int _;
  47. cin>>_;
  48. while(_--)
  49. solve();
  50. return 0;
  51. }

B

最后需要满足\(a[i]>a[i-1]\)

\(a[i]\)只能增加自身的倍数

只需要计算\(a[i]\)最终会变为自己的多少倍会严格大于\(a[i-1]\),当\(a[i-1]\)是\(a[i]\)的倍数的时候,必须再\(+1\)才能保证严格大于。

  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define rep(i,a,b) for(int i = (a); i <= (b); ++i)
  4. #define fep(i,a,b) for(int i = (a); i >= (b); --i)
  5. #define pii pair<int, int>
  6. #define ll long long
  7. #define db double
  8. #define endl '\n'
  9. #define x first
  10. #define y second
  11. #define pb push_back
  12. using namespace std;
  13. void solve() {
  14. int n;
  15. cin>>n;
  16. vector<int>a(n+1);
  17. rep(i,1,n){
  18. cin>>a[i];
  19. }
  20. rep(i,1,n){
  21. if(a[i]<=a[i-1]){
  22. int cnt=a[i-1]/a[i]+1;
  23. a[i]*=cnt;
  24. }
  25. }
  26. cout<<a[n]<<endl;
  27. }
  28. signed main() {
  29. ios::sync_with_stdio(false);
  30. cin.tie(0);
  31. cout.tie(0);
  32. // freopen("1.in", "r", stdin);
  33. int _;
  34. cin>>_;
  35. while(_--)
  36. solve();
  37. return 0;
  38. }

C

正着算会溢出

考虑倒着算,也就是先算最后一个留下的,然后边乘边模

  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define rep(i,a,b) for(int i = (a); i <= (b); ++i)
  4. #define fep(i,a,b) for(int i = (a); i >= (b); --i)
  5. #define pii pair<int, int>
  6. #define ll long long
  7. #define db double
  8. #define endl '\n'
  9. #define x first
  10. #define y second
  11. #define pb push_back
  12. using namespace std;
  13. void solve() {
  14. int n,m;
  15. cin>>n>>m;
  16. struct node{
  17. int val,pos;
  18. bool operator<(const node&t)const{
  19. return pos>t.pos;
  20. }
  21. };
  22. vector<node>a(n+1);
  23. rep(i,1,n){
  24. cin>>a[i].val;
  25. }
  26. string str;
  27. cin>>str;
  28. int cnt=1;
  29. int l=1,r=n;
  30. rep(i,0,str.size()-1){
  31. if(str[i]=='L'){
  32. a[l].pos=cnt++;
  33. l++;
  34. }else{
  35. a[r].pos=cnt++;
  36. r--;
  37. }
  38. }
  39. sort(a.begin()+1,a.end());
  40. // rep(i,1,n){
  41. // cout<<a[i].val<<' '<<a[i].pos<<endl;
  42. // }
  43. vector<int>ans;
  44. int mul=1;
  45. rep(i,1,n){
  46. int k=a[i].val*mul%m;
  47. ans.pb(k);
  48. mul=k;
  49. }
  50. fep(i,ans.size()-1,0){
  51. cout<<ans[i]<<' ';
  52. }
  53. cout<<endl;
  54. }
  55. signed main() {
  56. ios::sync_with_stdio(false);
  57. cin.tie(0);
  58. cout.tie(0);
  59. // freopen("1.in", "r", stdin);
  60. int _;
  61. cin>>_;
  62. while(_--)
  63. solve();
  64. return 0;
  65. }

D

模拟题.

同花色的两两配对,是奇数的话,再用一张王去配对

判断有没有解是通过奇数牌的张数和王的张数判断。

  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define rep(i,a,b) for(int i = (a); i <= (b); ++i)
  4. #define fep(i,a,b) for(int i = (a); i >= (b); --i)
  5. #define pii pair<int, int>
  6. #define ll long long
  7. #define db double
  8. #define endl '\n'
  9. #define x first
  10. #define y second
  11. #define pb push_back
  12. using namespace std;
  13. void solve() {
  14. int n;
  15. cin>>n;
  16. //0:C,1:D,2:H,3:S
  17. set<int>s[4];
  18. char c;
  19. cin>>c;
  20. map<char,int>mp;
  21. mp['C']=0;
  22. mp['D']=1;
  23. mp['H']=2;
  24. mp['S']=3;
  25. map<int,char>pm;
  26. pm[0]='C';
  27. pm[1]='D';
  28. pm[2]='H';
  29. pm[3]='S';
  30. rep(i,1,2*n){
  31. string str;
  32. cin>>str;
  33. char k=str[1];
  34. int num=str[0]-'0';
  35. if(k=='C'){
  36. s[0].insert(num);
  37. }else if(k=='D'){
  38. s[1].insert(num);
  39. }else if(k=='H'){
  40. s[2].insert(num);
  41. }else{
  42. s[3].insert(num);
  43. }
  44. }
  45. int kk=0;
  46. rep(i,0,3){
  47. if(mp[c]==i){
  48. continue;
  49. }
  50. kk+=s[i].size()%2;
  51. }
  52. if(kk>s[mp[c]].size()){
  53. cout<<"IMPOSSIBLE"<<endl;
  54. return;
  55. }
  56. rep(i,0,3){
  57. if(mp[c]==i){
  58. continue;
  59. }
  60. int ji=s[i].size()%2;
  61. if(ji==1){
  62. cout<<*s[i].begin()<<pm[i];
  63. s[i].erase(s[i].begin());
  64. cout<<' ';
  65. cout<<*s[mp[c]].begin()<<pm[mp[c]];
  66. s[mp[c]].erase(s[mp[c]].begin());
  67. cout<<endl;
  68. while(s[i].size()>=2){
  69. cout<<*s[i].begin()<<pm[i];
  70. s[i].erase(s[i].begin());
  71. cout<<' ';
  72. cout<<*s[i].begin()<<pm[i];
  73. s[i].erase(s[i].begin());
  74. cout<<endl;
  75. }
  76. }else{
  77. while(s[i].size()>=2){
  78. cout<<*s[i].begin()<<pm[i];
  79. s[i].erase(s[i].begin());
  80. cout<<' ';
  81. cout<<*s[i].begin()<<pm[i];
  82. s[i].erase(s[i].begin());
  83. cout<<endl;
  84. }
  85. }
  86. }
  87. while(s[mp[c]].size()>=2){
  88. cout<<*s[mp[c]].begin()<<pm[mp[c]]<<' ';
  89. s[mp[c]].erase(s[mp[c]].begin());
  90. cout<<*s[mp[c]].begin()<<pm[mp[c]]<<' ';
  91. s[mp[c]].erase(s[mp[c]].begin());
  92. cout<<endl;
  93. }
  94. }
  95. signed main() {
  96. ios::sync_with_stdio(false);
  97. cin.tie(0);
  98. cout.tie(0);
  99. // freopen("1.in", "r", stdin);
  100. int _;
  101. cin>>_;
  102. while(_--)
  103. solve();
  104. return 0;
  105. }

E

数学题。

考虑每一位对答案的贡献

\(12345\)

个位会对答案贡献\(12345\)

十位会对答案贡献\(1234\)

百位会对答案贡献\(123\)

千位会对答案贡献\(12\)

万位会对答案贡献\(1\)

然后会发现规律,将上面列竖式相加

每一位的结果就是当前位的数和前面所有数的和,然后倒着处理一下进位。

  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define rep(i,a,b) for(int i = (a); i <= (b); ++i)
  4. #define fep(i,a,b) for(int i = (a); i >= (b); --i)
  5. #define pii pair<int, int>
  6. #define ll long long
  7. #define db double
  8. #define endl '\n'
  9. #define x first
  10. #define y second
  11. #define pb push_back
  12. using namespace std;
  13. void solve() {
  14. int n;
  15. cin>>n;
  16. string str;
  17. cin>>str;
  18. vector<int>s(n+1,0);
  19. rep(i,1,n){
  20. s[i]=s[i-1]+str[i-1]-'0';
  21. }
  22. fep(i,n,1){
  23. s[i-1]+=s[i]/10;
  24. s[i]%=10;
  25. }
  26. bool flag=false;
  27. rep(i,0,n){
  28. if(s[i]||flag){
  29. cout<<s[i];
  30. flag=true;
  31. }
  32. }
  33. cout<<endl;
  34. }
  35. signed main() {
  36. ios::sync_with_stdio(false);
  37. cin.tie(0);
  38. // freopen("1.in", "r", stdin);
  39. cout.tie(0);
  40. int _;
  41. cin>>_;
  42. while(_--)
  43. solve();
  44. return 0;
  45. }

F

\(dp[i][0|1]\):表示在第i个点不喂或喂猫,合法的能为猫的最大值

转移

\(nxt[i]\):在i处喂猫的话能喂猫的最有边的位置

\(cf[i]\):在i处喂猫,所能喂猫的所有数量

\(f[i][0]=max(f[i-1][0],f[i-1][1]);\)

\(f[i][1]=max(f[nxt[i]-1][1],f[nxt[i]-1][0])+cf[i];\)

\(cf[i]\)可以用差分处理一下

\(nxt[i]\)可以倒序枚举用\(nxt[i-1]\)去更新\(nxt[i]\)

  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define rep(i,a,b) for(int i = (a); i <= (b); ++i)
  4. #define fep(i,a,b) for(int i = (a); i >= (b); --i)
  5. #define pii pair<int, int>
  6. #define ll long long
  7. #define db double
  8. #define endl '\n'
  9. #define x first
  10. #define y second
  11. #define pb push_back
  12. using namespace std;
  13. void solve() {
  14. int n,m;
  15. cin>>n>>m;
  16. vector<int>nxt(n+2),cf(n+2);
  17. rep(i,1,n){
  18. nxt[i]=i;
  19. }
  20. rep(i,1,m){
  21. int l,r;
  22. cin>>l>>r;
  23. cf[l]++;
  24. cf[r+1]--;
  25. nxt[r]=min(nxt[r],l);
  26. }
  27. //处理在每个点喂能为多少猫
  28. rep(i,1,n){
  29. cf[i]+=cf[i-1];
  30. }
  31. //处理转移的位置
  32. fep(i,n-1,1){
  33. nxt[i]=min(nxt[i],nxt[i+1]);
  34. }
  35. //dp
  36. vector<vector<int>>f(n+1,vector<int>(2));
  37. rep(i,1,n){
  38. f[i][0]=max(f[i-1][0],f[i-1][1]);
  39. f[i][1]=max(f[nxt[i]-1][1],f[nxt[i]-1][0])+cf[i];
  40. }
  41. cout<<max({f[n][0],f[n][1]})<<endl;
  42. }
  43. signed main() {
  44. ios::sync_with_stdio(false);
  45. cin.tie(0);
  46. cout.tie(0);
  47. // freopen("1.in", "r", stdin);
  48. int _;
  49. cin>>_;
  50. while(_--)
  51. solve();
  52. return 0;
  53. }

Codeforces Round 927 (Div. 3)(A~F)的更多相关文章

  1. Codeforces Round #316 (Div. 2) (ABC题)

    A - Elections 题意: 每一场城市选举的结果,第一关键字是票数(降序),第二关键字是序号(升序),第一位获得胜利. 最后的选举结果,第一关键字是获胜城市数(降序),第二关键字是序号(升序) ...

  2. Codeforces Round #240 (Div. 2)(A -- D)

    点我看题目 A. Mashmokh and Lights time limit per test:1 secondmemory limit per test:256 megabytesinput:st ...

  3. Codeforces Round #395 (Div. 2)(未完)

    2.2.2017 9:35~11:35 A - Taymyr is calling you 直接模拟 #include <iostream> #include <cstdio> ...

  4. Codeforces Round #324 (Div. 2) (哥德巴赫猜想)

    题目:http://codeforces.com/problemset/problem/584/D 思路: 关于偶数的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和. 关于奇数的哥德巴赫猜想:任一 ...

  5. B. Nirvana Codeforces Round #549 (Div. 2) (递归dfs)

    ---恢复内容开始--- Kurt reaches nirvana when he finds the product of all the digits of some positive integ ...

  6. 【Codeforces】Codeforces Round #491 (Div. 2) (Contest 991)

    题目 传送门:QWQ A:A - If at first you don't succeed... 分析: 按照题意模拟 代码: #include <bits/stdc++.h> usin ...

  7. 【Codeforces】Codeforces Round #492 (Div. 2) (Contest 996)

    题目 传送门:QWQ A:A - Hit the Lottery 分析: 大水题 模拟 代码: #include <bits/stdc++.h> using namespace std; ...

  8. Codeforces Round #671 (Div. 2) (A~E)

    Link~ 题面差评,整场都在读题 A 根据奇偶性判断一下即可. #include<bits/stdc++.h> #define ll long long #define N #defin ...

  9. Codeforces Round #524 (Div. 2)(前三题题解)

    这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...

  10. Codeforces Round #624 (Div. 3)(题解)

    Codeforces Round #624 (Div.3) 题目地址:https://codeforces.ml/contest/1311 B题:WeirdSort 题意:给出含有n个元素的数组a,和 ...

随机推荐

  1. PGO前瞻

    原文在这里. 原文发布于2023年2月8日 在构建Go二进制文件时,Go编译器会进行优化,以尽可能生成性能最佳的二进制文件.例如,常量传播可以在编译时对常量表达式进行求值,避免了运行时的计算开销:逃逸 ...

  2. C++ Boost 实现异步端口扫描器

    端口扫描是一种用于识别目标系统上哪些网络端口处于开放.关闭或监听状态的网络活动.在计算机网络中,端口是一个虚拟的通信端点,用于在计算机之间传输数据.每个端口都关联着特定类型的网络服务或应用程序.端口扫 ...

  3. Vue3用户代码片段

    1.defineComponent语法 { "Print to console": { "prefix": "vue3", "bo ...

  4. css 修改复选框的样式

    效果图: 实现代码如下: /* 选中input标签类型为复选框的 */ input[type="checkbox"] { width: 16px; height: 16px; ve ...

  5. 【STL源码剖析】list模拟实现 | 适配器实现反向迭代器【超详细的底层算法解释】

    今天博主继续带来STL源码剖析专栏的第三篇博客了! 今天带来list的模拟实现!话不多说,直接进入我们今天的内容! 前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://bl ...

  6. TF-VAEGAN:添加潜在嵌入(Latent Embedding)的VAEGAN处理零样本学习

    前面介绍了将VAE+GAN解决零样本学习的方法:f-VAEGAN-D2,这里继续讨论引入生成模型处理零样本学习(Zero-shot Learning, ZSL)问题.论文"Latent Em ...

  7. spring boot jar混淆加密

    最近在做一个智能床垫的机构版项目,客户要求部署到客户那边要做代码混淆防止代码被反编译. 一:在需要加密的jar的pom.xml文件添加依赖 <!-- 设置 jitpack.io 仓库 --> ...

  8. 机器学习基础03DAY

    特征降维 降维 PCA(Principal component analysis),主成分分析.特点是保存数据集中对方差影响最大的那些特征,PCA极其容易受到数据中特征范围影响,所以在运用PCA前一定 ...

  9. NC16696 [NOIP2001]统计单词个数

    题目链接 题目 题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份( 1 < k ≤ 40 ...

  10. flask+xlswriter+axios导出Excel

    flask后端 starttime = request.json.get('starttime') endtime = request.json.get('endtime') # 根据时间查询数据库数 ...