首页 > 其他分享 >2024.4.12

2024.4.12

时间:2024-04-12 21:48:57浏览次数:11  
标签:itn oo 12 2024.4 nxt int return out

2024.4.12 【“相遇总是猝不及防、爱意总是野蛮生长”】

Sunday 三月初四


<theme = oi-"search">

P1092 NOIP2004 提高组 虫食算

//2024.4.12
//by white_ice
#include<bits/stdc++.h>
using namespace std;
#define itn int
const int oo = 30;

char s1[oo],s2[oo],s3[oo];
itn st1[oo],st2[oo],st3[oo];
int n;

itn nxt[oo],cnt;
bool used[oo];
int out[oo];

void check(){
    int p = 0;
    for (itn i=n-1;i>=0;i--){
        int a = out[st1[i]];
        int b = out[st2[i]];
        int c = out[st3[i]];
        if ((a+b+p)%n!=c)
            return ;
        p = (a+b+p)/n;
    }
    for (itn i=0;i<n;i++)
        cout << out[i] << ' ';
    exit(0);
}

void dfs(itn x){
     if (out[st1[0]]+out[st2[0]]>=n)
         return ;
     for (int i=n-1;i>=0;i--){
         int a = out[st1[i]];
         int b = out[st2[i]];
         itn c = out[st3[i]];
         if (a==-1||b==-1||c==-1)
             continue;
         if ((a+b)%n!=c&&(a+b+1)%n!=c)
             return ;
     }

     if (x==n){
         check();
         return ;
     }

     for (int i=n-1;i>=0;i--){
        if (!used[i]){
            out[nxt[x]] = i;
            used[i] = 1;
            dfs(x+1);
            used[i] = 0;
            out[nxt[x]] = -1;
        }
     }
     return ;
}

void get(itn x){
    if (!used[x])used[x] = 1,nxt[cnt++] = x;
    return ;
}

int main(){
    cin >>n;
    scanf("%s%s%s",s1,s2,s3);

    for (itn i=0;i<n;i++){
        st1[i] = s1[i]-'A';
        st2[i] = s2[i]-'A';
        st3[i] = s3[i]-'A';
        out[i] = -1;
    }

    for (int i=n-1;i>=0;i--)
        get(st1[i]),get(st2[i]),get(st3[i]);
    
    for (itn i=0;i<n;i++)
        used[i] = 0;

    dfs(0);

    return 0;
}   

P5691 NOI2001 方程的解数

//2024.4.12
//by white_ice
#include<bits/stdc++.h>
using namespace std;
#define itn int
const int oo = 150;

int n,m;
itn p[10],k[10];

int a[4000006],b[4000006];

int bjwd(int a,int b,int t=1){for(;b;b>>=1,a=a*a)if(b&1)t=t*a;return t;}
//qpow

void dfs(itn l,itn r,int sum,itn *arr,int &cnt){
    if (l>r){
        arr[++cnt] = sum;
        return ;
    }
    
    for (itn i=1;i<=m;i++)
        dfs(l+1,r,sum+k[l]*bjwd(i,p[l]),arr,cnt);
}

itn cnta,cntb;
int ans;

int main(){
    cin >> n >> m ;
    for (itn i=1;i<=n;i++)
        cin >>k[i] >> p[i];

    int mid = (1+n)>>1;

    dfs(1,mid,0,a,cnta);
    dfs(mid+1,n,0,b,cntb);

    sort(a+1,a+1+cnta);
    sort(b+1,b+1+cntb);

    int l = 1,r = cntb;

    for (;l<=cnta&&r>=1;l++){
        while (a[l]+b[r]>0)
            r--;
        itn x = 1,y = 0;
        for (itn j=r;a[l]+b[j]==0&&j>0;j--)
            y++;
        while (l<cnta&&a[l]==a[l+1])
            x++,l++;

        ans+=x*y;
    }

    cout << ans;

    return 0;
}

P3956 NOIP2017 普及组 棋盘

//2024.4.12
//by white_ice
#include<bits/stdc++.h>
using namespace std;
#define itn int 
const int inf = 0x3f3f3f3f;
const int oo = 102;
const int dx[] = {0,1,0,-1,1,1,-1,-1,0,2,0,-2};
const int dy[] = {1,0,-1,0,1,-1,1,-1,2,0,-2,0};
const int dw[] = {0,0,0,0,2,2,2,2,2,2,2,2};

struct nod{itn x,y,c,w;bool operator<(nod b)const{return w>b.w;}};

itn st[oo][oo];
itn x,y,a;

int m,n;

itn f[oo][oo];

