首页 > 其他分享 >5.13 模拟赛题解(没写完)

5.13 模拟赛题解(没写完)

时间:2024-05-13 18:20:04浏览次数:11  
标签:ch int 题解 5.13 read ans 没写 include getchar

T1 P4304 [TJOI2013] 攻击装置

快进到 HZOI2023 超越 HZOI2020 (人均场切了紫)

考虑将棋盘黑白染色成这个样子

image

容易发现相同颜色的点直接一定没有冲突,满足二分图的性质,需要求出最小点覆盖,所以直接按冲突建好双向边,从 \(1\) 到 \(n^2\) 节点跑最大匹配即可。

设求出的最大匹配为 \(ans\),因为是每个点都跑了一遍,所以真正的最大匹配为 \(\frac{ans}{2}\),也是最小点覆盖,设所有合法点数为 \(num\),最终的答案就是 \(num-\frac{ans}{2}\)。

其实这题正解应该是网络流,二分图理论复杂度不对,但是这是古早省选题,数据比较水,且卡不满,所以就放过了二分图。(是道水紫,只是数据太弱)

#include<bits/stdc++.h>
inline int read(){
    int x=0,f=1;char ch=getchar();
    for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
    for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
    return x;
}
const int N=205;
int a[N][N],id[N][N],cnt,vis[N*N*2],head[N*N*2],maxn,match[N*N*2],n,ans;
int x[9]={0,-1,-2,+1,+2,-1,-2,+1,+2},y[9]={0,-2,-1,-2,-1,+2,+1,+2,+1};
struct EDGE{int v,next;}e[(N*N)<<5];
inline void add(int u,int v){e[++cnt]={v,head[u]},head[u]=cnt;}
inline bool dfs(int x,int round){
    for(int i=head[x];i;i=e[i].next){
        int y=e[i].v;
        if(vis[y]==round)continue;
        vis[y]=round;
        if(match[y]==0||dfs(match[y],round)){
            match[y]=x;return true;
        }
    }
    return false;
}
int main(){
    // freopen("attack.in","r",stdin);freopen("attack.out","w",stdout);
    std::ios::sync_with_stdio(0);std::cin.tie(0),std::cout.tie(0);
    n=read();maxn=n*n;
    int _zc=0;
    for(int i=1;i<=n;++i){
        for(int j=1;j<=n;++j){
            char ch=getchar();
            while(ch!='0'&&ch!='1')ch=getchar();
            if(ch=='1')a[i][j]=1;else _zc++;
        	id[i][j]=++cnt;
        }
    }cnt=0;
    for(int i=1;i<=n;++i){
        for(int j=1;j<=n;++j){
            if(!a[i][j]){
                for(int w=1;w<=8;++w){
                    int _x=i+x[w],_y=j+y[w];
                    if(_x>=1&&_x<=n&&_y>=1&&_y<=n&&(!a[_x][_y])){
                        add(id[i][j],id[_x][_y]);
                        add(id[_x][_y],id[i][j]);
                    }
                }
            }
        }
    }
	for(int i=1;i<=maxn;++i){
		if(dfs(i,i))ans++;
	}
	std::cout<<_zc-ans/2<<'\n';
}

T2 循环

有啥深意吗,深意就是剩余系内乘法封闭了,所以循环节数量是 \(O(n)\)。

#include<bits/stdc++.h>
inline int read(){
    int x=0,f=1;char ch=getchar();
    for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
    for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
    return x;
}
std::unordered_map<int,int> t;
int main(){
	freopen("number.in","r",stdin);freopen("number.out","w",stdout);
    int x=read(),last=1;
    while(1){
    	int v=last*x%100;
        if(t[v]){std::cout<<v<<' ';exit(0);}
        else {
            t[v]=1;last=v;
            std::cout<<v<<' ';
        }
    }
}

T3 漫步

没啥深意,都给好顺序了,跑一遍发现如果当前速度比之前所有速度都小于等于,那么就会多一组,本质上是一个单调栈的过程。

#include<bits/stdc++.h>
inline int read(){
    int x=0,f=1;char ch=getchar();
    for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
    for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
    return x;
}
const int N=1e5+10;
int v[N],d[N],n,f1[N],f2[N],f[N];
int main(){
    freopen("jog.in","r",stdin);freopen("jog.out","w",stdout);
    std::ios::sync_with_stdio(0);std::cin.tie(0);std::cout.tie(0);
    n=read();
    for(int i=1;i<=n;++i){d[i]=read(),v[i]=read();}
    int ans=1;f[n]=v[n];
   	for(int i=n-1;i;--i){
        if(v[i]>f[i+1]){
            f[i]=f[i+1];
        }else{
            f[i]=v[i];ans++;
        }
	}
    std::cout<<ans<<'\n';
}

