6.5 SDNU Playoffs For The Last Contest Before The Examination题解_;/************************************************-程序员宅基地

A. 高斯消元?矩阵?       待定 ……

 

B.   by lanzongwei (18lanzongwei)

/*********************************************************
Flie Name: a.cpp
Author: Liupo
Email: [email protected]
Creat time: 2019年06月04日 星期二 18时29分32秒
*********************************************************/
#include<bits/stdc++.h>
using namespace std;

map<char, int>M, m;

int main(){
	int n;
	scanf("%d", &n);
	string a, t;
	cin >> a >> t;
	if(a.length() != t.length()){
		puts("-1");
		return 0;
	}
	for(int i = 0; i < n; i++)
		M[a[i]]++, m[t[i]]++;
	if(M != m)puts("-1");
	else {
		vector<int>ans;
		int cnt = 0;
		int now = 0;
		while(a != t){
			for(int i = now; i < n; i++)
				if(a[i] != t[i]){
					int tem = a.find(t[i], i);
					ans.emplace_back(tem);
					char aim = a[tem - 1];
					a[tem - 1] = a[tem];
					a[tem] = aim;
					cnt++;
					break;
				}else now = i;
		}
		printf("%d\n", cnt);
		for(int i = 0; i < cnt; i++)
			printf("%d%c", ans[i], " \n"[i == cnt - 1]);
	}

    
    return 0;
}

补充:

操作 交换s串中相邻的字母  使 s 串变成 t 串 操作数必须在 (int)1e4 之内 ,

否则输出 - 1

n 的 数目 <= 50 , 所以只要 包含的字母相同,则 s串必能形成 t 串

当此时的是s[i] != t[i]  , 要将 s 串中 Index : i 之后的等于t[i] 字符的交换到当前的 i 处,

模拟即可

C.Description   

by  Thankyou (18赵宝乐)

要把n首歌曲下载到有限定内存的优盘上,原大小a[i]压缩后大小b[i],问最少压缩几首歌曲? 

Idea

求一个原大小的和suma, 若suma <= m 无需压缩,输出0 求一个全部压缩后的和sumb,若sumb > m不可能成功,输出-1 排除以上两种情况,贪心选取“压缩量(a[i] - b[i])大”的去压缩,得到答案 

Code

#include <set>
#include <queue>
#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

int a[100005];
int b[100005];
int c[100005];

int  main()
{
    int n, m;
    while(cin >> n >> m)
    {
        long long suma = 0;
        long long sumb = 0;
        for(int i = 0; i < n; ++i)
        {
            scanf("%d%d", &a[i], &b[i]);
            c[i] = a[i] - b[i];
            suma += a[i];
            sumb += b[i];
        }
        if(suma <= m)
        {
            cout << '0' << '\n';
            continue;
        }
        if(sumb > m)
        {
            cout << "-1" << '\n';
            continue;
        }
        sort(c, c + n);
        int ans = 0;
        int idx = n - 1;
        while(suma > m)
        {
            suma -= c[idx--];
            ans++;
        }
        cout << ans << '\n';
    }
    return 0;
}

D:暴力   by 2017chenshibo (heheda)

#include<bits/stdc++.h>
using namespace std;
int main() {
	ios::sync_with_stdio(0);
	long long n, k, s;
	cin >> n >> k >> s;
	int spot = 0;
	long long need = s / (n - 1);
	if (need*(n - 1) != s)
		spot = 1;
	if (need + spot > k || k > s) {
		cout << "NO\n";
		return 0;
	}
	cout << "YES\n";
	//还剩下k步走s路程
	queue<int>ans;
	long long int now = 1;
	while (k) {
		//cout << k << " " << s << endl;
		if (s - (n - 1) >= k - 1) {
			if (now == 1) {
				ans.push(n);
				now = n;
			}
			else {
				ans.push(1);
				now = 1;
			}
			s -= (n - 1);
		}
		else {
			long long ne = s - (k - 1);
			if (now - ne >= 1) {
				now -= ne;
			}
			else {
				now += ne;
			}
			ans.push(now);
			s -= ne;
		}
		k--;
	}
	int y = 0;
	while (!ans.empty()) {
		if (y == 0) {
			cout << ans.front();
			y = 1;
		}
		else {
			cout << " " << ans.front();
		}
		ans.pop();
	}
	cout << "\n";
	return 0;
}

补充:有 N 个位置 ,要求走K次之后,所走的距离之和 为 S;

先走距离大的,再走距离小的,是总会有位置可走的  。。   