priority_queue<nod>q;
void bfs(){
    memset(f,0x3f,sizeof(f));

    f[1][1] = 0;
    q.push((nod){1,1,st[1][1],f[1][1]});
    nod top,nxt;

    while (!q.empty()){
        top = q.top();
        q.pop();

        if (f[top.x][top.y]<top.w)
            continue;
        for (itn i=0;i<12;i++){
            nxt.x = top.x+dx[i];
            nxt.y = top.y+dy[i];
            nxt.w = top.w+dw[i];
            if (nxt.x<=0||nxt.x>m||nxt.y<=0||nxt.y>m)
                continue;
            nxt.c = st[nxt.x][nxt.y];

            if (!nxt.c)
                continue;
            if (top.c!=nxt.c)
                nxt.w ++;
            if (f[nxt.x][nxt.y]>nxt.w){
                f[nxt.x][nxt.y]=nxt.w;
                q.push(nxt);
            }
        }
    }
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);

    cin >> m >> n;
    for (itn i=1;i<=n;i++){
        cin >> x >> y >> a;
        st[x][y] = a+1;
    }

    bfs();
    
    if (!st[m][m]){
        int ans = min(f[m][m-1],f[m-1][m])+2;
        if (ans>=inf)
            puts("-1");
        else cout << ans ;
    }
    else{
        if (f[m][m]==inf)
            puts("-1");
        else cout << f[m][m];
    }

    return 0;
}

标签:itn,oo,12,2024.4,nxt,int,return,out
From: https://www.cnblogs.com/white-ice/p/18132165

相关文章

  • 4.12
    whk又考试了,数学癫疯85。出题人是著名的同时也是我们班的数学老师,上次出题有点水,结果这次放了个大直接给我干爆了......
  • 【CSP】202012-4 食材运输 70% 一点思路
    对于K==M的情况,问题重点是:如何统计从某点出发,遍历需要某食材的所有酒店最小权重和。考虑到N规模很小,因此可以直接枚举从每个点出发的权重和,问题就转化为如何求从某点出发,遍历某食材的权重和。由于图为一棵树,所有该权重和是唯一的。有两个限制条件:如何知道某食材的全部酒店已经经......
  • 2024.4.10华为暑期实习笔试题解尝试1~2
    题目在4.10华为暑期实习笔试题解努力开摆的小鱼2024-04-10T1简单难度,按照题意顺着写就可以n=int(input())#表示计费日志的条数lst=[]#去重后的日志ss=set()#为了去重foriinrange(n):s=tuple(input().split(","))t=s[0]+s[1]+s[2]#......
  • AI6126项目2盲脸超分辨率
    2023-S2AI6126项目2盲脸超分辨率项目2规范(版本1.0。最后更新日期:2024年3月22日)重要日期发布时间:2024年3月22日测试集发布时间:2023年4月19日上午12:00到期时间:2023年4月26日下午11:59组策略这是一个单独的项目延迟提交政策逾期提交将受到处罚(每天5%,最多3天)挑战描述图1。盲人面部修......
  • PAN3029与SX1276接收灵敏度的测试对比
       2023年9月磐启微第二代ChirpIoT™系列芯片PAN3029发布至今已有半年了,不少企业都拿到了PAN3029的测试板。但由于缺乏充分的仪器,或测试方法问题无法准确的获得芯片在不同扩频因子下的灵敏度。因此由行业专家甘泉老师操刀测试PAN3029这款芯片性能后并录制成视频,供行业的企业......
  • 解决wpscan运行报错Could not find 'nokogiri' (>= 1.11.4, < 1.13.0) among 125 tota
    报错内容:/usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1404:in`rescueinblockinactivate_dependencies':Couldnotfind'nokogiri'(>=1.11.4,<1.13.0)among125totalgem(s)(Gem::MissingSpecError)Checkedin'GEM_PATH=/roo......
  • 2024/04/12 多校集训总结
    总结知识点线段树,平衡树,块状数据结构,字符串,网络流,DP,DP优化,数学。数据结构听懂得比较多,但是\(LCT\)还是没会,知道了扫描线的广泛应用,码力有小小的提升。字符串对于算法讲的很简略,主要就是讲一些题目,所以没学到啥,题目也没咋做。网络流的话,做了很多题,过程中自己......
  • Linux0.12内核源码解读(2)-Bootsect.S
    大家好,我是呼噜噜,在上一篇文章聊聊x86计算机启动发生的事?我们了解了x86计算机启动过程,MBR、0x7c00是什么?其中当bios引导结束后,操作系统接过计算机的控制权后,发生了哪些事?本文将揭开迷雾的序章-Bootsect.S回顾计算机启动过程我们先来回顾一下,上古时期计算机按下电源键的启动过程,......
  • 闲话 4.12——对 Worpitzky 恒等式的几个证明
    \[\sum_{i}\left\langle\begin{matrix}n\\i\end{matrix}\right\rangle\binom{i+k}{n}=k^n\]通俗的证明(具体数学的习题6.15)是使用归纳法。我们也可以对后面几个式子用二项式反演证明,而有如下过程:\[\begin{aligned}z^n&=\sum_{i=0}^n{n\bracei}z^\underlinei\\&=\sum_{i=0}......
  • Java基础学习 | 2024年4月12日
    修饰符1.受保护的访问修饰符-protected子类与基类在同一包中:被声明为protected的变量、方法和构造器能被同一个包中的任何其他类访问;子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。简单来讲,被p......