T4 穿越

挺没意思的,晚上写吧。

T5 结队

感觉埃氏筛都没在我脑子里出现过,晚上写。

标签:ch,int,题解,5.13,read,ans,没写,include,getchar
From: https://www.cnblogs.com/Ishar-zdl/p/18189707

相关文章

  • 云原生周刊:Kubernetes Grafana 看板更新 | 2024.5.13
    开源项目推荐ChartTestingChartTesting是用于测试Helm图表的工具。它旨在用于对拉取请求进行lint和测试。它会自动检测针对目标分支更改的图表。ClusterpediaClusterpedia是一个多集群的百科全书,用于同步、搜索和简单控制多集群资源。Clusterpedia可以与多个集群同......
  • HydroOJ 从入门到入土(19)导入题解和标程、题目数据统计(>=4.12.0)
    题解和std可以导入了,导出还会远吗?目录一、导入题解和标程1.目录结构2.测试结果3.第二次测试题目结构如下:测试结果:4.总结:关于题解:关于标程(std):去除.DS_Store的解决方法二、题目数据统计1.范围2.筛选选项3.无关紧要的小bug一、导入题解和标程新版本更新了这个功能,方......
  • THUSC总结PART1-比赛总结/题解
    第一次参加\(THU\)的营,战绩惨不忍睹.D1T1给出\(d\),\(n_1\cdotsn_d\),\(l\),求\[\sum_{i_1=0}^{n_1-1}\sum_{2_1=0}^{n_2-1}\cdots\sum_{i_d=0}^{n_d-1}\max(0,(i_1\oplusi_2\oplus\cdotsi_d)-l)\]其中\(d<=10\),\(n_i<=1e18\),\......
  • 【问题解决】java.lang.NoSuchMethodError错误
    问题现象近期本人负责的一个SpringBoot模块出现了java.lang.NoSuchMethodError报错,问题情况如下:A类提供了setJumpType(Stringtype),B类调用A类的setJumpType(Stringtype)报错java.lang.NoSuchMethodError:com.xxx.A.setJumpType(Ljava/lang/String;)V在之前的发版的程序中,B......
  • abc353f 题解
    大分讨,由于没注意到细节挂大分。下面称大小为\(n\timesn\)的为大格子,\(1\times1\)的为小格子。把\(n\timesn\)个小格子组成的正方形称为一个部分。分析我们先来讨论一般情况。思考一对于\(n\ge3\)的一般情况,如果要求任意两个大格子到对方的距离最小,怎么做?根据贪......
  • 力扣1553 2024.5.13
    原题网址:此处为链接个人难度评价:1700分析:虽然不知道为什么贪心不对,但总之贪心不对。数据如此大也难以DP,那么只有搜索了。显然有一眼可得的搜索记忆化:记忆当只剩下k个果时还需要几天。值得一提的是,本代码实际上可能并不是一个正解代码,其可能无法在整数域上保证所有答案正确,但在......
  • cfRounddiv3--CDEF题解
    C-AssemblyviaRemainders思路:因为xi最大只有500,而构造的ai最大可以到1e9,直接从501开始构造即可。voidsolve(){//C简单构造intn;cin>>n;vector<int>vct;vct.emplace_back(501);for(inti=2;i<=n;i++){intx;cin>>x;vc......
  • Atcoder ABC 353 全题解
    最近看的人好少……都快不想写了……你们的支持就是我创作的最大动力!AB%你CDE题意:有一个一个一个函数,把函数两两配对式求值,求这些值最后的总和C考虑将所有的和减去$10^8$出现的次数。将整个数组排序,然后进行二分,求第一个与这个数的和$\ge10^8$的位置,然后与这个数......
  • abc_353_b题解
    这道题怎么说呢……开始看题目翻译也是一脸懵,然后直接就看了样例解释,然后:瞬间明白!所以:样例解释YYDS!样例解释YYDS!!样例解释YYDS!!!停停停不开玩笑了。仍旧是分步解决问题(诶不是怎么突然联想到了加法原理):输入(每道题几乎都有的东西~~~),不用多说,按照题目要求解决。循环。这一步......
  • abc_353_a题解
    题目传送门~~~CSDN传送门~~~这题纯纯一个数组遍历。如果你看不懂英文的话,那么atcoderbetter这个插件可以帮助你,所有洛谷&atcoder&codeforces的插件都在这里:https://www.luogu.com/article/p2ri0gub咳咳……跑题了跑题了!下面就是题解:输入。这一步很简单,定义变量n和数组H......