首页 > 其他分享 >iwtgm-21

iwtgm-21

时间:2023-11-13 19:44:55浏览次数:35  
标签:21 int px py iwtgm 水平线 街道 mp

题目链接

A.

首先每个木板最多增加2个高度
设木板a,b,c,若a与b高度相同,那么我们让b高度+1,假设b现在又与c高度相同,那么我们让b的高度再+1
b只有两个相邻木板,所以b不用再改变了
所以当前木板可以有3个选择:不变,高度+1,高度+2
并要保证与前一块木板高度不同,那么我们枚举的时候把这个限制加上

ll a[N],b[N];
ll dp[N][3];
void solve() {
    int n;cin>>n;
    for(int i=0;i<=n;i++){
        if(i==0){
            dp[i][0]=dp[i][1]=dp[i][2]=inf;
            continue;
        }
        cin>>a[i]>>b[i];
        dp[i][0]=dp[i][1]=dp[i][2]=inf;
    }
    dp[0][0]=0;
    for(int i=1;i<=n;i++){
        for(int j=0;j<3;j++){
            for(int k=0;k<3;k++){
                if(a[i-1]+k!=a[i]+j){
                    dp[i][j]=min(dp[i][j],dp[i-1][k]+b[i]*j);
                }
            }
        }
    }
    ll ans=inf;
    for(int i=0;i<3;i++)ans=min(ans,dp[n][i]);
    cout<<ans<<endl;
}

B.

奇偶性相同的数不能交换位置,也就是说奇偶性相同的数的相对位置不变,其他交换无限制
那么我们把奇数和偶数分别放在两个队列里,把较小的数放进答案里即可

queue<char>ji,ou;
void solve() {
    while(ji.size())ji.pop();
    while(ou.size())ou.pop();
    string s;cin>>s;
    for(int i=0;i<s.size();i++){
        if((s[i]-'0')&1)ji.push(s[i]);
        else ou.push(s[i]);
    }
    while(ji.size()&&ou.size()){
        if(ji.front()<ou.front()){
            cout<<ji.front();ji.pop();
        }else if(ji.front()>ou.front()){
            cout<<ou.front();ou.pop();
        }
    }
    while(ji.size()){
        cout<<ji.front();ji.pop();
    }
    while(ou.size()){
        cout<<ou.front();ou.pop();
    }
    cout<<endl;
}

C.

因为点都在街道上,且街道贯穿整个图
若一个点是十字路口,那么任一点到这点都可以是曼哈顿距离
任一点在水平街道上,那么十字路口的垂直街道一定通过这条水平街道;在垂直街道上同理
若一点在水平街道上,一点在垂直街道上,那么它们也可以是曼哈顿距离,理由同上
现在考虑两点都在水平(垂直)街道上
在同一条水平(垂直)街道上一定是曼哈顿距离
考虑不在同一条街道上的

如这张图上的3、4两点,若有一条水平街道在3的高度-4的高度之间,那么它们就可以是曼哈顿距离,没有,则不是
但判两点,过于暴力
去找有贡献的点的共性(找区间,找范围)
转化:
如图的第3个点,比y坐标大的第一条水平线记为l,那么高度处于y坐标与l之间的且同为竖直线上的这些点都与第3点形成贡献

代码有注释:

vector<int>vx,vy;
void solve() {
    int n,m,k;cin>>n>>m>>k;
    for(int i=1,x;i<=n;i++){
        cin>>x;
        vx.push_back(x);//垂直线
    }
    for(int i=1,x;i<=m;i++){
        cin>>x;
        vy.push_back(x);//水平线
    }
    map<int,int>mpx,mpy;
    map<pair<int,int>,int>mp_xy,mp_yx;
    ll ans=0;
    while(k--){
        int x,y;cin>>x>>y;
        int px= lower_bound(vx.begin(),vx.end(),x)-vx.begin();//在哪一条垂直线上
        int py= lower_bound(vy.begin(),vy.end(),y)-vy.begin();//在哪一条水平线上
        if(vx[px]==x&&vy[py]==y)continue;//若该点水平线垂直线都有,也就是十字路口,那么它与任意一点都可以是曼哈顿距离,对答案无贡献,跳过
        if(vx[px]==x){//有垂直线,那么必定无水平线,找到的是比y坐标大的第一条水平线,记为l,mpy[]代表所有无水平线的并且处于y坐标与l之间的点的数量,这些点对答案都有贡献
            ans=ans+mpy[py]-mp_xy[{px,py}];//mp_xy[]表示无水平线且下标为px的垂直线的集合
            mpy[py]++;mp_xy[{px,py}]++;//更新
        }
        else{//同理
            ans=ans+mpx[px]-mp_yx[{py,px}];
            mpx[px]++;mp_yx[{py,px}]++;
        }
    }
    cout<<ans<<endl;
    vx.clear();vy.clear();
}

