七夕学算法

目录

P1031 [NOIP2002 提高组] 均分纸牌

原题链接 :

题面 : 

 思路 :

代码 : 

P1036 [NOIP2002 普及组] 选数

原题链接 :

题面 : 

思路 :

代码 : 

P1060 [NOIP2006 普及组] 开心的金明

原题链接 : 

题面 : 

 思路 : 

01背包例题 :

代码 :  

P1100 高低位交换

原题链接 : 

题面 : 

 思路 :

代码 : 

P1097 [NOIP2007 提高组] 统计数字

原题链接 

题面 : 

 ​编辑

思路 : 

代码 1: map + set

 代码 2  : 数组排序


视频链接 : Erik_Tse

P1031 [NOIP2002 提高组] 均分纸牌

原题链接 :

         均分纸牌

题面 : 

 思路 :

  根据贪心的思想,肯定是先将第一堆的纸牌弄成n张,再去弄后面的!

循环往后,如果当前队中牌数小于n,从下一堆中移差值牌数过来,

如果大于的话,就将差值牌数移给下一堆。最后一定就是满足题目要求的!!!

所以请看代码 : 

代码 : 

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 102;
int n,a[N];
LL ans,sum,avg,k;
int main() {
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i];
	avg = sum / n;
	for(int i=1;i<=n;i++){
		if(a[i] < avg){
			k = avg - a[i];
			a[i] += k;
			a[i+1] -= k;
			ans ++;
		}
		if(a[i] > avg){
			k = a[i] - avg;
			a[i] -= k;
			a[i+1] += k;
			ans ++; 
		}
	}
	cout<<ans<<endl;
	return 0;
}

P1036 [NOIP2002 普及组] 选数

原题链接 :

 选数

题面 : 

思路 :

就是一个dfs找子集的问题,没什么好说的,详细请看代码 !!!

实现组合型枚举例题 : 实现组合型枚举

代码 : 

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 22;
int n,a[N],k;

bool is_prime(int x){//判断素数模板,要记住 
	if(x < 2) return false;
	for(int i=2;i<=x/i;i++) if(x%i == 0) return false;
	return true;
}

LL dfs(int dep,int cnt,int sum){ 
	if(cnt == k) return (int)is_prime(sum);//找到k个元素
	if(dep > n) return 0;//搜索到数组最后一个元素,退出
	// 子集问题,选或不选 两个分支 :  
	// 选 : dfs(dep+1,cnt,sum) 
	// 不选 : dfs(dep + 1,cnt + 1 , sum + a[dep])
	LL res = 0;
	res += dfs(dep + 1 , cnt , sum);
	res += dfs(dep + 1 , cnt + 1 , sum + a[dep]); 
	return res;
}

int main() {
	cin >> n >> k;
	for(int i=1;i<=n;i++) cin>>a[i];
	// dfs(dep,cnt,sum)
	// dep : 下标 
	// cnt : 当前选了几个数 
	// sum : 当前选数之和  
	cout << dfs(1,0,0) << endl;
	
	return 0;
}

P1060 [NOIP2006 普及组] 开心的金明

原题链接 : 

开心的金明

题面 : 

 思路 : 

本质上就是一个01背包问题,分选和不选两种情况!!!不懂得可以看01背包例题 : 

01背包例题 :

 2. 01背包问题 - AcWing题库

代码 :  

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 3e4+10;
int n , m;
int v[27],w[27];
LL dp[30][N];//表示从前i个物品中选,重前不过j的最大价值 

int main() {
	cin >> n >> m;
	for(int i=1;i<=m;i++) cin >> v[i] >> w[i];
	// 本质 : 01背包 
	for(int i=1;i<=m;i++){
		for(int j=0;j<=n;j++){
			if(j < v[i]) dp[i][j] = dp[i-1][j];
			else dp[i][j] = max(dp[i-1][j], dp[i-1][j-v[i]] + v[i]*w[i]);
		}
	}
	cout<<dp[m][n]<<endl;
	return 0;
}

P1100 高低位交换

原题链接 : 

高低位交换 - 洛谷

题面 : 

 思路 :

