首页 > 其他分享 >11/10训练笔记

11/10训练笔记

时间:2023-11-10 20:55:27浏览次数:43  
标签:11 10 int 笔记 200010 a1 include E1 id

P7831[CCO2021] Travelling Merchant 题解

考虑出度为0的点显然不行

随后,进行一个类似于拓扑排序的过程即可

注意到需要建反图

原图也得保留

注意判-1

代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
struct edge{
	int a,b,r,p,id;
	edge(int a = 0,int b = 0,int r = 0,int p = 0,int id = 0):a(a),b(b),r(r),p(p),id(id){}
	bool operator<(edge o) {
		return r > o.r;
	}
}E1[200010];
int ans[200010],vis[200010],out[200010],n,m,cnt;
vector<pair<pair<int,int>,pair<int,int> > > E[200010];
queue<int> q;
int main()
{
	cin >> n >> m;
	for(int i = 1;i <= m;i++) {
		cin >> E1[i].a >> E1[i].b >> E1[i].r >> E1[i].p;
		E1[i].id = i;
		E[E1[i].b].push_back({{E1[i].a,E1[i].id},{E1[i].r,E1[i].p}});
		out[E1[i].a]++;
	}
	for(int i = 1;i <= n;i++) {
		if(!out[i]) q.push(i);
	}
	sort(E1 + 1,E1 + m + 1);
	memset(ans,0x3f,sizeof(ans));
	for(int i = 1;i <= m;i++) {
		while(!q.empty()) {
			int u = q.front();
			q.pop();
			//cout << u << " ";
			for(auto j:E[u]) {
				int v = j.first.first,id = j.first.second,r = j.second.first,p = j.second.second;
				if(vis[id]) continue;
				if(ans[u] != 0x3f3f3f3f) ans[v] = min(ans[v],max(r,ans[u] - p));
				vis[id] = true;
				out[v]--;
				if(!out[v]) {
					q.push(v);
				}
				//cout << v << " ";
			}
		}
		if(!vis[E1[i].id]) {
			vis[E1[i].id] = true;
			ans[E1[i].a] = min(ans[E1[i].a],E1[i].r);
			out[E1[i].a]--;
			if(!out[E1[i].a]) q.push(E1[i].a);
		}
	}
	for(int i = 1;i <= n;i++) {
		cout << (ans[i] == 0x3f3f3f3f ? -1 : ans[i]) << " ";
	}
	cout << "\n";
}

