codeforce 505

2024-03-02 08:48
文章标签 codeforce 505

本文主要是介绍codeforce 505,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • c-Plasticine zebra
  • D-Recovering BST

c-Plasticine zebra

题目链接:http://codeforces.com/contest/1025/problem/C
只要反应过来了这个其实求的是这个串组成的环的最长的间隔最大值就好做了
直接延长一倍处理环,然后dp[i]表示处理到i这点最长的间隔值的最大是多少就行了

#include"bits/stdc++.h"
using namespace std;
typedef long long LL;
const int maxn=2e5+5;
const int MOD=1e9+7;
char s[maxn]; 
int dp[maxn];
int main()
{while(cin>>s){memset(dp,0,sizeof dp);int len=strlen(s);for(int i=0;i<len;i++)s[i+len]=s[i];int n=len<<1;int Max=-1;dp[0]=1;for(int i=1;i<n;i++){if(s[i]!=s[i-1])dp[i]=dp[i-1]+1;else dp[i]=1;Max=max(Max,dp[i]);}cout<<min(Max,len)<<endl;}
}

D-Recovering BST

题目链接:http://codeforces.com/contest/1025/problem/D
哇~竟然是个区间dp,这怎么想到的T_T

dp[i][j]表示在区间[i,j]内的数能不能组成题目要求的二叉树
长的区间由短的区间递推过来,两重循环枚举区间,再一次循环枚举断点,很经典的三重循环的区间dp,但是怎么转移的喃?

就是假如一个点是根节点,如果他左儿子连的点和右儿子连的点就阔以组成一个合法的区间~
感觉还是不是理解得很好,先记下来再说

#include"bits/stdc++.h"
using namespace std;
typedef long long LL;
const int maxn=700+5;
const int MOD=1e9+7;
const int inf=1e9;
int a[maxn];
bool G[maxn][maxn];
//L[i][k]表示以k为根节点,向左走能不能连到第i个点
//R[k][j]表示以k为根节点,向右走能不能连到第j个点 
bool L[maxn][maxn],R[maxn][maxn],dp[maxn][maxn];//dp[i][j]表示[i,j]区间内的数阔以满足条件 
int main()
{int N;cin>>N;for(int i=1;i<=N;i++)cin>>a[i],L[i][i]=R[i][i]=1;for(int i=1;i<=N;i++)//先打个表出来,因为后面会经常看某两个点阔步阔以连 {for(int j=1;j<=N;j++){if(i==j)continue;if(__gcd(a[i],a[j])==1)continue;G[i][j]=1;}}for(int len=0;len<N;len++){for(int i=1;i+len<=N;i++){int j=i+len;for(int k=i;k<=j;k++){if(L[i][k]&&R[k][j]){dp[i][j]=1;if(G[i-1][k])R[i-1][j]=1;//向左扩展 if(G[k][j+1])L[i][j+1]=1;//向右扩展 }}}}if(dp[1][N])cout<<"Yes"<<endl;else cout<<"No"<<endl;
}

这篇关于codeforce 505的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/765552

相关文章

codeforce 9C(Hexadecimal's Numbers)

来   看谁的代码短 C. Hexadecimal's Numbers time limit per test 1 second memory limit per test 64 megabytes input standard input output standard output One beautiful July morning

codeforce 7C 拓展欧几里得 详解

比如说  ax+by=gcd(a,b) 假设  excgcd(int a,int  b,int&x,int&y)是求解这个方程的函数 其返回值是gcd(a,b)(ps: a和b的最大公因子) 假设我们已经求得了b*x1+(a%b)*y1=gcd(a,b); x1 ,y1即为其解 又有  a%b=a-(a/b)*b; 带入得 a*y1+b*(x1-(a/b))=gcd(a,b); 而

Codeforce 963

CF 963 B 模拟加贪心 偶数个数C 模拟+前缀和 灯能否全亮D 二分+DP 中位数尽可能大F1 模拟+镜像 题目链接 B 模拟加贪心 偶数个数 考点:贪心 思路:除了全是偶数的情况,其他的情况都需要将偶数转换为奇数。最少的操作步数是偶数个数,如果有一步操作执行之前最小的偶数都比最大的奇数大,则操作步数要加1,即最后结果是偶数个数+1. 代码1: t = int(

Codeforce 214 Div 2 B.Hometask

题目描述: Description Furik loves math lessons very much, so he doesn't attend them, unlike Rubik. But now Furik wants to get a good mark for math. For that Ms. Ivanova, his math teacher, gave him a

codeforce

http://codeforces.com/problemset/submit 学号  杭电密码

CodeForce #429 DIV2 A B C题解

A:http://codeforces.com/contest/841/problem/A 题意:n个气球分给k个人,是否有这样的解:每个人手里的气球都颜色不重复 思路:个数最多的颜色个球的个数 >k, 就必然有人手里两个球 #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>usin

CodeForce[1500-2000]——1950E Nearly Shortest Repeating Substring

codeforces刷题日记 题目大意:给你一个长度为n的字符串s,要寻找一个长度最小的字符串k,能够让字符串k进行1或多次的拼接,让拼接成的字符串和字符串s长度相等,且至多一个字母不一样。求k的最小长度。 思路:从1到n遍历k的长度i,如果i整除,就跳过,这时s被分成了n/i段,取出第一段和最后一段。如果这两段相等,那其他段必定和这两段一样(不一样的值字母允许存在一个),才符合条件。要是

AI音乐,8大变现方式——Suno:音乐版的ChatGPT - 第505篇

悟纤之歌 这是利用AI为自己制作的一首歌,如果你也感兴趣,可以花点时间阅读下本篇文章。 ​ 导读 随着新一代AI音乐创作工具Suno V3、Stable audio2.0、天工SkyMusic的发布,大家玩自创音乐歌曲,玩的不亦乐乎。而有创业头脑的朋友,更是看到了用AI音乐赚钱的机会,已经开始利用AI音乐赚钱了。别小瞧这种"小生意",有人已经日入800+了。即使你是小白,也

codeforce round 735div2 -32

属于是打完多校脑子不转了,这题明明这简单的 掉大分,还好今天还一场 A 题意 选择一个连续子区间,让最大*最小值最大。 A 思路 显然是区间长为2时最大,扫一下就可以了。 想想也知道,我们选择两个时,拓展也是向两边拓展,如果有更小的,显然不拓展为好,如果有介于最大最小之间的,那么答案不会更优,假如有大于最大的,拓展后的答案也不会优于选择那个更大的数的长为二区间。 A 代码 #incl

扩展欧几里得,逆元初识(poj 1061+codeforce 7C line+hdu 1576 A/B)

poj 1061 青蛙的约会: #include <iostream>#include<cstdio>#define LL long longusing namespace std;LL gcd(LL a, LL b){return b?gcd(b,a%b):a;}void extend_Euclid(LL a,LL b,LL &x,LL &y){if(b ==