[OI模拟赛]2017.8.19 Day1_weixin_30518397的博客-程序员宅基地

技术标签: 数据结构与算法  

T1 小Z的情书

题目链接

思考:

题目主要难度在于旋转后的位置如何,在手写了样例之后不难发现规律。

 

#include <cstdio>
#include <cstring>


#define up(a,b,c) for(register int c=a;c<=b;++c)
#define down(a,b,c) for(register int c=a;c>=b;--c)

const int Maxn=1005;

int n;
bool Map[Maxn][Maxn],Use[Maxn][Maxn];
char Letter[Maxn][Maxn];

void init(){
    scanf("%d",&n);
    up(1,n,i){
        char s[Maxn];
        scanf("%s",s+1);
        up(1,n,j){
            if(s[j]=='O') Map[i][j]=1;
        }
    }
    
    up(1,n,i){
        scanf("%s",Letter[i]+1);
    }
}

void Run(bool Map[1005][1005]){
    up(1,n,i){
        up(1,n,j){
            if(Map[i][j]) printf("%c",Letter[i][j]);
        }
    }
}

void XuanZhuan(){
    up(1,n,i){
        up(1,n,j){
            Use[j][n+1-i]=Map[i][j];
        }
    }
}

void Fuck(){
    up(1,n,i){
        up(1,n,j){
            Map[j][n+1-i]=Use[i][j];
        }
    }
}
int main(){
    freopen("loveletter.in","r",stdin);
    freopen("loveletter.out","w",stdout);
    init();
    Run(Map);
    XuanZhuan();
    Run(Use);
    Fuck();
    Run(Map);
    XuanZhuan();
    Run(Use);
    return 0;
}

 

 

T2 小Z的笔记

题目链接

思考:

dp[i]表示前i个字符串最大保留数 last是每个字母保留的最大数量

 

#include <cstdio>
#include <algorithm>
#include <cstring>

#define up(a,b,c) for(register int c=a;c<=b;++c)

int n,m,last[100005],dp[100005],Out,first[100005];
char s[100005],second[10];
bool vis[500][500];

int main(){
    scanf("%d",&n);
    scanf("%s",s+1);
    for(int i=1;i<=n;i++) first[i] = s[i]-'a';
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        scanf("%s",second+1);
        vis[second[1]-'a'][second[2]-'a']=vis[second[2]-'a'][second[1]-'a']=1;
    }
    for(int i=1;i<=n;i++){
        dp[i]=1;
        for(int j=0;j<26;j++)
            if(!vis[j][first[i]]) dp[i]=std::max(dp[i],last[j]+1);
        last[first[i]] = std::max(last[first[i]],dp[i]);
        Out = std::max(Out,dp[i]);
    }
    printf("%d\n",n-Out);
    return 0;
    
}

 

 

 

T3 小Z的栈函数

题目链接

 

思考:

大模拟题目,放到T3真的好吗?

两个易错点:

1.栈中数字出现大雨1e9的

2.栈中为空,但是却要取出数字。

