day 10 模拟和高精度

news2024/11/19 19:37:40

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

#include<bits/stdc++.h>
using namespace std; 

int n, na, nb, fa, fb;//f:得分 
int a[205], b[205];

void fun(int ta, int tb){
	if(ta == 0 && tb == 1) fb++;
	if(ta == 1 && tb == 0) fa++;
	if(ta == 0 && tb == 2) fa++;
	if(ta == 2 && tb == 0) fb++;
	if(ta == 0 && tb == 3) fa++;
	if(ta == 3 && tb == 0) fb++;
	if(ta == 0 && tb == 4) fb++;
	if(ta == 4 && tb == 0) fa++; 
	if(ta == 1 && tb == 2) fb++;
	if(ta == 2 && tb == 1) fa++;
	if(ta == 1 && tb == 3) fa++;
	if(ta == 3 && tb == 1) fb++;
	if(ta == 1 && tb == 4) fb++;
	if(ta == 4 && tb == 1) fa++;
	if(ta == 2 && tb == 3) fb++;
	if(ta == 3 && tb == 2) fa++;
	if(ta == 2 && tb == 4) fa++;
	if(ta == 4 && tb == 2) fb++; 
	if(ta == 3 && tb == 4) fa++;
	if(ta == 4 && tb == 3) fb++;
}
int main()
{
	cin >> n >> na >> nb;
	for(int i=0; i<na; i++)
	    cin >> a[i];
	for(int i=0; i<nb; i++)
	    cin >> b[i];
	int ta, tb;
	for(int i=0; i<n; i++){//进行n轮 
		ta = a[i%na];
		tb = b[i%nb];
		fun(ta, tb);
	}
	cout<< fa << " " << fb << endl;
	return 0;
}

得分表  --- >   简化代码: 

#include<bits/stdc++.h>
using namespace std; 

int n, na, nb, fa, fb;//f:得分 
int a[205], b[205];
int s[5][5] = {{0, 1, 0, 0, 1},
               {0, 0, 1, 0, 1},
			   {1, 0, 0, 1, 0},
			   {1, 1, 0, 0, 0},
			   {0, 0, 1, 1, 0}}; 
// 行表示b,列表示a,s[b][a]=1:表示列a得分 
int main()
{
	cin >> n >> na >> nb;
	for(int i=0; i<na; i++)
	    cin >> a[i];
	for(int i=0; i<nb; i++)
	    cin >> b[i];
	int ta, tb;
	for(int i=0; i<n; i++){//进行n轮 
		ta = a[i%na];
		tb = b[i%nb];
		fa += s[tb][ta];//a得分 
		fb += s[ta][tb];//b得分 
	}
	cout<< fa << " " << fb << endl;
	return 0;
}

P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

如果 John 和牛永远不会相遇,输出 0。(实在不会,就设一个大一点的maxt ...... )

如果两个物体先后两次从同一个方向走到同一个地点,我们就可以说它们陷入了死循环。

专属值 = 农夫的x坐标+他的y坐标* 10+奶牛的x坐标* 100+奶牛的y坐标* 1000+农夫的方向* 10000+奶牛的方向* 40000(农夫方向最多为4)但这样会超时,就直接t>10000即死循环

这里面权重的取值很关键! 权重分别为 1 10 100 1000 10000 40000,包括了所有的情况。 

个位数的值 只与 农夫的X 坐标挂钩,因为其他的部分都不会影响个位数的取值;

同理 十位数与 Y 挂钩 其他的也是

而 10000 与 40000, 因为前面是坐标,而地图大小为 10*10 , 有0-9(或者1- 10) 10种可能, 而后面两个是方向 上下左右只需要四个值即可表示 0 1 2 3因此 最后一项的权重是 40000(当然你×100000应该也没问题,但是40000更小节约内存嘛)

这样,将每一种情况都保存起来, 确保不会出现重复 (出现重复,则说明 牛 和 农夫在绕圈子 , 永远也走不到一起,即捕捉失败)                     其实没太懂,,,记录一下。

#include<bits/stdc++.h>
using namespace std; 

char mp[12][12], c;
int cx, cy, fx, fy, t, d[2], f;//f=0,d[0]:牛,f=1,d[1]:人 
// d=0:向上;d=1:向右;d=2:向下;d=3:向左 
//bool zt[160005]; int tdz;//专属值 (会超时!)

