复习Day2

AcWing 1214. 波动数列 - AcWing

 

 j+(n-1)*b与前i-1项的和模n余数相同:

记前i项的和为x,则有 x%n=j ,第i项为 -(n-1)b , 前i项的和为 x-(-(n-1)b)即 x+(n-1)b , 而 x+(n-1)b % n = j + (n-1)b % n
就是 x+(n-1)b 在模n的情况下同余于 x%n + (n-1)*b

对于加法,减法,乘法 什么时候取模不影响最终取模的结果

#include <bits/stdc++.h>
using namespace std;
const int N = 1010,MOD = 100000007;int f[N][N]; //设f[i][j]为前i个数的总和模n余数为j的集合数
int get_mod(int a,int b){ //求a除以b的  正余数return (a%b+b) % b;//记得要不断取模
}int main(){int n,s,a,b;cin >> n >> s >> a >> b;f[0][0] = 1;for(int i=1; i<n; ++i){//其实是n项 但是第一项未知 然后就从第2项a[1]开始for(int j=0; j<n; ++j){//余数f[i][j] = ( f[i-1][get_mod(j-a*(n-i),n)] + f[i-1][get_mod(j+b*(n-i),n)] ) % MOD;}}cout<<f[n-1][get_mod(s,n)]<<'\n';return 0;
}

1210. 连号区间数 - AcWing题库 

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+7;//二维数组不能完全输入的时候要检查一下是不是数组开的太大 
int n;
int a[N],b[N];
void solve(){int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];int cnt=n;//首先每个数单独是一个区间的话就是nfor(int i=1;i<n;i++){//左端点 int mx=max(a[i],a[i+1]);//确定一个最小值int mn=min(a[i],a[i+1]);//不断划动着更新 而不是每次都遍历for(int j=i+1;j<=n;j++){//右端点mx=max(mx,a[j]);mn=min(mn,a[j]);if((mx-mn+1)==j-i+1){//对于每一个区间 如果最大值-最小值+1==区间长度那才连续(解题重点)cnt++;}}}cout<<cnt;
}
signed main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t=1;while(t--)solve();return 0;
}

1236. 递增三元组 - AcWing题库 

//法1:库函数法
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+7;
int a[N],b[N],c[N];
signed main(){int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)cin>>b[i];for(int i=1;i<=n;i++)cin>>c[i];sort(a+1,a+n+1);sort(b+1,b+n+1);sort(c+1,c+n+1);int cnt=0;for(int i=1;i<=n;i++){//枚举b[i]找每个符合条件的a和c的下标 int pos1=lower_bound(a+1,a+n+1,b[i])-a;//找到第一个大于等于b[i]的位置 int pos2=upper_bound(c+1,c+n+1,b[i])-c;//找到第一个大于b的位置cnt+= (pos1-1)*(n-pos2+1);//pos1-1返回的是小于b[i]的个数 n-pos2+1返回的是大于b[i]的个数}cout<<cnt;return 0;
} 
//法2:前缀和
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+7;
int a[N],b[N],c[N];
int bulk1[N]={},bulk2[N]={},bulk3[N]={};
//bulk1[i]表示数字小于a[i]的数字的个数 
signed main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];bulk1[a[i]]++;}for(int i=1;i<=N;i++){bulk1[i]+=bulk1[i-1];}for(int i=1;i<=n;i++){cin>>b[i];bulk2[b[i]]++;}for(int i=1;i<=N;i++){bulk2[i]+=bulk2[i-1];}for(int i=1;i<=n;i++){cin>>c[i]; bulk3[c[i]]++;}for(int i=1;i<=N;i++){bulk3[i]+=bulk3[i-1];}int ans=0;for(int i=1;i<=n;i++){ans+=bulk1[b[i]-1]*(bulk3[N]-bulk3[b[i]]);}cout<<ans;return 0;
} 
//法3:双指针
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+7;
int a[N],b[N],c[N];
signed main(){int n;cin>>n;int ans=0;for(int i=1;i<=n;i++) scanf("%d", &a[i]);for(int i=1;i<=n;i++) scanf("%d", &b[i]);for(int i=1;i<=n;i++) scanf("%d", &c[i]);sort(a+1,a+n+1);sort(b+1,b+n+1);sort(c+1,c+n+1);int l=1,r=1;//双指针 一个指针用于a数组 一个指针用于b数组 for(int i=1;i<=n;i++){while(a[l]<b[i]&&l<=n)l++;//l用于记录目前小于b[i]的数的个数//l肯定是越来越大的          l最后落在了第一个>=b[i]的数上 while(c[r]<=b[i]&&r<=n)r++;//r用来记录小于等于b[i]的数的个数//r最后落在了一个>b[i]的数上 ans+=(l-1)*(n-r+1);} cout<<ans;return 0;
}

while(cin>>num) 

二维数组不能数组开的太大 

466. 回文日期 - AcWing题库

