考试结束rua!开始写题解。

这场打完后明显感觉到自己水平下降了很多,考试结束后该回回手了。

赛中过了A~D,F,E题题目读错了干想了一个多小时。。。。。给整麻了

A. Plus One on the Subset(贪心)

这题就是找最大-最小即可

#include <bits/stdc++.h>
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
using namespace std;
ll a[Ma];int main()
{ll tt;scanf("%lld",&tt);while (tt--){ll n;scanf("%lld",&n);for (ll i=1;i<=n;i++)scanf("%lld",&a[i]);ll ma=a[1],mi=a[1];for (ll i=1;i<=n;i++)ma=max(ma,a[i]),mi=min(mi,a[i]);printf("%lld\n",ma-mi);}return 0;
}

B. Make AP(摸你)

由于a,b,c成等差数列,只需定二改一即可

#include <bits/stdc++.h>
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
using namespace std;
ll a[Ma];bool sol(ll p,ll ans)
{if (ans%p==0&&ans>0)return 1;return 0;
}int main()
{ll tt;scanf("%lld",&tt);while (tt--){ll a,b,c;cin>>a>>b>>c;ll flag=0;flag=sol(a,b*2-c)|sol(b*2,a+c)|sol(c,b*2-a);if (flag)printf("YES\n");elseprintf("NO\n");}return 0;
}

C. Division by Two and Permutation(链表+贪心)

我们可以发现对于每一个数字,都有肯定的数字变换,由于x->x/2,我们便从后往前判断即可

#include <bits/stdc++.h>
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
using namespace std;
ll a[Ma];
ll f[60];
ll n;void add(ll x)
{while (x>n)x/=2;f[x]++;return;
}int main()
{ll tt;scanf("%lld",&tt);while (tt--){memset(f,0,sizeof(f));scanf("%lld",&n);for (ll i=1;i<=n;i++)scanf("%lld",&a[i]),add(a[i]);ll flag=1;for (ll i=n;i>=1;i--){if (!f[i])flag=0;f[i/2]+=f[i]-1;f[i]=1;}if (flag)printf("YES\n");elseprintf("NO\n");}return 0;
}

D. Palindromes Coloring(贪心)

我们可以发现回文串可以出现abcba,abba两种情况,而对于每一个串最多只能有1个单点,其他以成对形式出现,而字符串染色与原字符位置无关,只与个数有关,因此统计成对个数与单个个数贪心求最大即可。

#include <bits/stdc++.h>
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
using namespace std;
ll a[Ma];
ll f[26];int main()
{ll tt;scanf("%lld",&tt);while (tt--){memset(f,0,sizeof(f));ll n,k;scanf("%lld%lld",&n,&k);string s;cin>>s;for (ll i=0;i<s.size();i++)f[s[i]-'a']++;ll sum=0,add=0;for (ll i=0;i<26;i++)sum+=f[i]/2,add+=f[i]%2;ll ans=sum/k*2;add+=(sum%k)*2;if (add>=k)printf("%lld\n",ans+1);elseprintf("%lld\n",ans);}return 0;
}

E. Masha-forgetful(dp)【补】

读题时读傻逼去了,也不知道当时在读什么,现在也忘了当时是怎么想的了。

题目原意是用n个字符串的任意长度不小于2的子串组成给定的字符,可以发现对于任意子串,我们可以把它分解成长度为2,3的子串,因此用dp表示状态即可(注意记录pre)