void move(int x,int y, int td, int f){
	if(td == 0){ 
	    if(mp[x-1][y] == '*'){
		     if(f == 0) d[0] = 1;
		     else d[1] = 1;
		}else{
			if(f == 0) fx--;
			else cx--;
		}
	}else if(td == 1){
		if(mp[x][y+1] == '*'){
		     if(f == 0) d[0] = 2;
		     else d[1] = 2;
		}else{
			if(f == 0) fy++;
			else cy++;
		}
	}else if(td == 2){
		if(mp[x+1][y] == '*'){
		     if(f == 0) d[0] = 3;
		     else d[1] = 3;
		}else{
			if(f == 0) fx++;
			else cx++;
		}
	}else{
		if(mp[x][y-1] == '*'){
		     if(f == 0) d[0] = 0;
		     else d[1] = 0;
		}else{
			if(f == 0) fy--;
			else cy--;
		}
	}
}
int main()
{
	memset(mp, '*', sizeof(mp));//在边缘加一圈 * 
	for(int i=1;i<=10; i++){
	    for(int j=1; j<=10; j++){
	        cin >> c;
			mp[i][j] = c;
	        if(mp[i][j] == 'F')fx = i,fy = j;
	        if(mp[i][j] == 'C')cx = i,cy = j;
	    }
	}
	while(1){
		//tdz=fx+fy*10+cx*100+cy*1000+d[0]*10000+d[1]*40000;
		//if (zt[tdz]){ t = 0;break; }//死循环了就输出0并结束程序
		if(fx == cx && fy == cy) break;
		if(t > 10000){ t = 0; break;}
    	move(fx, fy, d[0], 0);
	    move(cx, cy, d[1], 1);
	    t ++ ;//计时 
    }
	cout << t << endl;
	return 0;
}

P1067 [NOIP2009 普及组] 多项式输出

看似简单但不容易考虑周全

#include<bits/stdc++.h>
using namespace std; 

