【长期计划】Atcoder题目泛做

之前学长跟我说的是700-的应该都能自己做? 然后1000-的应该都能有一定的思路?

记不清了 但总之是要智力康复一下 又加上文化课比较紧 所以这个大概就会是长期计划了

————————————分鸽线————————————

今天体育中考晚上没事颓了3道题。

AGC024【至于为什么是24呢因为今天是24号233】

三道巨水的题我竟然A题WA了三发BC都1A...

A
B
C

————————————分鸽线————————————

竟然没让我们继续上课。本来以为体育中考和周六的课直接对调了的。

AGC025

A太水了不写了

B直接组合没有任何技术含量。。睿智的我RE了好几发。

//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
#define mdn 998244353
#define N 900010 
using namespace std;

int a,b,n; ll k;
int fac[N],inv[N];
int ksm(int bs,int mi)
{
    int ans=1;
    while(mi)
    {
        if(mi&1)
            ans=(ll)ans*bs%mdn;
        bs=(ll)bs*bs%mdn; mi>>=1;
    }
    return ans;
}
int C(int n,int m)
{
    if(n<m)    return 0;
    return (ll)fac[n]*inv[m]%mdn*inv[n-m]%mdn;
}
void upd(int &x,int y){x=(x+y)%mdn;} 
int main()
{
    int ans=0;
    scanf("%d%d%d%lld",&n,&a,&b,&k);
    fac[0]=inv[0]=1;
    for(int i=1;i<=n;i++)    fac[i]=(ll)fac[i-1]*i%mdn;
    inv[n]=ksm(fac[n],mdn-2);// printf("%d\n",inv[n]);
    for(int i=n-1;i;i--)    inv[i]=(ll)inv[i+1]*(i+1)%mdn;
    for(int i=0;i<=n&&(ll)i*a<=k;i++)
    {
        if((k-a*i)%b==0)
        {
            ll bi=(k-a*i)/b;
            upd(ans,(ll)C(n,i)*C(n,bi)%mdn);
        }
    }
    printf("%d\n",ans);
    return 0;
}
/**
300000 300000 300000 0
*/
B

C题就贪个心然后写起来巨烦不写了QAQ

滚去学文化了嘤嘤嘤

 额。。晚上打了个ABC125怎么这么简单啊。。。AK了怎么才258名好菜啊。。。

还是把代码丢下吧。。。

//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
using namespace std;

int main()
{
    int a,b,t;
    scanf("%d%d%d",&a,&b,&t);
    printf("%d\n",(t/a)*b);
    return 0;
}
A
//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
using namespace std;
int c[21],v[21];
int main()
{
    int st,top,n;
    scanf("%d",&n); top=1<<n;
    for(int i=0;i<n;i++)    scanf("%d",&v[i]);
    for(int i=0;i<n;i++)    scanf("%d",&c[i]);
    int ans=0;
    for(int st=1;st<top;st++)
    {
        int tmpv=0,tmpc=0;
        for(int i=0;i<n;i++)    if((st>>i)&1)
            tmpv+=v[i],tmpc+=c[i];
        ans=max(ans,tmpv-tmpc);
    }
    printf("%d\n",ans);
    
    return 0;
}
B
//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<map>
#define ll long long
#define inf 20021225
#define N 100010
using namespace std;