1.   从 n -  1 到 1 先除后膜

2.  平均  用 int step = S / K  ;   int c = S % k;

如果c 有值 先走step + 1 , 再走 step;

 

E.圆锥的表面积 ,体积

三分 或者  求导

by   ignb (18puqiulong)

https://blog.csdn.net/weixin_43237242/article/details/90814905

 

F.    最大化最小值裸题()   by 2017chenshibo (heheda)

#include<iostream>
using namespace std;
long long mon[100010];
long long n, m;
bool check(long long mid) {
	long long sum = 0, num = 1;
	for (int i = 1; i <= n; i++ ) {
		if (mon[i] > mid) {
			return 0;
		}
		if (sum + mon[i] > mid) {
			sum = mon[i];
			num++;
		}
		else {
			sum += mon[i];
		}
		if (num > m)return 0;
	}
	if (num > m)return 0;
	return 1;
}
int main() {
	ios::sync_with_stdio(0);
	while (cin >> n >> m) {
		long long l = 0, r = 0;
		for (int i = 1; i <= n; i++) {
			cin >> mon[i];
			r += mon[i];
		}
		long long ans = r;
		while (l <= r) {
			long long mid = (l + r) >> 1;
			if (check(mid)) {
				ans = mid;
				r = mid - 1;
			}
			else {
				l = mid + 1;
			}
		}
		cout << ans << "\n";
	}
	return 0;
}

补充:  有 N 天 的花费 ,要求 形成 M 个fajomonths ,

使 每个 fajomonths 的花费 的最大值 最小

从边界考虑 对于 第一天 ,一定有一个 fajomonths 包括了第一天,

按照贪心的思想,想要包括更多的 天数 。

二分答案   ,对于每一个  x  最少有多少个fajomonths可以覆盖这 N 天,

若此时的 fajomonths 数量 小于 等于 M ,则 此时答案 成立,因为此时 可以将多余的

fajomonths  分出去。。

 

G. 二分 套二分  待定……

I 附加题  

图论

最小生成树Kruskal   思维题

待定 …… 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41431762/article/details/90912480

智能推荐

艾美捷Epigentek DNA样品的超声能量处理方案-程序员宅基地

文章浏览阅读15次。空化气泡的大小和相应的空化能量可以通过调整完全标度的振幅水平来操纵和数字控制。通过强调超声技术中的更高通量处理和防止样品污染,Epigentek EpiSonic超声仪可以轻松集成到现有的实验室工作流程中,并且特别适合与表观遗传学和下一代应用的兼容性。Epigentek的EpiSonic已成为一种有效的剪切设备,用于在染色质免疫沉淀技术中制备染色质样品,以及用于下一代测序平台的DNA文库制备。该装置的经济性及其多重样品的能力使其成为每个实验室拥有的经济高效的工具,而不仅仅是核心设施。

11、合宙Air模块Luat开发:通过http协议获取天气信息_合宙获取天气-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏14次。目录点击这里查看所有博文  本系列博客,理论上适用于合宙的Air202、Air268、Air720x、Air720S以及最近发布的Air720U(我还没拿到样机,应该也能支持)。  先不管支不支持,如果你用的是合宙的模块,那都不妨一试,也许会有意外收获。  我使用的是Air720SL模块,如果在其他模块上不能用,那就是底层core固件暂时还没有支持,这里的代码是没有问题的。例程仅供参考!..._合宙获取天气

EasyMesh和802.11s对比-程序员宅基地

文章浏览阅读7.7k次,点赞2次,收藏41次。1 关于meshMesh的意思是网状物,以前读书的时候,在自动化领域有传感器自组网,zigbee、蓝牙等无线方式实现各个网络节点消息通信,通过各种算法,保证整个网络中所有节点信息能经过多跳最终传递到目的地,用于数据采集。十多年过去了,在无线路由器领域又把这个mesh概念翻炒了一下,各大品牌都推出了mesh路由器,大多数是3个为一组,实现在面积较大的住宅里,增强wifi覆盖范围,智能在多热点之间切换,提升上网体验。因为节点基本上在3个以内,所以mesh的算法不必太复杂,组网形式比较简单。各厂家都自定义了组_802.11s

线程的几种状态_线程状态-程序员宅基地

文章浏览阅读5.2k次,点赞8次,收藏21次。线程的几种状态_线程状态

stack的常见用法详解_stack函数用法-程序员宅基地