int n, a[105];
int main()
{
	cin >> n;
	for(int i=n; i>=0; i--){
	    cin >> a[i];
	    if(a[i]){
	    	if(i!=n && a[i]>0)cout<<"+";//第一项不加 + 
	    	if(abs(a[i])>1 || i==0)cout<<a[i];//系数为 0 不输出 
	    	if(a[i]==-1 && i)cout<<"-";//系数为 -1 只输出 - 
	    	if(i>1)cout<<"x^"<<i;//大多项输出 ^ 
            if(i==1)cout<<"x";//一次项不输出 ^   
		}
	}
	return 0; 
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习记录-mybatis+vue+elementUi实现分页条件查询

因为前端并不难&#xff0c;这里前后端就一起实现。一共分为四个步骤 步骤一 ① SQL部分 分页条件查询其实就是在分页的基础上增加条件&#xff0c;这里有两个主要的函数需要去实现&#xff0c;一个是根据分页以及条件去查询数据&#xff0c;另一个是根据条件去统计数据。 明显…

结构体嵌套函数指针

这次来记录一下结构体嵌套函数指针 这个知识点想了2天终于搞懂了。 先看代码&#xff0c;试着理解一下&#xff0c;不理解再看我后面的解释。 解释&#xff1a; 首先&#xff0c;和平常创建一个结构体一样&#xff0c;唯独不同的就是里面的变量是一个函数指针&#xff0c;关…

Spring Bean作用域

目录 什么是作用域呢 ? 那什么又是Spring Bean的作用域呢 ? Spring框架默认Bean作用域是什么呢 ? Spring Bean的作用域都有哪些呢 ? 如何设置Bean作用域 什么是作用域呢 ? 在JavaSE中,作用域就是指一个变量可生效的范围. 就比如一个变量的作用域是方法的代码块的范围…

fpga实操训练(signal tap调试)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 编写软件的同学都知道&#xff0c;如果需要调试软件的话&#xff0c;除了要学会打印信息日志之外&#xff0c;另外一个很重要的方面&#xff0c;就…

http 库的服务端实现

前言 net/http 库的客户端实现(上) net/http 库的客户端实现(下) net/http 库的服务端实现 上两篇文章介绍了 http 客户端的实现&#xff0c;这篇文章看一下服务端的实现 服务端 使用 net/http 库可以快速搭建HTTP服务&#xff0c;HTTP服务端主要包含两部分&#xff1a; …

5G无线技术基础自学系列 | 5G网络切换问题分析

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线通信的最大特点在于其具有移动性&a…

提高搜狗PR最好的方法与搜狗PR权重在线查询

搜狗PR是什么? 搜狗PR值全称为搜狗PageRank(网页级别)&#xff0c;是搜狗用于用来标识网页的等级、重要性的一种方法&#xff0c;是搜狗用来衡量一个网站的好坏的重要标准之一。 搜狗在揉合了诸如Title标识和Keywords标识等所有其它因素之后&#xff0c;通过PageRank来…

react学习

1. React概述 1.1 什么是react&#xff1f; React 是一个用于构建用户界面的 JavaScript 库 用户界面:HTML页面(前端) React 主要用来写HTML页面&#xff0c;或构建Web应用如果从 MVC 的角度来看&#xff0c;React 仅仅是视图层(V)&#xff0c;也就是只负责视图的染&#xff0…

Day44——Dp专题

文章目录子序列问题27.最长递增子序列28、最长连续递增序列29、最长重复子数组30、最长公共子序列31、不相交的线32、最大子序和33、判断子序列34、不同的子序列35、两个字符串的删除操作36、编辑距离37、回文子串38、最长回文子序列动态规划总结篇背包问题系列股票系列子序列系…

java论坛贴子网站ssm论坛项目发帖子网站论坛系统论坛源码

ssm开发的论坛系统&#xff0c;用户注册后可以发布帖子&#xff0c;其他人可以评论回复点赞评论和点赞回复&#xff0c;用户可以在个人中心管理自己的帖子&#xff0c;以及查看自己对他人的回复&#xff0c;和他人对自己的回复。 演示视频&#xff1a; https://www.bilibili.c…

图(Graph)的定义

图(Graph)的定义 文章目录图(Graph)的定义●图的形式化定义:G (V,E)●无向图和有向图的表示形式:● 有向图和无向图的定义●抽象数据类型定义ADT●图形结构属于复杂的非线性结构● 图由顶点的集合和边的集合构成 ●图的形式化定义:G (V,E) • 集合V(vertex):顶点的有限集合,…

多线程基础入门

文章目录前言一、认识线程&#xff08;一&#xff09;概念1.线程是什么2.为啥要有线程&#xff08;轻量级进程&#xff09;为什么线程比进程更轻量经典面试题&#xff1a;谈谈进程和线程的区别和联系3.线程的结构&#xff08;二&#xff09;第一个多线程程序&#xff08;三&…

Java中的自旋锁,手动实现一个自旋锁

自旋锁 CAS是实现自旋锁的基础&#xff0c;CAS利用CPU指令保证了操作的原子性&#xff0c;已达到锁的效果。自旋是指尝试获取锁的线程不会立即阻塞&#xff0c;而是采用循环的方式去尝试获取锁&#xff0c; 当线程发现锁被占用时&#xff0c;会不断循环判断锁的状态&#xff0…

计算机网络最新复习【太原理工大学】

课后题 Word 版&#xff0c;提取码&#xff1a;5201https://pan.baidu.com/s/13xzx8qr8Mnh4TWTS_dEYxA 目录 一、题型 二、考点 一、题型 1. 选择题 40 个&#xff0c;每个 1 分&#xff0c;共 40 分。&#xff08;大部分可一眼看出答案&#xff09; 2. 填空题 15 个&…

最长上升子序列优化(贪心+二分)(超级详细的讲解)

最长上升子序列优化&#xff08;贪心二分一、回顾1、问题描述2、动规代码弊端二、优化1、算法优化2、代码实现一、回顾 1、问题描述 2、动规代码弊端 我们之前的动规代码的时间复杂度是O(n2)O(n^2)O(n2)。如果大家还不知道动态规划的逻辑的话&#xff0c;建议大家先去看一下动…

我国用电信息采集系统行业应用需求及市场容量分析 现6省上线运行

用户用电信息采集系统是通过对配电变压器和终端用户的用电数据的采集和分析&#xff0c;实现用电监控、推行阶梯定价、负荷管理、线损分析&#xff0c;最终达到自动抄表、错峰用电、用电检查&#xff08;防窃电&#xff09;、负荷预测和节约用电成本等目的。建立全面的用户用电…

VuePress初学之利用模板theme创建一个个人博客网站

目录前言官方文档创建项目创建目录安装VuePress初始化项目创建文档修改package.json运行项目修改README.md的编码显示官方默认主题创建.vuepress文件创建config.js修改README.md补充logo资源运行效果更多默认主题配置开源主题vuepress-theme-reco安装脚手架初始化项目安装npm运…

为什么说L2毫秒接口的应用比较广泛?

和其它的数据接口一样&#xff0c;这L2毫秒接口也起到了一个媒介的作用&#xff0c;将所有的股票信息都传递到了另外一个软件上。因为市场上的股票种类很多&#xff0c;所以每一种股票都具有其特有的信息&#xff0c;是进行股票买卖的基础。 为什么说L2毫秒接口的应用比较广泛…

MCU-51:矩阵键盘

题目一、矩阵键盘介绍1.1 矩阵键盘1.2 扫描的概念二、编程2.1 LCD屏显示“HelloWord”2.2 矩阵键盘程序三、矩阵键盘应用一、矩阵键盘介绍 1.1 矩阵键盘 在键盘中按键数量较多时&#xff0c;为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵形式 采用逐行或逐列的“扫描…

Flowable学习笔记(一):SpringBoot项目整合Flowable

1.基于k8s部署Mysql 参考&#xff1a;k8s部署mysql 我安装是去掉了卷挂载。安装过程可能出现磁盘容量不够&#xff0c;可以通过df -h查看。 镜像下载得比较慢&#xff0c;可以先用docker拉取镜像。 2.搭建SpringBoot项目 (1)搭建maven项目&#xff0c;pom.xml依赖如下&am…