Codeforces Round #313 (Div. 2)

网友投稿 268 2022-12-02

Codeforces Round #313 (Div. 2)

比赛链接​​click here~~​​

A 题:

【思路】:如果输入有1就是-1,否则就是1。

B题:给你三个矩形大小,问后两个能否放入第一个矩形内,枚举每一种情况,存在合法的就是YES,否则就是NO。

代码:

// C#ifndef _GLIBCXX_NO_ASSERT#include #endif#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // C++#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define rep(i,j,k) for(int i=(int)j;i<(int)k;++i)#define per(i,j,k) for(int i=(int)j;i>(int)k;--i)#define lowbit(a) a&-a#define Max(a,b) a>b?a:b#define Min(a,b) a>b?b:a#define mem(a,b) memset(a,b,sizeof(a))typedef long long LL;typedef unsigned long long LLU;typedef double db;const int N=1e5+100;const int inf=0x3f3f3f3f;int n,m,t,ans,res,cnt,tmp;char str[N];bool vis[N];int mat[1005][1005];///状态之前int dir4[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};int dir8[8][2]= {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};int movv[5][2]= {{1,0},{0,1},{0,0},{-1,0},{0,-1}};inline LL read(){ int c=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { c=c*10+ch-'0'; ch=getchar(); } return c*f;}int a1,b1;int a2,b2;int a3,b3;bool get(int x,int y){ if(x<=a1&&y<=b1||y<=a1&&x<=b1) return 1; return 0;}int main(){ while(cin>>a1>>b1) { cin>>a2>>b2; cin>>a3>>b3; bool f1=get(a2+a3,max(b2,b3)); bool f2=get(b2+b3,max(a2,a3)); bool f3=get(a2+b3,max(b2,a3)); bool f4=get(a3+b2,max(a2,b3)); if(f1||f2||f3||f4) puts("YES"); else puts("NO"); } return 0;}/*Sample test(s)input3 21 32 1outputYESinput5 53 33 3outputNOinput4 22 31 2outputYES100 1641 7624 15NO*/

C题:

给出一个每个内角都是120度的六边形,问这个六边形中可以放多少 个边长为1的等边三角形

【思路】:数学题,可以把题目中的这个六边形分割成两个等腰梯形和中间一个平行四边形,这样就可以分别算出每个图形中所含的三角形数,最后相加就行了。

代码:

// C#ifndef _GLIBCXX_NO_ASSERT#include #endif#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L#include #include #include #include #include #include #include #include #include #endif// C++#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endifusing namespace std;#define rep(i,j,k) for(int i=(int)j;i<(int)k;++i)#define per(i,j,k) for(int i=(int)j;i>(int)k;--i)#define lowbit(a) a&-a#define Max(a,b) a>b?a:b#define Min(a,b) a>b?b:a#define mem(a,b) memset(a,b,sizeof(a))typedef long long LL;typedef unsigned long long LLU;typedef double db;const int N=1e5+100;const int inf=0x3f3f3f3f;int n,m,t,ans,res,cnt,tmp;char str[N];bool vis[N];int dir4[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};int dir8[8][2]= {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};int movv[5][2]= {{1,0},{0,1},{0,0},{-1,0},{0,-1}};inline LL read(){ int c=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { c=c*10+ch-'0'; ch=getchar(); } return c*f;}int uu[100];int calc1(int a,int h){ return (2*a*h+h*h);}int calc2(int a,int h){ return 2*a*h;}int main(){ for(int i=0; i<6; ++i) { cin>>uu[i]; } int h1=uu[1]+uu[2]; int h2=min(uu[1],uu[5]); int h3=min(uu[2],uu[4]); cout<

D题:求满足条件的字符串,两个长度一样的字符串,分别分割成相同的两部分,如果两部分满足条件,则该字符串相等,判断是否相等

【思路】如果len&1 ,则直接判断,否则,搜索两个字符串剩下的部分

代码:

//// B. Equivalent Strings#ifndef _GLIBCXX_NO_ASSERT#include #endif#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // C++#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define rep(i,j,k) for(int i=(int)j;i<(int)k;++i)#define per(i,j,k) for(int i=(int)j;i>(int)k;--i)#define lowbit(a) a&-a#define Max(a,b) a>b?a:b#define Min(a,b) a>b?b:a#define mem(a,b) memset(a,b,sizeof(a))typedef long long LL;typedef unsigned long long LLU;typedef double db;const int N=2*1e5+100;const int inf=0x3f3f3f3f;int n,m,t,ans,res,cnt,tmp;int hh[28];char str1[N],str2[N];bool vis[N];int mat[1005][1005];int dir4[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};int dir8[8][2]= {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};int movv[5][2]= {{1,0},{0,1},{0,0},{-1,0},{0,-1}};inline LL read(){ int c=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { c=c*10+ch-'0'; ch=getchar(); } return c*f;}int a1,b1;int a2,b2;int a3,b3;bool dfs(char *s,char *t,int len){ if(len&1) return strncmp(s,t,len)==0; mem(hh,0); for(int i=0; i

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java BufferedOutputStream类的常用方法讲解
下一篇:在一组数字中是否有n个数,使得这n个数的和等于一给定的定值m
相关文章

 发表评论

暂时没有评论,来抢沙发吧~