文章浏览阅读4.2w次,点赞124次,收藏688次。stack翻译为栈,是STL中实现的一个后进先出的容器。要使用 stack,应先添加头文件include<stack>,并在头文件下面加上“ using namespacestd;"1. stack的定义其定义的写法和其他STL容器相同, typename可以任意基本数据类型或容器:stack<typename> name;2. stack容器内元素的访问..._stack函数用法

2018.11.16javascript课上随笔(DOM)-程序员宅基地

文章浏览阅读71次。<li> <a href = "“#”>-</a></li><li>子节点:文本节点(回车),元素节点,文本节点。不同节点树:  节点(各种类型节点)childNodes:返回子节点的所有子节点的集合,包含任何类型、元素节点(元素类型节点):child。node.getAttribute(at...

随便推点

layui.extend的一点知识 第三方模块base 路径_layui extend-程序员宅基地

文章浏览阅读3.4k次。//config的设置是全局的layui.config({ base: '/res/js/' //假设这是你存放拓展模块的根目录}).extend({ //设定模块别名 mymod: 'mymod' //如果 mymod.js 是在根目录,也可以不用设定别名 ,mod1: 'admin/mod1' //相对于上述 base 目录的子目录}); //你也可以忽略 base 设定的根目录,直接在 extend 指定路径(主要:该功能为 layui 2.2.0 新增)layui.exten_layui extend

5G云计算:5G网络的分层思想_5g分层结构-程序员宅基地

文章浏览阅读3.2k次,点赞6次,收藏13次。分层思想分层思想分层思想-1分层思想-2分层思想-2OSI七层参考模型物理层和数据链路层物理层数据链路层网络层传输层会话层表示层应用层OSI七层模型的分层结构TCP/IP协议族的组成数据封装过程数据解封装过程PDU设备与层的对应关系各层通信分层思想分层思想-1在现实生活种,我们在喝牛奶时,未必了解他的生产过程,我们所接触的或许只是从超时购买牛奶。分层思想-2平时我们在网络时也未必知道数据的传输过程我们的所考虑的就是可以传就可以,不用管他时怎么传输的分层思想-2将复杂的流程分解为几个功能_5g分层结构

基于二值化图像转GCode的单向扫描实现-程序员宅基地

文章浏览阅读191次。在激光雕刻中,单向扫描(Unidirectional Scanning)是一种雕刻技术,其中激光头只在一个方向上移动,而不是来回移动。这种移动方式主要应用于通过激光逐行扫描图像表面的过程。具体而言,单向扫描的过程通常包括以下步骤:横向移动(X轴): 激光头沿X轴方向移动到图像的一侧。纵向移动(Y轴): 激光头沿Y轴方向开始逐行移动,刻蚀图像表面。这一过程是单向的,即在每一行上激光头只在一个方向上移动。返回横向移动: 一旦一行完成,激光头返回到图像的一侧,准备进行下一行的刻蚀。

算法随笔:强连通分量-程序员宅基地

文章浏览阅读577次。强连通:在有向图G中,如果两个点u和v是互相可达的,即从u出发可以到达v,从v出发也可以到达u,则成u和v是强连通的。强连通分量:如果一个有向图G不是强连通图,那么可以把它分成躲个子图,其中每个子图的内部是强连通的,而且这些子图已经扩展到最大,不能与子图外的任一点强连通,成这样的一个“极大连通”子图是G的一个强连通分量(SCC)。强连通分量的一些性质:(1)一个点必须有出度和入度,才会与其他点强连通。(2)把一个SCC从图中挖掉,不影响其他点的强连通性。_强连通分量

Django(2)|templates模板+静态资源目录static_django templates-程序员宅基地

文章浏览阅读3.9k次,点赞5次,收藏18次。在做web开发,要给用户提供一个页面,页面包括静态页面+数据,两者结合起来就是完整的可视化的页面,django的模板系统支持这种功能,首先需要写一个静态页面,然后通过python的模板语法将数据渲染上去。1.创建一个templates目录2.配置。_django templates

linux下的GPU测试软件,Ubuntu等Linux系统显卡性能测试软件 Unigine 3D-程序员宅基地

文章浏览阅读1.7k次。Ubuntu等Linux系统显卡性能测试软件 Unigine 3DUbuntu Intel显卡驱动安装,请参考:ATI和NVIDIA显卡请在软件和更新中的附加驱动中安装。 这里推荐: 运行后,F9就可评分,已测试显卡有K2000 2GB 900+分,GT330m 1GB 340+ 分,GT620 1GB 340+ 分,四代i5核显340+ 分,还有写博客的小盒子100+ 分。relaybot@re...

推荐文章

热门文章

相关标签