#include <bits/stdc++.h>
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
using namespace std;
ll dp[Ma];
string s[Ma];
ll n,m;
string t;struct node
{ll x,y,z;
}q2[10][10],q3[10][10][10],pre[Ma];void sol(ll x)
{if (x==0)return;sol(x-(pre[x].y-pre[x].x+1));printf("%lld %lld %lld\n",pre[x].x,pre[x].y,pre[x].z);return;
}int main()
{ll tt;scanf("%lld",&tt);while (tt--){scanf("%lld%lld",&n,&m);for (ll i=0;i<=m;i++)dp[i]=0,pre[i]={0,0,0};for (ll i=0;i<n;i++)cin>>s[i];cin>>t;for (ll i=0;i<10;i++)for (ll j=0;j<10;j++){q2[i][j]={0,0,0};for (ll k=0;k<10;k++)q3[i][j][k]={0,0,0};}for (ll i=0;i<n;i++)for (ll j=0;j<m;j++){if (j+2<=m)q2[s[i][j]-'0'][s[i][j+1]-'0']={j+1,j+2,i+1};if (j+3<=m)q3[s[i][j]-'0'][s[i][j+1]-'0'][s[i][j+2]-'0']={j+1,j+3,i+1};}dp[0]=1;for (ll i=1;i<=m;i++){if (i>=2&&dp[i-2]&&q2[t[i-2]-'0'][t[i-1]-'0'].z)dp[i]=dp[i-2]+1,pre[i]=q2[t[i-2]-'0'][t[i-1]-'0'];if (i>=3&&dp[i-3]&&q3[t[i-3]-'0'][t[i-2]-'0'][t[i-1]-'0'].z)dp[i]=dp[i-3]+1,pre[i]=q3[t[i-3]-'0'][t[i-2]-'0'][t[i-1]-'0'];}if (!dp[m])printf("-1\n");else{printf("%lld\n",dp[m]-1);sol(m);}}return 0;
}

F. Interacdive Problem(二分+思维)

这道题肥肠有意思,题目中问的是x,但我们要比较的应该是n-n%x,因此二分即可

当然对于n-n%x==0的情况实际上这种情况并不存在,这点需要我们证明(这也是这题的难点)

我们可以把x映射在1-n-1上,因此x%n!=0

#include <bits/stdc++.h>
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
using namespace std;
ll n;
ll l,r;ll ask(ll x)
{cout<<"+ "<<x<<endl;ll ans;cin>>ans;return ans;
}int main()
{cin>>n;l=1,r=n-1;while (l<=r){ll mid=(l+r)>>1;if (ask(n-mid%n)==l/n)r=mid-1;elsel=mid+1;l+=n-mid%n,r+=n-mid%n;}cout<<"! "<<r<<endl;return 0;
}

G. MinOr Tree(类二分+位运算)【补】

这道题也是赛中就有思路了,可是赖在E上出不来了(doge _^_ )

首先对于每一点求的是or运算

我们可以发现 (1<<i) > (1<<i)-1,对于这点就可以进行位运算

因此我们只需判断对于每个i是否必要即可

#include <bits/stdc++.h>
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define Ma 1000005
#define mod 1000000007
using namespace std;
ll f[Ma],ne[Ma],tot=0;
ll n,m;
ll v[Ma];struct node
{ll b,e,w;
}t[Ma];void add(ll x)
{ne[++tot]=f[x];f[x]=tot;return;
}void dfs(ll x,ll ans)
{v[x]=1;for (ll i=f[x];i;i=ne[i]){if ((t[i].w&ans)!=t[i].w)continue;if (!v[t[i].e])dfs(t[i].e,ans);}return;
}bool ask(ll x)
{for (ll i=1;i<=n;i++)v[i]=0;dfs(1,x);for (ll i=1;i<=n;i++)if (!v[i])return 0;return 1;
}void sol()
{ll ans=0;for (ll i=31;i>=0;i--)if (!ask(ans+(1ll<<i)-1))ans+=(1ll<<i);printf("%lld\n",ans);return;
}int main()
{ll tt;scanf("%lld",&tt);while (tt--){for (ll i=0;i<=tot;i++)f[i]=ne[i]=0;tot=0;scanf("%lld%lld",&n,&m);for (ll i=1;i<=m;i++){scanf("%lld%lld%lld",&t[i*2].b,&t[i*2].e,&t[i*2].w);t[i*2-1].e=t[i*2].b,t[i*2-1].b=t[i*2].e,t[i*2-1].w=t[i*2].w;add(t[i*2-1].b);add(t[i*2].b);}sol();}return 0;
}

