首页 > 其他分享 >8.15 考试反思

8.15 考试反思

时间:2024-08-18 17:04:21浏览次数:4  
标签:tmp 一条 int 线段 BFS 反思 push 8.15 考试

8.15 考试反思

T1

P2434 区间

求多个线段的的交。

由题意得,对于任意两条线段来说,关系有三种:

  1. 一条在另一条内部,为重合。
  2. 一条线段和另一条有接触的部分,称为相接。
  3. 一条与另一条完全无接触部分,称为相间。

于是可得:

当我们发现两条线段重合时,舍去较短的一条

如果发现有相接的线段,我们就锁定相接的线段中较靠右的一条,寻找与之相接的线段,一直下循环去

如果发现没有与当前线段相接的线段,就输出目前找到的线段的前端和后端,因为这条线段已经到头了

那么此题也就出来了,排序+贪心。

AC code:

#include<bits/stdc++.h>
#define seq(q,w,e) for(int q=w;q<=e;q++)
using namespace std;
const int maxn=1e5+10;
struct node{
    int b,e;
}a[maxn];
vector<node> v;
bool cmp(node a,node b){
    if(a.b==b.b) return a.e<b.e;
    return a.b<b.b;
}
int n;
signed main(){
    ios::sync_with_stdio(false);cin.tie(0);
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i].b>>a[i].e;
    }
    sort(a,a+n,cmp);
    v.push_back(a[0]);
    for(int i=1;i<n;i++){
        if(v.back().b<=a[i].b&&v.back().e>=a[i].e)
			continue;
        v.push_back(a[i]);
    }
    int sz=v.size();
	int i=0,j=0;
	while(i<sz){
		j=i; 
		while(v[j].e>=v[j+1].b&&j<sz-1)
			++j;
        cout<<v[i].b<<" "<<v[j].e<<endl;
		i=j+1; 
	} 
    return 0;
}

T2

P2296 寻找道路

一眼 \(BFS\) ,由于边权为一。(由于没看限制,喜报20)

由于题目要求必须满足 \(task1\) 所以,应优先处理 \(task1\) ;

然后就是快乐的 \(BFS\) 。

预处理:需要先满足 \(task1\) 的要求,建反图,执行一个从终点开始 \(BFS\) ,就可以在这张有向图上处理出所有“可达终点”的结点了。

AC code:

#include<bits/stdc++.h>
#define seq(q,w,e) for(int q=w;q<=e;q++)
using namespace std;
const int maxn=1e4+10,maxm=2e5+10;
int n,m,st,ed;
int deg[maxn];
vector<int> tow_G[maxn],rev_G[maxn];
bool vis[maxn];
queue<int> q;
void BFS(){
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		int u,v; scanf("%d%d",&u,&v);
		tow_G[u].push_back(v); 
		rev_G[v].push_back(u);
	}
	cin>>st>>ed;
	q.push(ed);
	while(!q.empty()){
		int tmp=q.front(); q.pop();
		if(vis[tmp]) continue; vis[tmp]=true;
		for(int i=0;i<rev_G[tmp].size();++i){
			int j=rev_G[tmp][i];
			deg[j]++;
			q.push(j);
		}
	}
}
int dis[maxn];
void s_BFS(){
	memset(vis,0,sizeof(vis));
	memset(dis,0x3f,sizeof(dis)); 
	dis[st]=0;
	q.push(st);
	while(!q.empty()){
		int tmp=q.front(); q.pop();
		if(vis[tmp]) continue; vis[tmp]=true;
		if(deg[tmp]!=tow_G[tmp].size()) continue;
		for(int i=0;i<tow_G[tmp].size();++i){
			int j=tow_G[tmp][i];
			if(dis[j]>dis[tmp]+1){
				dis[j]=dis[tmp]+1;
				q.push(j);	
			}
		}
	}
}
int main(){
    // ios::sync_with_stdio(false);cin.tie(0);
    BFS();
    s_BFS();
    cout<<(dis[ed]!=0x3f3f3f3f?dis[ed]:-1);
    return 0;
}

T3

看的不是很懂,引用一下题解(QAQ)。

用递推,推一下递推式子。

\(n\) 个物品中取 \(m\) 个物品,若不取这个物品,则从 \(n-1\) ,\(m\) 推过来,若取这个物品则从 \(n-1\) ,\(m-1\) 推过来。

所以 \(f[i][j]=f[i-1][j-1]+f[i-1][j]\) 。

AC code:

#include<bits/stdc++.h>
#define seq(q,w,e) for(int q=w;q<=e;q++)
#define ll long long
using namespace std;
const int maxn=2011;
ll f[maxn][maxn];
ll h[maxn],l[maxn]; 
ll ff[maxn][maxn];
ll n,m,k,t,i,j;
int main(){
    ios::sync_with_stdio(false);cin.tie(0);
    cin>>t>>k;
    f[0][0]=1;
    for (i=1;i<=2001;i++){   
        f[i][0]=1;
        for (j=1;j<=i;j++){
            f[i][j]=(f[i-1][j-1]+f[i-1][j])%k;
            if (f[i][j]==0){
                h[i]++;
            }
            ff[i][j]=ff[i-1][j]+h[i];
            if (j==i) ff[i][j]=h[i]+ff[i-1][j-1];
        }
    }
    while (t--){
        cin>>n>>m;
        if (m>n) m=n;
        cout<<ff[n][m]<<"\n";
    }
    return 0;
}

标签:tmp,一条,int,线段,BFS,反思,push,8.15,考试
From: https://www.cnblogs.com/adsd45666/p/18365803

相关文章

  • [考试记录] 2024.8.17 csp-s模拟赛21
    T1Set解析思考+组合题场上只能想到暴力01背包再加上bitset优化,很好打。本应该有60pts(?或者更多),不曾想由于spj的一些未知原因喜提systemerror,全部cancelled。喜提0pts。......
  • 基于flask+vue框架的的在线考试系统[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网的普及,教育领域正经历着前所未有的变革。传统考试模式,尽管在评估学生学习成果方面发挥着重要作用,但其组织......
  • java+vue计算机毕设基于Web的在线考试管理信息系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和教育改革的不断深入,传统考试模式已难以满足现代教育的需求。在线考试作为一种新兴的教育评估方式,凭借其便捷性、高效性和灵......
  • KubeSphere 社区双周报| 2024.08.02-08.15
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.08.02-08.15。贡献者名单新晋KubeSpherecontribu......
  • 2024.8.15(python管理mysql、Mycat实现读写分离)
    一、python管理mysql1、搭建主mysql[root@mysql57~]#tar-xfmysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [root@mysql57~]#cp-rmysql-5.7.44-linux-glibc2.12-x86_64/usr/local/mysql[root@mysql57~]#rm-rf/etc/my.cnf[root@mysql57~]#mkdir/usr/local/......
  • 实训day29(8.15)
    一、python管理mysql1、搭建主mysql[root@mysql57~]#tar-xfmysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [root@mysql57~]#cp-rmysql-5.7.44-linux-glibc2.12-x86_64/usr/local/mysql[root@mysql57~]#rm-rf/etc/my.cnf[root@mysql57~]#mkdir/usr/local......
  • 2024.8.15随笔
    上午今天自习!写题写爽了!本来说复习顺序为PAM、后缀相关,但是hfu今天在早读完后给我们聊了一些学习的方法、给我们提供了一些学习思路。在思考了一会后,我还是决定不任性去重拾九级难度以上的后缀数组(自动机),而是回过头去复习图论。写了三道紫色的二分图,写爽了!二分图我已经很熟悉......
  • 2024.8.15
    2024.8.15【这雨生于天,死于地,中间的过程就是人生。】Thursday七月十二动态DP(DDP)我们选择从一道模板题讲起[P4719【模板】"动态DP"&动态树分治](P4719[模板]"动态DP"&动态树分治-洛谷|计算机科学教育新生态(luogu.com.cn))【模板】"动态DP"&动态树分治题目描......
  • [lnsyoj2271/luoguP3745/省选联考 2017]期末考试
    题意给定长度为\(n\)的序列\(t\)和长度为\(m\)的序列\(b\),以及常数\(A,B,C\),可以进行两种操作:选取任意\(1\lex,y\len\),并使\(b_x+1,b_y-1\),记进行了\(\alpha\)次这种操作;选取任意\(1\lez\len\),并使\(b_z-1\),记进行了\(\beta\)次这种操作。求进......
  • 8.15
    不太想写,想起了一些以前的事情,但没鱼可摸了……早起,学姐讲了一些廿四的学风,突然就不想去了,我卷不动啊qwq,据说廿四人中午,体活,体育和副科课都在教室里卷作业,可我只想摆……,想去打羽毛球高一比高二晚去食堂10分钟,因此肯定抢不到炸鸡,甜甜圈,慕斯蛋糕,炸紫薯甜点,鸭腿和自助餐等美味了......