int a[N]; int n; int pre[N],suf[N];
int gcd(int x,int y){return !y?x:gcd(y,x%y);}
void solve()
{
    for(int i=1;i<=n;i++)
    {
        if(i==1)    pre[i]=a[i];
        else    pre[i]=gcd(pre[i-1],a[i]);
    }
    
    for(int i=n;i;i--)
    {
        if(i==n)    suf[i]=a[i];
        else    suf[i]=gcd(suf[i+1],a[i]);
    }
    int ans=1;
    for(int i=1;i<=n;i++)
    {
        if(i==1)    ans=max(ans,suf[2]);
        else if(i==n)    ans=max(ans,pre[n-1]);
        else    ans=max(ans,gcd(pre[i-1],suf[i+1]));
    }
    printf("%d\n",ans);
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    solve();
    return 0;
}
C
//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
#define N 100010 
using namespace std;
ll f[N][2]; ll a[N]; int n;
void solve()
{
    memset(f,-48,sizeof(f)); f[0][0]=f[0][1]=0;
    for(int i=1;i<=n;i++)
    {
        if(i==1)    f[i][0]=a[i];
        else
        {
            f[i][0]=max(f[i-1][0],f[i-1][1])+a[i];// printf("QAQ %d %lld\n",i,a[i]);
            f[i][1]=max(f[i-1][0]-2*a[i-1],f[i-1][1]+2*a[i-1])-a[i];
        }
    }
    printf("%lld\n",max(f[n][0],f[n][1]));
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%lld",&a[i]);
    solve(); 
    return 0;
}
D

 ————————————分鸽线————————————

AGC026

B是个特判 就是看一下(kd+a)%b>c是否存在就行了

C是个典型的meet in the middle 模数要设的大一点不然会冲突 我直接unsigned long long了 不卡好评

//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
using namespace std;
ll a,b,c,d;
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
bool okay(ll a,ll b,ll c,ll d)
{
    ll g=gcd(d,b); ll x=(b-a)/g*g;
    if((x+a)%b>c)    return 0;
    x=(b-a-1)/g*g;
    if((x+a)%b>c)    return 0;
    return 1; 
}
int main()
{
    int t; scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
        if(a<b || b>d){printf("No\n"); continue;}    a%=b;
        if(okay(a,b,c,d))    printf("Yes\n");
        else    printf("No\n");
    }
    return 0;
}
B
//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<map>
#define ll long long
#define inf 20021225
#define bs 331
#define ull unsigned long long
using namespace std;
map<ull,int> f[20]; char ch[40]; int col[20],n; ll ans;
ull pw[20];
void calc(int fl)
{
    ull x=0,y=0;
    int p=0,q=n;
    for (int i=1;i<=n;i++)
        if(col[i]>0) x+=(ull)col[i]*pw[p],p++;
        else y+=(ull)col[i]*pw[q],q--;
    if(fl)    ans+=f[p][x+y];
    else    f[q][x+y]++;
}
void dfs1(int x)
{
    if(x>n){calc(0); return;}
    col[x]=ch[x]-'a'+1; dfs1(x+1); col[x]=-col[x]; dfs1(x+1);
}
void dfs2(int x)
{
    if(x<=n){calc(1); return;}
    col[2*n-x+1]=ch[x]-'a'+1; dfs2(x-1); col[2*n-x+1]=-col[2*n-x+1]; dfs2(x-1);
}
int main()
{
    scanf("%d",&n); scanf("%s",ch+1); pw[0]=1; for(int i=1;i<=n;i++) pw[i]=pw[i-1]*bs;
    dfs1(1); dfs2(2*n); printf("%lld\n",ans);
    return 0;
}
C

 ————————————分鸽线————————————

AGC034

A特判 B在整 感冒真不舒服

//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
using namespace std;
char ch[200001]; int a,b,c,d,n;
int main()
{
    scanf("%d%d%d%d%d",&n,&a,&b,&c,&d);
    int f=(d<c); scanf("%s",ch+1);
    for(int i=b-1;i<=d-1;i++)
    {
        if(i+2>n)    continue;
        if(ch[i]=='.'&&ch[i+1]=='.'&&ch[i+2]=='.')
            f=0;
    }
    for(int i=a;i<=max(c,d)-1;i++)
        if(ch[i]=='#'&&ch[i+1]=='#'){f=1;break;}
    if(f==1)    printf("No\n");
    else    printf("Yes\n");
    return 0;
}
A

 

转载于:https://www.cnblogs.com/hanyuweining/p/10764581.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值