#include <bits/stdc++.h>
using namespace std;int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(int date){int year = date / 10000;int month = date % 10000 / 100;int day = date % 100;if (!month || month >= 13 || !day) return false;//月份不合法 日期和月份小的不合法if (month != 2 && day > months[month]) return false;//不是2月 还不满足条件就跳if (month == 2){bool leap = (year % 4 == 0 && year % 100 || year % 400 == 0);if (day > 28 + leap) return false;//二月}return true;
}int main(){int date1, date2;cin >> date1 >> date2;int res = 0;for (int i = 0; i < 10000; i ++ ){int x = i, r = i;//记录下来每个日期for (int j = 0; j < 4; j ++ ) r = r * 10 + x % 10, x /= 10;//r直接变成一个日期了if (r >= date1 && r <= date2 && check(r)) res ++ ;//在起止日期范围内 并且合法}printf("%d\n", res);return 0;
}

787. 归并排序 - AcWing题库 

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int n;
int a[N],tmp[N];void merge_sort(int q[],int l,int r){//1.结束条件 if(l>=r)return ;//2.分解为子问题 int mid=l+(r-l)/2;merge_sort(q,l,mid),merge_sort(q,mid+1,r);//3.对于每一个子问题 int k=0,i=l,j=mid+1;while(i<=mid&&j<=r){if(q[i]<=q[j])tmp[k++]=q[i++]; //用第一个数组的 else tmp[k++]=q[j++];//如果第二个数组的更小就用第二个数组的 }//4.扫尾while(i<=mid)tmp[k++]=q[i++];while(j<=r)tmp[k++]=q[j++];//5.还原一个子问题的区间l,r for(i=l,j=0;i<=r;i++,j++)q[i]=tmp[j]; }
void solve(){cin>>n;for(int i=0;i<n;i++)cin>>a[i];merge_sort(a,0,n-1);for(int i=0;i<n;i++)cout<<a[i]<<' ';
}
int main(){int t=1;while(t--)solve();return 0;
} 

 

#include <bits/stdc++.h>
using namespace std;
int w, m, n, y1, y2;
int main(){cin >> w >> m >> n;m --, n --; //每个数都减1便于求出行号列号int x1 = m / w, x2 = n / w; //计算两个数各自的行号(从0开始)int y1 = m % w, y2 = n % w; //计算两个数各自的列号(同上)if(x1 % 2)  y1 = w - 1 - y1; //若为奇数行,则要翻转一下if(x2 % 2)  y2 = w - 1 - y2;cout<<abs(x1 - x2) + abs(y1 - y2); //计算曼哈顿距离return 0;
}

1229. 日期问题 - AcWing题库 

 

#include <bits/stdc++.h>
using namespace std;
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool check_valid(int year, int month, int day){if (month == 0 || month > 12) return false;if (day == 0) return false;if (month != 2){if (day > days[month]) return false;}else{int leap = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));if (day > days[month] + leap) return false;}return true;
}
int main(){int a, b, c;scanf("%d/%d/%d", &a, &b, &c);for (int date = 19600101; date <= 20591231; date ++ ){int year = date / 10000, month = date % 10000 / 100, day = date % 100;if (check_valid(year, month, day)){if ((year % 100 == a && month == b && day == c) ||  // 年/月/日(month == a && day == b && year % 100 == c) ||  // 月/日/年(day == a && month == b && year % 100 == c) )   // 日/月/年printf("%d-%02d-%02d\n", year, month, day);  //补前导0//反正表示的不是同一天 符合一种即可}}return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int main(){int a=123;double b=1.987;printf("%llf",b);cout<<'\n';//默认六位 小数 printf("%llf",(double)a);cout<<'\n';//必须转换 printf("%.2llf",b);cout<<'\n';//默认六位小数 printf("%9.2llf",b);cout<<'\n';//共九个位置  前挖空,如果位置不够就无效 printf("%-9.2llf",b);cout<<'\n';//共九个位置  后挖空printf("%06d",a);cout<<'\n';//前补0共六位的return 0;
} 

 

 

 

 

 

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

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

相关文章

2024华为OD统一考试(C卷)最新题库(Java Python C++)

关于华为OD ​ 华为的员工补充途径有三种&#xff0c;分别是校招、OD转正和社招。校招是华为唯一的正式员工入职途径&#xff0c;但是从近几届开始竞争非常激烈&#xff0c;尤其是在CV、AI、NLP等赛道上&#xff0c;所以对于C9等专业的学生来说&#xff0c;可以考虑转向一些冷…

Linux镜像文件下载地址--SCAS 开源镜像站,速度快

SCAS 开源镜像站 https://mirror.iscas.ac.cn/举例&#xff1a; 下载centos7 Index of /centos/7/isos/x86_64/ (iscas.ac.cn)

ARM实验 LED流水灯

.text .global _start _start: 使能GPIOE GPIOF的外设时钟 RCC_MP_AHB4ENSETR的第[4][5]设置为1即可使能GPIOE GPIOF时钟 LDR R0,0X50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来&#xff0c;保存到R1中 ORR R1,R1,#(0x3<<4) 将第4位设置为1 S…

Linux网络协议栈从应用层到内核层②

文章目录 1、bind 源码剖析2、listen 源码剖析3、accept 源码剖析4、connect 源码剖析客户端调用connect成功&#xff0c;但三次握手并未完成&#xff0c;进程是如何阻塞自己客户端在connect时&#xff0c;如何选择源端口客户发送syn封包以及重传服务端收到syn封包&#xff0c;…

算法公式汇总

文章目录 三角函数定义式诱导公式平方关系两角和与差的三角函数积化和差公式和差化积公式倍角公式半角公式万能公式其他公式反三角函数恒等式 三角函数定义式 三角函数 定义式 余切&#xff1a; c o t A 1 t a n A \text { 余切&#xff1a;} \ cotA \frac{1}{tanA} 余切&a…

x-zse-96安卓端纯算,魔改AES还原

两天前发了一个x-zse-96的文章,当时遇到了点问题,只分析到了最后一个白盒AES函数里面,并且当时用dfa攻击还原出了秘钥,IV也确定了,但是加密结果不对,本来打算把下文鸽掉的,因为当时unidbg没跑起来,用frida去hook白盒AES中的每一行汇编有点麻烦,没有unidbg方便.后来小白大佬说un…

内网渗透(一)必须了解Windows工作组

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、内网渗透测试简介 内网也叫局域网&#xff0c;是指在…

《自动机理论、语言和计算导论》阅读笔记:p1-p4

《自动机理论、语言和计算导论》学习第1天&#xff0c;p1-p4&#xff0c;总计4页。这只是个人的学习记录&#xff0c;因为很多东西不懂&#xff0c;难免存在理解错误的地方。 一、技术总结 1.有限自动机(finite automata)示例 1.software for checking digital circuits。 …

工作需求,Vue实现登录

加油&#xff0c;新时代打工人&#xff01; vue 2.x Element UI <template><div class"body" :style"{background-image: url(${require(/assets/images/login.png)})}"><el-form :rules"rules" ref"loginForm" :mode…

MySQL 中的索引

MySQL 中的索引 一、索引的创建和删除1.主键会自动添加索引2.unique 约束的字段自动添加索引3.给指定的字段添加索引4.删除指定索引5.查询表上的索引 二、索引的分类三、MySQL索引采用了B树数据结构1.B树的经典面试题 四、其他索引及相关调优1.Hash索引2.聚集索引和非聚集索引3…

【linux线程(四)】初识线程池手撕线程池

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux线程池 1. 前言2. 什么是…

Python 从0开始 一步步基于Django创建项目(3)使用Admin site管理数据模型

本文内容建立在《Python 从0开始 一步步基于Django创建项目&#xff08;2&#xff09;创建应用程序&数据模型》的基础上。 Django提供的admin site&#xff0c;使得网站管理员&#xff0c;能够轻松管理网站的数据模型。 本文首先创建‘管理员账户’&#xff0c;即超级用户…

华为OD机22道试题

华为OD机试题 2.查找小朋友的好朋友位置 在学校中&#xff0c;N 个小朋友站成一队&#xff0c;第 i 个小朋友的身高为 height[i]&#xff0c;第 i 个小朋友可以看到第一个比自己身高更高的小朋友j&#xff0c;那么 j 是 i 的好朋友 (要求&#xff1a;j>i) 。 请重新生成一个…

202305 CSP认证

202305-1 重复局面 第一题直接干 #include<bits/stdc.h> using namespace std; unordered_map<string, int> chess; int main() {ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);string line, str ""; int n;cin >> n;while(n --){str …

数据结构:链式队列

1.设计思想&#xff1a; 我们可以设计出以上五种队列&#xff0c;但是基于时间复杂度&#xff0c;和空间复杂度的最优解&#xff0c;我们选择入队和出队均为O(1)的&#xff0c;也就是第五种 2.结构设计 typedef struct LPNode//数据节点 {int data;//数据struct LPNode* next…

Redis消息队列与thinkphp/queue操作

业务场景 场景一 用户完成注册后需要发送欢迎注册的问候邮件、同时后台要发送实时消息给用户对应的业务员有新的客户注册、最后将用户的注册数据通过接口推送到一个营销用的第三方平台。 遇到两个问题&#xff1a; 由于代码是串行方式&#xff0c;流程大致为&#xff1a;开…

基于STC12C5A60S2系列1T 8051单片机可编程计数阵列CCP/PCA/PWM模块的捕获模式(外部中断)应用

基于STC12C5A60S2系列1T 8051单片机可编程计数阵列CCP/PCA/PWM模块的捕获模式(外部中断)应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍STC12C5A60S2系列1T 805…

【Langchain-Chatchat】部署ChatGLM3-6B-32K教程

介绍 Langchain-Chatchat这个框架可以帮助我们更容易的部署大语言模型&#xff0c;之前也写过ChatGLM传统的部署教程&#xff0c;有兴趣的可以参考 【ChatGLM3】第三代大语言模型多GPU部署指南【ChatGLM2-6B】从0到1部署GPU版本 借助Langchain-Chatchat框架&#xff0c;可以…

32串口学习

基于之前的GPIO等工程&#xff0c;后面的上手难度就简单多了&#xff0c;主要是相关寄存器的设置。 void USART1_Config(void) {GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* config USART1 clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph…

计算机网络:信道复用技术概念解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…