头像

少华从文




离线:9小时前


最近来访(10)
用户头像
子琦
用户头像
Sergey
用户头像
有机物
用户头像
whatyouwant
用户头像
trp-geniuskv5
用户头像
l_y_f
用户头像
AᴄWing
用户头像
dp_5

活动打卡代码 AcWing 843. n-皇后问题

这是第一种 每一个位置判断的
#include<iostream>
using namespace std;
const int N=10;
int n;
bool row[N],col[N],dg[N*2],udg[N*2];
char g[N][N];

void dfs(int x,int y,int s)
{
    if(s>n)return;
    if(y==n)y=0,x++;

    if(x==n)
    {
        if(s==n)
        {
            for(int i=0;i<n;i++)puts(g[i]);
            puts("");
        }
        return ;
    }
    g[x][y]='.';
    dfs(x,y+1,s);
    if(!row[x]&&!col[y]&&!dg[x+y]&&!udg[x-y+n])
    {
        row[x]=col[y]=dg[x+y]=udg[x-y+n]=true;
        g[x][y]='Q';
        dfs(x,y+1,s+1);
        g[x][y]='.';
        row[x]=col[y]=dg[x+y]=udg[x-y+n]=false;
    }
}    

int main()
{
    cin>>n;
    dfs(0,0,0);
    return 0;
}

这是第二种 省略行的
#include<iostream>
using namespace std;
const int N=20;
bool col[N],dg[N],udg[N];
int n;
char ans[N][N];

void dfs(int u)
{
    if(u==n)
    {
        for(int i=0;i<n;i++)
        {
            printf("%s\n",ans[i]);
        }
        puts("");
        return ;
    }
    for(int i=0;i<n;i++)
        if(!col[i]&&!dg[u+i]&&!udg[n+u-i])
        {
        ans[u][i]='Q';
        col[i]=dg[u+i]=udg[n+u-i]=true;
        dfs(u+1);
        col[i]=dg[u+i]=udg[n+u-i]=false;
        ans[u][i]='.';
        }
    }




int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
     for(int j=0;j<n;j++)
      ans[i][j]='.';
    dfs(0);
    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 842. 排列数字

#include<iostream>
using namespace std;
int n;
int path[10010];
bool st[10010];

void dfs(int k)
{
    if(k==n){for(int i=0;i<n;i++)printf("%d ",path[i]);puts("");}
    else {
        for(int i=1;i<=n;i++)if(!st[i])
        {
            path[k]=i;
            st[i]=true;
            dfs(k+1);
            st[i]=false;
        }
    }
}


int main()
{
    scanf("%d",&n);
    dfs(0);
    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



AcWing《蓝桥杯C++ AB组辅导课》拼团优惠!https://www.acwing.com/activity/content/introduction/19/group_buy/118998/



新鲜事 原文

AcWing《蓝桥杯C++ AB组辅导课》拼团优惠!https://www.acwing.com/activity/content/introduction/19/group_buy/118998/



觉得自己的方法太烦 而且TLE。。。只能现场学一下 小技巧题目
#include<iostream>
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
const int N=1010,M=55,INF=1e8;
int n,m,k;
PII tree[N];
int b[M][M];
int main()
{
    scanf("%d%d%d",&n,&m,&k);
    for(int i=0;i<n;i++)
    scanf("%d%d",&tree[i].x,&tree[i].y);
    int tc=0;
    for(int i=k;i>=0;i--)
     for(int j=0;j<=k;j++)
     {
         scanf("%d",&b[i][j]);
         tc+=b[i][j];
     }
     int res=0;
     for(int i=0;i<n;i++)
     {
         int sx=tree[i].x,sy=tree[i].y;
         if(sx+k>m||sy+k>m)continue;
         int cnt=0;
         for(int j=0;j<n;j++)
         {
             int x=tree[j].x,y=tree[j].y;
             if(x>=sx&&x-sx<=k&&y>=sy&&y-sy<=k)
             {
                 if(!b[x-sx][y-sy])cnt=-INF;
                 else cnt ++;
             }
         }
         if(cnt==tc)res++;
     }
    printf("%d\n",res);
    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4455. 出行计划

学yxc的
第一次写忘了差分 TLE了 现在才能理解擦粉的用处
#include<iostream>
using namespace std;
const int N=200010;
int n,m,k;
int b[N];
int main()
{
    scanf("%d%d%d",&n,&m,&k);
    while (n -- ){
        int t,c;
        scanf("%d%d",&t,&c);
        int l=t-k-c+1,r=t-k;
        if(r>0)b[max(1,l)]++,b[r+1]--;
    }
    for(int i=1;i<N;i++)b[i]+=b[i-1];
    while(m--)
    {
        int t;
        scanf("%d",&t);
        printf("%d\n",b[t]);
    }



    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4700. 何以包邮?

学了一遍yxc的
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 33, M = 300010;

int n, x;
int w[N], f[M];

int main()
{
    scanf("%d%d", &n, &x);

    int sum = 0;
    for (int i = 0; i < n; i ++ )
    {
        scanf("%d", &w[i]);
        sum += w[i];
    }

    int m = sum - x;
    for (int i = 0; i < n; i ++ )
        for (int j = m; j >= w[i]; j -- )
            f[j] = max(f[j], f[j - w[i]] + w[i]);

    printf("%d\n", sum - f[m]);
    return 0;
}

//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4699. 如此编码

按部就班
#include<iostream>
using namespace std;
const int N=30;
typedef long long LL;
LL a[N],c[N];
LL n,m;
LL mc[N];
int main()
{
    scanf("%lld%lld",&n,&m);
    for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
    c[0]=1;
    for(int i=1;i<=n;i++)c[i]=c[i-1]*a[i];
    mc[0]=0;
    for(int i=1;i<=n;i++)mc[i]=m%c[i];
    for(int i=n;i>0;i--)mc[i]-=mc[i-1];
    for(int i=1;i<=n;i++)printf("%lld ",mc[i]/c[i-1]);
    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


新鲜事 原文

随缘 AcWing【集日历瓜分10000AC币活动】求10月日历!https://www.acwing.com/file_system/gui/taskbar/widgets/clock/calendar/receive/245928/10/


活动打卡代码 AcWing 4509. 归一化处理

水题 慢慢写注意细节就ok
#include<iostream>
#include<cmath>
using namespace std;
const int N=100010;
int k,a[N];
int main()
{
    scanf("%d",&k);
    int sum=0;
    double pp=0;
    for(int i=1;i<=k;i++)scanf("%d",&a[i]),sum+=a[i];
    //printf("%d",sum);
    double ava=1.0*sum/k;
   // printf("%lf",ava);
    for(int i=1;i<=k;i++)pp+=(a[i]-ava)*(a[i]-ava);
    double fangcha =pp/k;
    for(int i=1;i<=k;i++)printf("%lf\n",(a[i]-ava)/sqrt(fangcha));



    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~