附上我260的代码。。

  1 #include <cstdio>
  2 #include <algorithm>
  3 #include <cstring>
  4 #include <string>
  5 #include <stack>
  6 #include <cmath>
  7 #include <iostream>
  8 
  9 using namespace std;
 10 
 11 struct node{
 12     long long num;
 13     string Code;
 14 }Run[2005];
 15 stack<long long>st;
 16 int tot,n;
 17 bool flag;
 18 bool made;
 19 
 20 
 21 inline bool Can(){
 22     if(st.empty()) return false;
 23     else return true;
 24 }
 25 
 26 inline void PrintError(){
 27     cout<<"ERROR"<<endl;
 28     made=1;
 29     return;
 30 }
 31 
 32 void NUM(long long x){
 33     st.push(x);
 34 }
 35 
 36 void INV(){
 37     if(Can()){
 38         long long x = st.top();
 39         st.pop();
 40         st.push(-x);
 41     }
 42     else{
 43         PrintError();
 44     }
 45 }
 46 
 47 void POP(){
 48     if( Can() ) st.pop();
 49     else PrintError();
 50 }
 51 
 52 void DUP(){
 53     if( Can() ){
 54         long long x = st.top();
 55         st.push(x);
 56     }
 57     else PrintError();
 58 }
 59 
 60 void ADD(){
 61     if( Can() ){
 62         //cout<<"!!!!!"<<st.size()<<endl;
 63         long long x = st.top();
 64         st.pop();
 65         if( Can() ){
 66             //cout<<st.size()<<endl;
 67             long long y = st.top();
 68             long long tot = x+y;
 69             st.pop();
 70             if(abs(tot)>1000000000) {
 71             //cout<<"Fuck"<<endl;
 72             PrintError();
 73             return;
 74             }
 75             st.push(tot);
 76 
 77         }
 78         else PrintError();
 79     }
 80     else PrintError();
 81 }
 82 
 83 void MUL(){
 84     if( Can() ){
 85         long long x = st.top();
 86         st.pop();
 87         if( Can() ){
 88             long long y = st.top();
 89             long long tot = x*y;
 90             st.pop();
 91             if(abs(tot)>1000000000) {
 92             PrintError();
 93             return;
 94             }
 95             st.push(tot);
 96         }
 97         else PrintError();
 98     }
 99     else PrintError();
100 }
101 
102 void DIV(){
103     if( Can() ){
104         long long x = st.top();
105         if(x==0){
106             PrintError();
107             return;
108         }
109         st.pop();
110         if( Can() ){
111             long long y = st.top();
112             long long tot = y/x;
113             st.pop();
114             if(abs(tot)>1000000000) {
115             PrintError();
116             return;
117             }
118             st.push(tot);
119         }
120         else PrintError();
121     }
122     else PrintError();
123 }
124 
125 void MOD(){
126     if( Can() ){
127         long long x = st.top();
128         
129         if(x==0){
130             PrintError();
131             return;
132         }
133         
134         st.pop();
135         if( Can() ){
136             //cout<<st.size()<<" "<<"!!!!"<<endl;
137             long long y = st.top();
138             long long tot = y%x;
139             //cout<<tot<<" "<<"!!!!"<<endl;
140             st.pop();
141             if(abs(tot)>1000000000) {
142             PrintError();
143             return;
144             }
145             st.push(tot);
146         }
147         else PrintError();
148     }
149     else PrintError();
150 }
151 
152 void SUB(){
153     if( Can() ){
154         long long x = st.top();
155         st.pop();
156         if( Can() ){
157             long long y = st.top();
158             long long tot = y-x;
159             st.pop();
160             if(abs(tot)>1000000000) {
161             PrintError();
162             return;
163             }
164             st.push(tot);
165         }
166         else PrintError();
167     }
168     else PrintError();    
169 }
170 
171 void SWP(){
172     if( Can() ){
173         long long x = st.top();
174         st.pop();
175         if( Can() ){
176             long long y = st.top();
177             st.pop();
178             st.push(x);
179             st.push(y);
180         }
181         else PrintError();
182     }
183     else PrintError();
184 }
185 
186 void run(){
187     for(int i=1;i<=tot;i++){
188         //cout<<Run[50].Code<<endl;
189         if(Run[i].Code=="NUM"){
190             NUM(Run[i].num);
191         }
192         else if(Run[i].Code=="POP"){
193             POP();
194         }
195         else if(Run[i].Code=="INV"){
196             INV();
197         }
198         else if(Run[i].Code=="DUP"){
199             DUP();
200         }
201         else if(Run[i].Code=="SWP"){
202             SWP();
203         }
204         else if(Run[i].Code=="ADD"){
205             ADD();
206         }
207         else if(Run[i].Code=="SUB"){
208             SUB();    
209         }
210         else if(Run[i].Code=="MUL"){
211             MUL();
212         }
213         else if(Run[i].Code=="MOD"){
214             MOD();
215         }
216         else if(Run[i].Code=="DIV"){
217             DIV();
218         }
219         if(made==1) return;
220     }
221     //cout<<st.size()<<"!!!!!"<<endl;
222     
223     if(st.size()==1){
224         //cout<<"FFFFFFFFFFFFFF"<<endl;
225         cout<<st.top()<<endl;
226     }
227     else PrintError();
228 }
229 
230 int main(){
231     std::ios::sync_with_stdio(false);
232     std::cin.tie(0);
233     string Start;
234     while(cin>>Start){
235         if(Start=="END") break;
236         
237         if(Start=="NUM"){
238             long long fuck;
239             cin>>fuck;
240             if(abs(fuck)>1000000000) flag=1;
241             if(!flag) Run[++tot].num = fuck;
242             Run[tot].Code = Start;
243         }
244         else{
245             Run[++tot].Code= Start;
246         }
247     }
248     //cout<<Run[51].Code<<"!!!!"<<endl;
249     cin>>n;
250     while(n--){
251         made=0;
252         while(!st.empty()) st.pop();
253         long long x;
254         cin>>x;
255         if(abs(x)>1000000000){
256             PrintError();
257         }
258         else {
259             //cout<<st.size()<<"!!!!"<<endl;
260             st.push(x);
261             run();
262         }
263     }
264     return 0;
265 }
又长又臭的代码

 

 

整体思考

本次模拟赛难度整体为 普及+  ,但是个人在第2题DP发挥实在太烂,第三题细节没有考虑到。导致本次模拟赛110分。

看来多写题,多思考。少抄题解,多参加模拟赛才能治颓治弱啊~

转载于:https://www.cnblogs.com/OIerLYF/p/7400816.html

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

智能推荐

粗糙集(Roug Set)属性约简源代码(C/C++实现)Part6 DecisionTable.cpp_Sailor_Kenny_Xiong的博客-程序员宅基地

