$NOIP2012$ 题解报告
时间:2019-11-05
本文章向大家介绍$NOIP2012$ 题解报告,主要包括$NOIP2012$ 题解报告使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
目录
$Luogu\ P1079$ $Vigenère$密码$(\ √\ )$
$Luogu\ P1080$ 国王游戏$(\ √\ )$
$Luogu\ P1081$ 开车旅行( )
$Luogu\ P1082$ 同余方程$(\ √\ )$
$Luogu\ P1083$ 借教室( )
$Luogu\ P1084$ 疫情控制( )
$Luogu\ P1079$ $Vigenère$密码
很水的模拟题,注意看清题目!
1 #include<bits/stdc++.h> 2 #define ri register int 3 #define ll long long 4 #define rl register ll 5 #define go(i,a,b) for(ri i=a;i<=b;i++) 6 #define back(i,a,b) for(ri i=a;i>=b;i--) 7 #define g() getchar() 8 #define il inline 9 #define pf printf 10 #define mem(a,b) memset(a,b,sizeof(a)) 11 using namespace std; 12 il int fr(){ 13 ri w=0,q=1;char ch=g(); 14 while(ch<'0'||ch>'9'){if(ch=='-')q=-1;ch=g();} 15 while(ch>='0'&&ch<='9')w=(w<<1)+(w<<3)+ch-'0',ch=g(); 16 return w*q; 17 } 18 char k[102],s1[1002],s2[1002]; 19 int n,m,add='a'-'A'; 20 il char cal(char x,char y){ 21 bool type=0;char ans; 22 //cout<<"x="<<x<<" y="<<y<<endl; 23 int X,Y; 24 if(y>='a'&&y<='z')type=1,Y=y-add-'A'; 25 else Y=y-'A'; 26 if(x>='a'&&x<='z')X=x-add-'A'; 27 else X=x-'A'; 28 //cout<<"X="<<X<<" Y="<<Y<<endl; 29 if(type)ans=(char)(Y-X+26)%26+add+'A'; 30 else ans=(char)(Y-X+26)%26+'A'; 31 //while(ans<0)ans+=26; 32 //cout<<"ans="<<ans<<endl; 33 return ans; 34 } 35 int main(){ 36 freopen("1.in","r",stdin); 37 freopen("1.out","w",stdout); 38 scanf("%s",k);n=strlen(k); 39 scanf("%s",s1);m=strlen(s1); 40 //cout<<"A="<<(int)'A'<<" a="<<(int)'a'<<" add="<<add<<endl; 41 //char c=(char)87;cout<<"c="<<c<<endl; 42 go(i,0,m-1)s2[i]=cal(k[i%n],s1[i]); 43 go(i,0,m-1)pf("%c",s2[i]);puts(""); 44 return 0; 45 }
$Luogu\ P1080$ 国王游戏
贪心经典例题,注意是根据什么排序的
1 #include<bits/stdc++.h> 2 using namespace std; 3 inline int read() 4 { 5 int ret=0,f=1; 6 char ch=getchar(); 7 while(ch>'9'||ch<'0') 8 { 9 if(ch=='-') 10 f=-1; 11 ch=getchar(); 12 } 13 while(ch>='0'&&ch<='9') 14 { 15 ret=(ret<<1)+(ret<<3)+ch-'0'; 16 ch=getchar(); 17 } 18 return ret*f; 19 } 20 int n,lens=1,lenm=1,lena=1,sum[10005]={0,1},maxn[10005]={0,1},ans[10005]; 21 struct node 22 { 23 int a; 24 int b; 25 }s[1005]; 26 inline bool cmp(node x,node y) 27 { 28 return x.a*x.b<y.a*y.b; 29 } 30 inline void mul(int x) 31 { 32 int tmp=0; 33 for(register int i=1;i<=lens;i++) 34 sum[i]*=x; 35 for(register int i=1;i<=lens;i++) 36 { 37 tmp+=sum[i]; 38 sum[i]=tmp%10; 39 tmp/=10; 40 } 41 while(tmp) 42 { 43 lens++; 44 sum[lens]=tmp%10; 45 tmp/=10; 46 } 47 } 48 inline void div(int x) 49 { 50 memset(ans,0,sizeof(ans)); 51 lena=lens; 52 int tmp=0; 53 for(register int i=lena;i;i--) 54 { 55 tmp*=10; 56 tmp+=sum[i]; 57 if(tmp>=x) 58 { 59 ans[i]=tmp/x; 60 tmp%=x; 61 } 62 } 63 while(ans[lena]==0) 64 { 65 if(lena==1) 66 break; 67 lena--; 68 } 69 } 70 inline void cmp1() 71 { 72 if(lena>lenm) 73 { 74 for(register int i=1;i<=lena;i++) 75 maxn[i]=ans[i]; 76 lenm=lena; 77 } 78 else if(lenm==lena) 79 { 80 for(register int i=lena;i;i--) 81 { 82 if(maxn[i]<ans[i]) 83 { 84 for(register int j=1;j<=lena;j++) 85 maxn[j]=ans[j]; 86 lenm=lena; 87 break; 88 } 89 } 90 } 91 } 92 inline void write() 93 { 94 for(register int i=lenm;i;i--) 95 printf("%d",maxn[i]); 96 } 97 int main() 98 { 99 n=read(); 100 s[0].a=read(); 101 s[0].b=read(); 102 for(register int i=1;i<=n;i++) 103 { 104 s[i].a=read(); 105 s[i].b=read(); 106 } 107 sort(s+1,s+n+1,cmp); 108 for(register int i=1;i<=n;i++) 109 { 110 mul(s[i-1].a); 111 div(s[i].b); 112 cmp1(); 113 } 114 write(); 115 return 0; 116 }
$Luogu\ P1081$ 开车旅行
之前写过一篇题解,贴个$link\to$戳这里
代码还没过$QAQ$
$Luogu\ P1082$ 同余方程
扩展欧几里德模板
1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 ll a,b,x,y; 5 ll exgcd(ll a,ll b,ll &x,ll &y){ 6 if(!b) {x=1;y=0;return a;} 7 ll d=exgcd(b,a%b,x,y); 8 ll z=x;x=y;y=z-y*(a/b); 9 return d; 10 } 11 int main(){ 12 cin>>a>>b; 13 ll ans=exgcd(a,b,x,y); 14 cout<<(x%b+b)%b<<endl; 15 return 0; 16 }
$Luogu\ P1083$ 借教室
$Luogu\ P1084$ 疫情控制
原文地址:https://www.cnblogs.com/THWZF/p/11799739.html
- DBCA静默建库中的两个小问题 (r9笔记第28天)
- dataframe进行常用统计、分组统计平均绝对偏差等操作函数。
- Java案例-判断随机整数是否是素数
- Go语言实现猜数字小游戏的方法
- go lang连接mysql数据库
- Java案例-打印九宫格
- 【Go 语言社区】算法课程 第一季 第4节 100以内的素数
- Java案例-数组求余问题
- GO语言实现的端口扫描器分享
- Java案例-数组随机数
- Go语言图片处理和生成缩略图的方法
- Python3 怎么将Unicode转中文,以及GBK乱码ÖйúÉÙÊýÃñ×åÌØÉ«´åÕ¯
- 数据结构和算法——旋转打印链表
- C/C++——set的基本操作总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承
- 【赵渝强老师】Flink的DataSet算子
- Node.js 案发现场揭秘 —— 文件句柄泄露导致进程假死
- nacos配置问题
- Chevereto 配合 Picgo 打造个人相册/图床解决方案
- 从提高 Elasticsearch 搜索体验说开去......
- 又一个奇葩要求,Python是如何将“中文”转“拼音”的?
- localStorage中怎么存对象?
- vue中sessionStorage的使用
- 别再问我 Python 怎么识别数字验证码了!
- Java 多线程设计模式 —— Single Threaded Execution
- SAP Spartacus默认的baseSite是从源代码什么地方读取的
- SAP Spartacus CmsPage的加载逻辑
- JUnit 5 测试 Spring 引擎的时候提示 junit-vintage 错误
- SAP Spartacus activeBaseSite的设置逻辑