Codeforces Round #764 (Div. 3)(A~G)相关推荐

  1. Codeforces Round #827 (Div. 4)(A~G)(F已更新)

    "爷爷,你关注的up主要更新拉!" 今天起开始CF/At不定期更新 A. Sum(暴力) 只需判断a,b,c是否为和关系即可 #include <bits/stdc++.h& ...

  2. Codeforces Round #808 (Div. 1)(A~C)

    Codeforces Round #808 (Div. 1)(A~C) A:Doremy's IQ 题目大意 给你一个序列,然后你从左到右可以选择弄或者不弄. 然后你有一个智商值,如果你当前弄的数小于 ...

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

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

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

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

  5. Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...

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

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

  7. Codeforces Round #739 (Div. 3)(AK实况)

    Codeforces Round #739 (Div. 3) A. Dislike of Threes 找到第kkk个既不是333的倍数,个位数上也不是333的数,也已预处理然后O(1)O(1)O(1 ...

  8. Codeforces Round #703 (Div. 2)(A ~ F)超高质量题解【每日亿题2 / 19】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A. Shifting Stacks B - Eastern Exhibition C1 - G ...

  9. Codeforces Round #784 (Div. 4)(A~F)

    更好的阅读体验 \color{red}{更好的阅读体验} 更好的阅读体验 文章目录 A. Division? B. Triple C. Odd/Even Increments D. Colorful ...

最新文章

  1. python不能加密吗_为什么我不能解密我用pycrypto加密的内容?
  2. LTE-TDD与LTE-FDD技术比较
  3. 对Linux内核中进程上下文和中断上下文的理解
  4. hdu2110(普通母函数)
  5. 如何安装gnuplot
  6. 阿里云centos7安装和卸载图形化操作界面
  7. 《转》 在C++中使用TinyXML2解析xml
  8. Linux 命令(86)—— head 命令
  9. 2018码云GVP最有价值开源项目-PDMan-2.1.3 发布—免费的国产数据库建模工具(使用)
  10. Linux 安装JDK详细步骤
  11. emacs命令/edwin参考
  12. python输出边长为n的正方形_将一个正方形分成N个较小的正方形并求N个较小正方形的中心坐标...
  13. 关于在终端使用pip命令命令
  14. HTTP-XMLHttpRequest
  15. 02 【版本控制命令】
  16. 计算机结构体系:循环展开题型 (非凭感觉的方法详解)
  17. WordCounter for mac(字数统计器)
  18. Word2Vec原文翻译
  19. 如何压缩mp3文件大小,5分钟学会4种方法
  20. Python算法练习(五)// 算法:KMeans,数据集:标准普尔500指数

热门文章

  1. c语言基础题(笔记二)
  2. python人脸识别代码_Python不用10行代码就可实现人脸识别,还可辨别真假,太棒了!...
  3. 项目实战:Qt+Android模拟操作器(模拟操作app,打开,点击,输入,获取验证码等等)
  4. 基于深度学习的自动识别夹取机械臂
  5. 量子计算 12 量子计算机到底是啥?
  6. 如何查看suse系统服务器sn,suse 配置 - sncder的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 计算机网络的安全性在哪里,计算机网络面临的安全性威胁可分为哪两类分别包含..._安全工程师_帮考网...
  8. 仿QQ浏览器mac版官网主页 html css3特效
  9. 使用css绘制弹幕,实现弹幕效果的方法总结(css和canvas)
  10. 2873-36-1,Gancidin W,CYCLO(L-LEU-L-PRO),cyclo-L-Leu-L-Pro,环(L-脯氨酰-L-亮氨酰)