标签:21,int,px,py,iwtgm,水平线,街道,mp
From: https://www.cnblogs.com/wwww-/p/17828134.html

相关文章

  • 数据库设计心得——软件2105最抽象的一组
    一、前言我们小组的项目是医学图像去噪系统,项目工作的重点在于去噪模型的训练,有关数据库的结构不是很复杂。需要数据库完成的工作主要就是用户账户信息的存储和图像信息的存储以及实体之间关系的处理。二、具体实现在数据库的具体实现上,主要围绕两点来搭建框架。第一点是医生的......
  • SP2139题解
    思路这题数据范围小,暴力就可以了。首先我们用map来统计每个人的下标,用\(bk_{i,j}\)表示第\(i\)个人第\(j\)题是否知道答案。对于每次合作交流,暴力修改就可以了,先统计出两个人的下标,假设一个为\(x\),另一个为\(y\)。然后,如果\(bk_{x,i}\)和\(bk_{y,i}\)中(\(1\lei......
  • P7831 [CCO2021] Travelling Merchant CWOI1113B
    首先将边反向,再按\(r\)从大到小排序,这样可以使得答案的转移没有后效性。令\(ans_i\)表示\(i\)这个点最少有多少资产方能无限地走下去。(初值为\(inf\))依次枚举每一条边。(令\(u\)为这条边的起点,\(v\)为这条边的终点)首先对现在的图进行一遍topo,转移方程为\(ans_v=m......
  • 2023.10.21 CSP-S 复赛游记
    2023.10.21CSP-S复赛游记咕了一段时间。Day-2上午下午正常打模拟赛、改题,晚上开始复习板子。主要是确实忘了很多东西。Day-1上午的模拟赛没参加,打了一天板子。图论还是我的一大弱点。被Tarjan薄纱下午写了个计划,把已经复习的和没有复习的都写出来了,发现要复习的板子......
  • CF121E Lucky Array
    sqrttechnology,sqrtfaith.洛谷CF定义一个数为幸运数字,当且仅当其十进制数位中仅有\(4\)和\(7\)组成。给出长度为\(n\)的序列\(p_1\simp_n\),有\(q\)次操作,分为两种类型:\(\texttt{add}l\texttt{}r\texttt{}x\),将\(p_l\simp_r\)加上\(x\)。\(\te......
  • 防干扰/抗噪LCD液晶段码显示驱动芯片VK2C21A/AA SSOP28 适用于适用于单相电表,工业电表
     I²C 接口LCD 控制及驱动IC型号:VK2C21A:RAM 映射 20*4,16*8封装(SOP-28)LCD液晶显示驱动VK2C21B:RAM 映射 16*4,12*8封装(SOP-24)LCD液晶显示驱动VK2C21C:RAM 映射 12*4,8*8封装(SOP-20) LCD液晶显示驱动VK2C21D:RAM 映射 8*4,4*8封装(NSOP-16) LCD液晶显......
  • 213-springboot项目,maven结构,打war包的pom配置
    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"&......
  • 2023-2024-1 20232421 《网络空间安全导论》第10周学习总结
    教材学习总结国内外网络安全的现状网络空间安全的内容网络空间安全受到重视的原因课程涵盖内容思维导图教材学习中的问题和解决过程问题1:混淆信息安全与网络空间安全的概念,并执着于将其区分开。问题1解决办法:研读教材:教材中由信息安全引出网络空间安全,援引信息论的论述......
  • iwtgm-20
    题目链接dp确实没想到这种递推方式,一直绕在把整个网格分成k块,又要满足颜色不同,实在解不出来dp的设置状态不是没想过,像这样的设置的确超出我的水平了现在详细讲讲只有两行,若两行的颜色块状态已知,我们是可以判断什么情况联通块会+1,什么情况是不变的,我们进行枚举即可f[i][j][ty......
  • iwtgm-19
    题目链接A.把两个数合并成一个数,数的总和并没有变要对应相等,那么两个数组所有数的总和一定相等,所以在最坏情况下两个数组都合并为1个数时一定满足条件求最少合并次数的话,因为要对应下标对应相等,那么当前一定要通过合并一些数让当前对应下标相等,因为合并后面的对当前没有影响......