位运算,模拟即可

代码 : 

#include<iostream>
using namespace std;
typedef long long LL;
LL x,ans,st,en;
int main()
{
    scanf("%lld",&x);
	st = x >> 16;
	en = x % (65536);
	en = (en << 16);
	ans = en + st;
	printf("%lld",ans); 
	return 0;
}

P1097 [NOIP2007 提高组] 统计数字

原题链接 

统计数字

题面 : 

 

思路 : 

用map+set : 

代码 1: map + set

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
#include <unordered_map>
#include <set>
using namespace std;
typedef long long LL;
const int N = 3e4+10;
int m,x;
unordered_map<int,int> mp;
set<int> st;

int main() {
	cin >> m;
	while(m--){
		cin>>x;
		mp[x]++;
		st.insert(x);
	}
	for(auto it = st.begin() ; it != st.end() ; it ++){
		cout << *it << " " << mp[*it] << endl;
	}
	return 0;
}

 代码 2  : 数组排序

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
#include <unordered_map>
#include <set>
using namespace std;
typedef long long LL;
const int N = 2e5+10;
int n, a[N], cnt;

int main() {
	cin >> n;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+1+n);
	for(int i=1;i<=n;i++){
		cnt ++;
		if(i==n || a[i]!=a[i+1]){
			cout<<a[i] <<" "<<cnt<<endl;
			cnt = 0;
		}
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/87115.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS开发第一步,熟知开发工具DevEco Studio

俗话说的好&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;走进HarmonyOS第一步&#xff0c;开发工具必须先行&#xff0c;当然了&#xff0c;关于开发工具的使用&#xff0c;官网和其他的博客也有很多的讲解&#xff0c;但是并没有按照常用的功能进行概述&#xff…

诚迈科技子公司智达诚远与Unity中国达成合作,打造智能座舱新时代

2023 年 8 月 23 日&#xff0c;全球领先的实时 3D 引擎 Unity 在华合资公司 Unity 中国举办发布会&#xff0c;正式对外发布 Unity 引擎中国版——团结引擎&#xff0c;并带来专为次世代汽车智能座舱打造的团结引擎车机版。发布会上&#xff0c;诚迈科技副总裁、诚迈科技子公司…

python中的matplotlib画折线图(数据分析与可视化)

先导包&#xff08;必须安装了numpy 、pandas 和matplotlib才能导包&#xff09;&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt核心代码&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.se…

Android初学之android studio运行java/kotlin程序

第一步骤&#xff1a;File—>New—>New Module&#xff0c;然后弹出一个框&#xff0c;&#xff08;左边&#xff09;选择Java or Kotlin Library&#xff0c;&#xff08;右边&#xff09;编辑自己的图书馆名、包名、类名&#xff0c;选择Java一个语言&#xff0c;然后F…

LeetCode42.接雨水

这道题呢可以按列来累加&#xff0c;就是先算第1列的水的高度然后再加上第2列水的高度……一直加到最后就是能加的水的高度&#xff0c;我想到了这里然后就想第i列的水其实就是第i-1列和i1列中最小的高度减去第i列的高度&#xff0c;但是其实并不是&#xff0c;比如示例中的第5…

计算机竞赛 基于LSTM的天气预测 - 时间序列预测

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 机器学习大数据分析项目 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/po…

SQL地址门牌排序,字典序转为数字序

页面有一批地址数据查询&#xff0c;结果字符排序默认是字典序的&#xff0c;所以造成了门牌3号在30号之前&#xff0c;影响用户体验&#xff1b; id, road_code, road_name, address_fullname, address_name 102 10086 人民一路 北江省南海市西湖区人民一路3号 3号 103 10086…

Java设计模式-抽象工厂模式

简介 设计模式是软件设计中的一种常见方法&#xff0c;通过定义一系列通用的解决方案&#xff0c;来解决常见的软件设计问题。其中&#xff0c;抽象工厂模式是一种非常常见的设计模式&#xff0c;它可以帮助我们创建一组相关的对象&#xff0c;而不需要指定具体的实现方式。 …

Unity 3D之 利用Vector3 计算移动方向,以及实现位移多少

文章目录 先分析代码&#xff0c;从代码中了解Vector3 moveDirection new Vector3(10f, 0f, 100f);合法吗Vector3 moveDirection new Vector3 (xf,yf,zf)不是用来表示三维坐标的怎么表示在某个方向的位移 先分析代码&#xff0c;从代码中了解 这段代码是一个在游戏开发中常见…

Tushare入门小册

Tushare入门小册 一、Tushare平台介绍 Pro版数据更稳定质量更好了&#xff0c;我们提供的不再是直接从互联网抓取&#xff0c;而是通过社区的采集和整理存入数据库经过质量控制后再提供给用户。但Pro依然是个开放的&#xff0c;免费的平台&#xff0c;不带任何商业性质和目的…

【C修炼计划】卷壹 · 初识C语言

文章目录 卷壹 初识C语言一 C语言的起源二 C语言的特性三 C语言的应用范围四 C语言程序结构五 C语言书写规范六 C语言编译器安装附 参考资料 卷壹 初识C语言 一 C语言的起源 C语言的前生是B语言&#xff08;BCPL&#xff0c;一种早期的高级语言&#xff09;。下图描…

【Python原创毕设|课设】基于Python Flask的上海美食信息与可视化宣传网站项目-文末附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站&#xff08;获取方式访问文末官网&#xff09; 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展&#xff0c;我们设…

PySide6学习笔记--gui小模版使用

一、界面绘制 1.desiner画图 2.画图代码 # -*- coding: utf-8 -*-################################################################################ ## Form generated from reading UI file t1gui.ui ## ## Created by: Qt User Interface Compiler version 6.5.2 ## ##…

驱动开发——字符设备

字符设备 Linux 将系统设备分为&#xff1a;字符设备、块设备、网络设备。工作原理 字符设备是 Linux 驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个一个字节&#xff0c; 按照字节流进行读写操作的设备&#xff0c;读写数据是分先后顺序的。在Linux的世界里面一切…

黑客自学路线

谈起黑客&#xff0c;可能各位都会想到&#xff1a;盗号&#xff0c;其实不尽然&#xff1b;黑客是一群喜爱研究技术的群体&#xff0c;在黑客圈中&#xff0c;一般分为三大圈&#xff1a;娱乐圈 技术圈 职业圈。 娱乐圈&#xff1a;主要是初中生和高中生较多&#xff0c;玩网恋…

简单着色器编写(下)

函数部分介绍完了&#xff0c;最后来介绍一下main函数中的部分。 std::string vertexShader "#version 330 core\n" "\n" "layout(location0)in vec4 position;" "\n" "void main()\n" "{\n&…

淘宝商品优惠券详情item_get_app-获得淘宝app商品详情原数据

item_get_app-获得淘宝app商品详情原数据 taobao.item_get_app 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;调用API接口入口secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09…

微信小程序拉起支付报: 调用支付JSAPI缺少参数: total_fee

1. 调用支付JSAPI缺少参数: total_fee 2. 检查返回给前端调起支付的参数是否正确 一开始是params.put("package", prepay_id); 回来改回params.put("package", "prepay_id"prepay_id);

【测试】pywinauto的简单使用(安装、常用对象、元素控件、鼠标操作、键盘操作)

1.说明 pywinauto是一个用于自动化Python 模块&#xff0c;适合Windows系统的软件&#xff08;GUI&#xff09;&#xff0c;可以通过Pywinauto遍历窗口&#xff08;对话框&#xff09;和窗口里的控件&#xff0c;也可以控制鼠标和键盘输入&#xff0c;所以它能做的事情比之前介…

36k字从Attention解读Transformer及其在Vision中的应用(pytorch版)

文章目录 0.卷积操作1.注意力1.1 注意力概述(Attention)1.1.1 Encoder-Decoder1.1.2 查询、键和值1.1.3 注意力汇聚: Nadaraya-Watson 核回归1.2 注意力评分函数1.2.1 加性注意力1.2.2 缩放点积注意力1.3 自注意力(Self-Attention)1.3.1 自注意力的定义和计算1.3.2 自注意…