#include"DecisionTable.h"//决策表DT=(U, CUD, V, f)类实现------------------------------------------------int DecisionTable::iNo = 0;DecisionTable::DecisionTable(){ this->SerialNumberOfElement = 0;}vect

FFMPEG入门系列01-QT+FFMPEG4.0 Windows开发环境搭建_weixin_34378767的博客-程序员宅基地

Windows环境搭建FFMPEG官网:http://ffmpeg.org4.0.2版本源码源码:&lt;https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2&amp;gt;4.0.2编译好的文件下载已经编译好的FFMPEG网址:https://ffmpeg.zeranoe.com/builds/32位下载地址:Shared:包含FFM...

谷歌浏览器驱动国内镜像下载地址_ASS-ASH的博客-程序员宅基地_谷歌驱动下载

谷歌驱动(driverchrome.exe)国内镜像下载地址:http://npm.taobao.org/mirrors/chromedriver/Windows、Linux、MAC系统均可下载下载解压,放到C:\Program Files (x86)\Google\Chrome\Application(自己的谷歌浏览器安装路径)下即可...

css--a铺满整个li + hover使用注意事项_Liu小芒的博客-程序员宅基地

ul嵌套li嵌套的布局导航栏在日常css写导航栏中,我们常常用到这样的搭配&lt;div&gt; &lt;ul&gt; &lt;li&gt;&lt;a&gt;内容&lt;a/&gt;&lt;li/&gt; ... &lt;ul/&gt;&lt;div/&gt;当我们限制了div的大小之后,里面的子元素的长宽会根据自己的变化而设定好了。这样就会呈现出,a比li小,li的总值合起来比ul小的问题。而且a标签的默认是,只有有字体的内容部分才是a的长宽

图片处理+高速计算机配置,谁能给我推荐个专业处理图片的计算机配置么_赵伊辰的博客-程序员宅基地

谁能给我推荐个专业处理图片的计算机配置么來源:互聯網2009-09-07 05:01:42評論分類: 電腦/網絡問題描述:价钱在5000-6000之间。參考答案:CPU 64位Pentium 4 630 (散) | 1,030.00风扇 Tt火星9 | 95.00主板 升技 IL8 ...

Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform an..._weixin_33991418的博客-程序员宅基地

系统启动,一段时间不操作,然后在来操作时,报错如下:Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform any operations on this connection. It has been automatically closed by Prox...

随便推点

Java调用短信API 发送短信 demo示例 (保存,没有测试)_DreamWeaver_Zhou的博客-程序员宅基地

java调用短信api接口发送短信demo实例import org.apache.commons.httpclient.Header;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.NameValuePair;import org.apache.commons.httpclie...

eclipse找不到dynamic_eclipse下没有Dynamic Web Project的处理方法_汪汪小朋友的博客-程序员宅基地

eclipse版本:eclipse-java-oxygen-R-win32-x86_64.zipname=Eclipse Platformid=org.eclipse.platformversion=4.7.0解决办法:为当前的eclipse安装Java EE开发插件点击菜单栏的 Help -&gt; Install New Software:安装向导被打开。在安装向导的窗口, 点击”WorkW...

当数据类型为long的变量后面没有L加会有什么后果_大数据球球的博客-程序员宅基地_long类型不加l

见下面两题:将本实验的实验内容1中的        long l=3615L; 改为: long l=3615;  会出现什么情况?为什么?  4.将本实验的实验内容1中的        float f=0.23F; 改为: float f=0.23; 会出现什么情况?为什么?不加L默认是int,int转为long是安全的,所以会自动转,

MySQL 报错1040 ‘Too many connections‘ 原因及解决方案_爱的太深,太认真的博客-程序员宅基地_数据库1040

MySQL 报错1040 ‘Too many connections’报错原因:实际连接数超过了mysql 允许的最大连接数,访问量过高,MySQL服务器抗不住。解决办法1、修改max_connections,如果这个值已经很大,2、这个时候就要考虑增加从服务器分散读压力;Windows 找到mysql.ini(Linux 修改/etc/my.cnf文件,在[mysqld]中新增max_connections=N)。修改允许最大连接数max_connections=N,默认是100 一般设置到50

深度学习Pytorch(十一)——微调torchvision模型(1)_柚子味的羊的博客-程序员宅基地_torchvision 模型

深度学习Pytorch(十一)——微调torchvision模型文章目录深度学习Pytorch(十一)——微调torchvision模型在本小节,深入探讨如何对

TensorBoard的运用_隐终的博客-程序员宅基地

使用方式:1、用TensorFlow保存图的信息到日志中tf.summary.FileWriter(&quot;路径&quot;,sess.graph)2、用TensorBoard读取并展示日志tensorboard --logdir=路径TensorBoard图标:eg:tensorboard --logdir=/tmp/hello(要注意的是,浏览器会使用6006端口)import tensorflow as t...

推荐文章

热门文章

相关标签