Codeforces Round #461 (Div. 2)

本文提供了CodeForces平台上的四道编程题目(A-D)的详细解答过程,涉及算法包括手速挑战、数学验证、字符串处理及贪心算法,并对一道需要使用动态规划和单调队列优化的题目(E)进行了思路概述。

Div2 都不能A完,手速还是不行

A题:

#include<cstdio>
using namespace std;
int x,y,_x,_y;
int main(void){
    register int i;
    scanf("%d%d",&x,&y);
    if(y==0){
        puts("No");
        return 0;
    }
    _x=0,_y=1;
    _y=y,_x=y-1;
    if(x<_x){
        puts("No");
        return 0;
    }else{
        if(((x-_x)%2)==0)puts("Yes");
        else puts("No");
    }
    return 0;
}

B题:

#include<cstdio>
using namespace std;
int n,y;
long long ans;
int main(void){
    register int i,j;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        for(j=1;j<=n;++j){
            y=i^j;
            if(y>n)continue;
            if(i+j>y&&j+y>i&&i+y>j)++ans;
        }
    printf("%d\n",ans/6);
    return 0;
}

C题:

#include<cstdio>
#include<algorithm>
using namespace std;
unsigned long long n,k,sum=1;
int main(void){
    register int i;
    scanf("%llu%llu",&n,&k);
    for(i=1;i<=k;++i)
        if(n%i!=i-1){
            puts("No");
            return 0;
        }
    puts("Yes");
    return 0;
}

D题:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Y{
    long long x,y;
    inline bool operator<(const Y&a)const{
        return x*a.y>a.x*y;
    }
}a[200005];
int n;
long long ans,sumh,sum;
char s[200005];
int main(void){
    register int i,j,len;
    scanf("%d",&n);
    for(i=1;i<=n;++i){
        scanf("%s",s+1);
        len=strlen(s+1);
        for(j=1;j<=len;++j)
            if(s[j]=='s')a[i].x+=1;
            else a[i].y+=1,++sumh,++sum;
        for(j=1;j<=len;++j)
            if(s[j]=='s'){
                ans+=sumh;
            }else --sumh;
    }
    sort(a+1,a+n+1);
    for(i=1;i<=n;++i)
        sum-=a[i].y,ans+=a[i].x*sum;
    printf("%lld\n",ans);
    return 0;
}

E题:
nc2  dp  

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
inline char tc(void){
    static char fl[10000],*A=fl,*B=fl;
    return A==B&&(B=(A=fl)+fread(fl,1,10000,stdin),A==B)?EOF:*A++;
}
inline ll read(void){
    ll a=0;char c;
    while((c=tc())<'0'||c>'9');
    while(c>='0'&&c<='9')a=a*10+c-'0',c=tc();
    return a;
}
ll n,W,B,X,sum,c[1005],last,cost[1005],l,r,mx,ans,a[10005],b[10005];
ll f[1005][10005];
int main(void){
    ll i,j;
    n=read(),W=read(),B=read(),X=read();
    for(i=1;i<=n;++i)c[i]=read();
    for(i=1;i<=n;++i)cost[i]=read();
    memset(f,0xff,sizeof(f)),f[0][0]=W-X;
    for(i=1;i<=n;++i){
        l=1,r=0,sum+=c[i],last=sum,mx=0;
        for(j=0;j<=sum;++j){
            if(j<=last){
                if(f[i-1][j]!=-1||i-1==0&&j==0){
                    ll x;
                    f[i-1][j],x=min(f[i-1][j]+X,W+j*B)+j*cost[i];//mx=max(mx,f[i-1][j]+X);
                    while(l<=r&&x>=a[r])--r;
                    a[++r]=x,b[r]=j;
                }
            }
            while(l<=r&&b[l]+c[i]<j)++l;
            if(l<=r&&a[l]>=j*cost[i])f[i][j]=a[l]-j*cost[i];
        }
    }
    for(i=1;i<=n;++i)
        for(j=0;j<=sum;++j)
            if(f[i][j]!=-1)
                ans=max(ans,j);
    printf("%lld\n",ans);
    return 0;
}
下载方式:https://pan.quark.cn/s/c9b9b647468b ### 初级JSP程序设计教程核心内容解析#### 一、JSP基础概述JSP(JavaServer Pages)是由Sun Microsystems公司创建的一种动态网页技术规范,主要应用于构建动态网站及Web应用。JSP技术使得开发者能够将动态数据与静态HTML文档整合,从而实现网页内容的灵活性和可变性。##### JSP的显著特性:1. **动态与静态内容的分离**:JSP技术支持将动态数据(例如数据库查询结果、实时时间等)嵌入到静态HTML文档中。这种设计方法增强了网页的适应性和可维护性。2. **易用性**:开发者可以利用常规的HTML编辑工具来编写静态部分,并通过简化的标签技术将动态内容集成到页面中。3. **跨平台兼容性**:基于Java平台的JSP具有优良的跨操作系统运行能力,能够在多种不同的系统环境中稳定工作。4. **强大的后台支持**:JSP能够通过JavaBean组件访问后端数据库及其他资源,以实现复杂的数据处理逻辑。5. **执行效率高**:JSP页面在初次被请求时会被转换为Servlet,随后的请求可以直接执行编译后的Servlet代码,从而提升了服务响应的效率。#### 二、JSP指令的运用JSP指令用于设定整个JSP页面的行为规范。这些指令通常放置在页面的顶部,向JSP容器提供处理页面的相关指导信息。##### 主要的指令类型:1. **Page指令**: - **语法结构**:`<%@ page attribute="value" %>` - **功能**:定义整个JSP页面的运行特性,如设定页面编码格式、错误处理机制等。 - **实例**: ...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值