P7261[COCI2009-2010#3] PATULJCI 题解

首先对每个颜色开一个vector<int>保存其位置,随后对于一段区间\([l,r]\)和一个颜色\(c\),可以很快速的求出\([l,r]\)内\(c\)出现的次数。

然后进行随机化,每次随机一个元素并查看他的出现次数。

若随机\(t\)次,那么随机不到的概率是\(\frac{1}{2 ^ t}\),当\(t\)取50时约等于\(10 ^ {-15}\),可以认为几乎不可能。

代码:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int t = 50;
int a1[300010],n,c,m,a,b;
vector<int> E[30010];
int query(int l,int r) {
	for(int i = 1;i <= t;i++) {
		int p = l + rand() % (r - l + 1);
		int res = upper_bound(E[a1[p]].begin(),E[a1[p]].end(),r) - lower_bound(E[a1[p]].begin(),E[a1[p]].end(),l);
		if(res > (r - l + 1) / 2) {
			return a1[p];
		}
	}
	return -1;
}
int main()
{
	cin >> n >> c;
	for(int i = 1;i <= n;i++) {
		cin >> a1[i];
		E[a1[i]].push_back(i);
	}
	for(int i = 1;i <= c;i++) {
		E[i].push_back(n + 1);
	}
	cin >> m;
	for(int i = 1;i <= m;i++) {
		cin >> a >> b;
		int ans = query(a,b);
		if(~ans) cout << "yes" << " " << ans << "\n";
		else cout << "no" << "\n";
	}
}

标签:11,10,int,笔记,200010,a1,include,E1,id
From: https://www.cnblogs.com/IANYEYZ/p/17825037.html

相关文章

  • 【学习笔记】初等数论-组合计数
    加法原理若完成一件事的方法有\(n\)类,其中第\(i(1\lei\len)\)类方法包括\(a_i\)种不同的方法,且这些方法互不重合,则完成这件事共有\(\sum\limits_{i=1}^{n}a_i\)种不同的方法。乘法原理若完成一件事的步骤有\(n\)个,其中第\(i(1\lei\len)\)个步骤包括\(a......
  • [20231109]bash shell快捷键alt+number的问题.txt
    [20231109]bashshell快捷键alt+number的问题.txt--//前一阵子,我想实现12行合并1行的输出,理论讲要使用paste命令加入12个-.输入命令时候要数输入了多少-.我知道bashshell有一--//个快捷键alt+number可以产生连续输入某个字符,但是我一直不知道如何关掉这个功能.有时候误触发这......
  • 《信息安全系统设计与实现》学习笔记9
    《信息安全系统设计与实现》学习笔记9第六章信号和信号处理信号和中断广义的“进程”从事日常事务的人在用户模式或内核模式下运行的Unix/Linux进程执行机器指令的CPU“中断”是发送给“进程”的事件,它将“进程”从正常活动转移到其他活动,称为“中断处理”......
  • 11.10
    今天上午学英语时讲了篇完形填空,内容像是个搞笑故事,讲的是老师问作者他最喜欢的动物是谁然后他答的炸鸡,就被带到校长室了。就诸如此类他被反复见了三次校长。(第一次问最喜欢的动物答炸鸡,第二天也答鸡因为可以被炸成炸鸡,第三天问最喜欢的人人回答肯德基老爷爷,就这样)但我在写这篇......
  • [20231105]降序索引的疑问.txt
    [20231105]降序索引的疑问.txt--//我们生产系统有一套系统我以前维护过,出现一个奇葩现象,建立一堆降序索引,实际上完全没有必要,最后我改了许多索引为普通索引.--//由于可能后续维护或者可能是我遗漏了(当然还有可能索引太大我没有修改),还是有一些索引没改过来.--//我讲过降序索......
  • 11月10日定位属性
    目录定位属性1.static属性2.relative属性3.absolute属性4.fixed属性定位属性需要使用position这个属性然后这里来说一下它的属性值。值描述static(默认值)按照正常文档进行定位,设置了top、right、bottom、left属性也不会生效。relative相对于它在正常文档中的位......
  • Java笔记—Java接口
    Interface接口简介接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现......
  • 231110校内赛
    T1拼图首先一点需要明白的是横向移动和纵向移动并无关联接着我们可以花费\(\mathcalO(k)\)的时间来枚举左右最长长度和上下最长长度我们只需要在两次循环时分别排个序,左右和上下分别排序对于左右移动时,我们枚举每一个点在最左或最右的情况,计算出当前最小的长度,并更新最小......
  • 软件2103班【六个核桃】数据库设计心得体会
     引言本博客为在完成《软件工程导论》课程软件项目的数据库设计时的一些心得体会。数据库设计是软件开发过程中的关键环节之一,直接影响到软件系统的性能和稳定性。一个合理和高效的数据库设计能够有效地提高软件系统的运行效率和响应速度,减少资源的浪费和冗余。同时,良好的......
  • [20231103]rename IDL_UB1$后使用bbed的恢复3.txt
    [20231103]renameIDL_UB1$后使用bbed的恢复3.txt--//上午解决renameIDL_UB1$后使用bbed的恢复问题,就是涉及到的5个索引4个需要修改,其中一个因为NULL值的缘故,不需要修改。--//主要原因是rename是delete再insertobj$,反过来思考,如果修改时长度等长,我仅仅需要name等于原来的字符......