2018SCin tsyzDay1 模拟赛-模拟
预计得分:70+0+0+100+100+100+100=470
实际得分:70+0+0+30+100+0+40=240
第一天就被模拟虐爆qwq
T1
https://www.luogu.org/problemnew/show/P1205
因为是找最小的,所以分别把每个操作改变后的数和要求矩阵中的数比较即可。
找到合适的退出即可。
每个操作中都有一些细节,不难,慢慢推就可推出。
§ 在luogu上测的时候因为是linux系统,故用getchar崩了,noip时切忌用getchar,防止出现意外。
§ 函数也能传二维数组,只是要声明清楚第二维的范围,如void change(char s1[][10]),所以还是不传的好,防止出现意外。
code
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int n;
- bool flag;
- char a[][],b[][],c[][];
- void read()
- {
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- cin>>a[i][j];
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- cin>>b[i][j];
- }
- void doit1()
- {
- for(int j=;j<=n;j++)
- for(int i=n;i>=;i--)
- {
- if(a[i][j]!=b[j][n-i+])
- {
- flag=false;
- break;
- }
- }
- }
- void doit2()
- {
- for(int i=n;i>=;i--)
- for(int j=n;j>=;j--)
- {
- if(a[i][j]!=b[n-i+][n-j+])
- {
- flag=false;
- break;
- }
- }
- }
- void doit3()
- {
- for(int j=n;j>=;j--)
- for(int i=;i<=n;i++)
- {
- if(a[i][j]!=b[n-j+][i])
- {
- flag=false;
- break;
- }
- }
- }
- void doit51()
- {
- for(int j=;j<=n;j++)
- for(int i=n;i>=;i--)
- {
- if(c[i][j]!=b[j][n-i+])
- {
- flag=false;
- break;
- }
- }
- }
- void doit52()
- {
- for(int i=n;i>=;i--)
- for(int j=n;j>=;j--)
- {
- if(c[i][j]!=b[n-i+][n-j+])
- {
- flag=false;
- break;
- }
- }
- }
- void doit53()
- {
- for(int j=n;j>=;j--)
- for(int i=;i<=n;i++)
- {
- if(c[i][j]!=b[n-j+][i])
- {
- flag=false;
- break;
- }
- }
- }
- int main()
- {
- //freopen("transform.in","r",stdin);
- //freopen("transform.out","w",stdout);
- scanf("%d",&n);
- read();
- flag=true;
- doit1();
- if(flag)
- {
- printf("");
- return ;
- }
- flag=true;
- doit2();
- if(flag)
- {
- printf("");
- return ;
- }
- flag=true;
- doit3();
- if(flag)
- {
- printf("");
- return ;
- }
- flag=true;
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- {
- if(b[i][j]!=a[i][n-j+])
- {
- flag=false;
- break;
- }
- }
- if(flag)
- {
- printf("");
- return ;
- }
- flag=true;
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- c[i][j]=a[i][n-j+];
- doit51();
- if(flag)
- {
- printf("");
- return ;
- }
- flag=true;
- doit52();
- if(flag)
- {
- printf("");
- return ;
- }
- flag=true;
- doit53();
- if(flag)
- {
- printf("");
- return ;
- }
- flag=true;
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- {
- if(a[i][j]!=b[i][j])
- {
- flag=false;
- break;
- }
- }
- if(flag)
- {
- printf("");
- return ;
- }
- printf("");
- fclose(stdin);
- fclose(stdout);
- return ;
- }
T2
轮换的顺序是从右到左。
开始测试的时候乘积没有看懂,果断放弃这题....
T3
https://www.luogu.org/problemnew/show/P1459
这道题三月份做过,今天忘的很惨...故一定要把做过的题随时做都能对!
从这题我们可以得出,分析问题可以分类它有限的情况----
排好序后一定分为三个区间,那么错排的数只有这几种情况:
1 在区间2中出现了数字1,而数字2到了区间1
2 在区间3中出现了数字1,而数字3到了区间1
3 在区间3中出现了数字2,而数字2到了区间3
4 一个数字1跑到了区间2,同时区间2中的一个数字2跑到了区间3,区间3中的一个数字3跑到了区间1
5 一个数字1跑到了区间3,同时区间3中的一个数字3跑到了区间2,区间2中的一个数字2跑到了区间1
其中,前三种情况进行改变只需要操作1次,而后两种操作进行改变需要2次。
那么我们可以贪心地先尽量搞前三种操作,最后在解决后两种操作。
在解决前三种操作后,大体的顺序已经出来了,只剩几个毒瘤没有回家的数。实质上我们把三个数作为一组,改变每一组需要两次操作。
code
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- int n,ans,tmp,o,p,q;
- int a[];
- int main()
- {
- freopen("sort.in","r",stdin);
- freopen("sort.out","w",stdout);
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- scanf("%d",&a[i]);
- if(a[i]==) o++;
- if(a[i]==) p++;
- }
- p=p+o;
- for(int i=;i<=o;i++)
- {
- if(a[i]!=) continue;
- for(int j=o+;j<=p;j++)
- if(a[j]==)
- {
- ans++;
- swap(a[i],a[j]);
- break;
- }
- }
- for(int i=;i<=o;i++)
- {
- if(a[i]!=) continue;
- for(int j=p+;j<=n;j++)
- if(a[j]==)
- {
- ans++;
- swap(a[i],a[j]);
- break;
- }
- }
- for(int i=o+;i<=p;i++)
- {
- if(a[i]!=) continue;
- for(int j=p+;j<=n;j++)
- if(a[j]==)
- {
- ans++;
- swap(a[i],a[j]);
- break;
- }
- }
- for(int i=;i<=o;i++) if(a[i]!=) tmp++;
- for(int i=o+;i<=p;i++) if(a[i]!=) tmp++;
- for(int i=p+;i<=n;i++) if(a[i]!=) tmp++;
- ans+=tmp*/;
- printf("%d",ans);
- fclose(stdin);
- fclose(stdout);
- return ;
- }
§ o,p是记录为1的数有几个、为2的数有几个的变量,实际应用时我们却把它看成了区间上的点。因此使用时先让p+=o;
§ 进行前三次操作时,找到一个就break即可。
T4
极水。但是没开long long 。。。。。。
没开long long。。。。。
long long。。。。。。
code
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- long long n,ans;
- long long a[];
- int main()
- {
- freopen("simple.in","r",stdin);
- freopen("simple.out","w",stdout);
- scanf("%d",&n);
- for(int i=;i<=*n;i++)
- scanf("%lld",&a[i]);
- sort(a+,a+*n+);
- for(int i=;i<=*n;i+=)
- ans+=a[i];
- printf("%lld",ans);
- fclose(stdin);
- fclose(stdout);
- return ;
- }
T5
做的第一题,极水,但要考虑交20元时,有找3个5元或1个5元1个10元的情况。
code
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- int n;
- int t1,t2;
- bool flag;
- int main()
- {
- freopen("book.in","r",stdin);
- freopen("book.out","w",stdout);
- scanf("%d",&n);
- flag=true;
- for(int i=;i<=n;i++)
- {
- int x=;
- scanf("%d",&x);
- if(flag)
- {
- if(x==) t1++;
- if(x==)
- if(t1) t2++,t1--;
- else flag=false;
- if(x==)
- if(t1&&t2) t2--,t1--;
- else if(t1>=) t1-=;
- else flag=false;
- }
- }
- if(flag) printf("YES");
- else printf("NO");
- fclose(stdin);
- fclose(stdout);
- return ;
- }
T6
没用到hash表/map,用的结构体。思路对,但是实现复杂,所以错了。而且空间开小了。
code
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- int n,tot,ans=0x3f3f3f3f,tmp,f;
- struct node{
- int val;//num没有必要
- bool flag;
- }a[];
- //开2倍
- bool cmp(node p,node q)
- {
- return p.val<q.val;
- }
- int main()
- {
- freopen("card.in","r",stdin);
- freopen("card.out","w",stdout);
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- int ai=,bi=;
- scanf("%d%d",&ai,&bi);
- if(ai==bi)
- {
- a[++tot].val=ai,a[tot].flag=;
- }
- else a[++tot].val=ai,a[tot].flag=,a[++tot].val=bi,a[tot].flag=;
- }
- sort(a+,a+tot+,cmp);
- /* for(int i=1;i<=tot;i++) printf("%d ",a[i].val);printf("\n");
- for(int i=1;i<=tot;i++) printf("%d ",a[i].num); */
- for(int i=;i<=tot;i++)
- {
- tmp++;
- if(a[i].flag==) f++;//两个量每次先记录。
- if(a[i].val!=a[i+].val)
- {
- if(tmp>=(n+)/)
- {
- int d=((n+)/-f);//减去正面的,就是需要翻的。
- if(d<) d=;
- ans=min(ans,d);
- }
- tmp=,f=;
- }
- }
- if(ans==0x3f3f3f3f)
- {
- printf("Impossible");
- return ;
- }
- printf("%d",ans);
- fclose(stdin);
- fclose(stdout);
- return ;
- }
T7
我4月份的时候写了这题的题解!!!!
https://www.luogu.org/problemnew/solution/P3056
-------然而还是忘了。
code
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<stack>
- using namespace std;
- int len,l,r,ans;
- char ch[];
- stack<char>s;
- int main()
- {
- freopen("shower.in","r",stdin);
- freopen("shower.out","w",stdout);
- scanf("%s",ch+);
- int len=strlen(ch+);
- for(int i=;i<=len;i++)
- {
- if(ch[i]=='(') s.push(ch[i]);
- if(ch[i]==')')
- {
- if(!s.empty())
- s.pop();
- else s.push('('),r++;
- }
- }
- ans=r+s.size()/;
- printf("%d",ans);
- fclose(stdin);
- fclose(stdout);
- return ;
- }
2018SCin tsyzDay1 模拟赛-模拟的更多相关文章
- 4.28 省选模拟赛模拟赛 最佳农场 二维卷积 NTT
第一次遇到二维卷积 不太清楚是怎么做的. 40分暴力比对即可. 对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可. 考虑这是一个二维的比对过程. 设\(f_{i,j}\)表示以i,j为右 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
- PKUSC 模拟赛 day1 下午总结
下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...
- [GRYZ]寒假模拟赛
写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...
随机推荐
- Spring Boot中实现logback多环境日志配置
在Spring Boot中,可以在logback.xml中的springProfile标签中定义多个环境logback.xml: <springProfile name="produc ...
- Spring Boot使用Feign客户端调用远程服务时出现:timed-out and no fallback available,failed and no fallback available的问题解决
timed-out and no fallback available: 这个错误基本是出现在Hystrix熔断器,熔断器的作用是判断该服务能不能通,如果通了就不管了,调用在指定时间内超时时,就会通过 ...
- Java的变量类型
以下内容引用自http://wiki.jikexueyuan.com/project/java/variable-types.html: 一个变量提供了程序可以操作的命名存储.Java中的每个变量都有 ...
- Windows下SVN服务器及客户端的使用
原文地址:windows下配置VisualSVN Server服务器 作者:Deem_passion 下载安装文件: 服务端安装文件:VisualSVN-Server-1.6.2 客户端安装文件:To ...
- delphi 的结构体对齐关键字
Align fields (Delphi) Go Up to Delphi Compiler Directives (List) Index Type Switch Syntax {$A+}, { ...
- Python函数参数传递
Python中函数参数的传递是采用传值方式,但是和C/C++有所不同 C/C++方式 void fun(int a) { a = 10; } void main() { int c =3; fun(c ...
- VTMagic的使用
// VTMagic的使用 // CFOrderViewController.m // qifuyuniOS //// /** * @author 李洪强, 16-08-30 10:08:50 ...
- 在CentOS上把Nginx从1.2.4升级到1.6.0
在CentOS上升级把Nginx从1.2.4升级到1.6.0 摘要:本文记录了在CentOS 6.3上,把Nginx从1.2.4升级到1.6.0的过程. 1. 概述 在我做的一个项目中,最近我对生产服 ...
- MongoDB 数据库的概念以增删改查
1,MongoDB概念解析: Mongo数据库基本概念是文档,集合,数据库,下表给予介绍 SQL术语概念 MongoDB术语概念 解释/说明 database database 数据库 table c ...
- 将前端js异步调用的多个服务合并为一个前端服务
将前端js异步调用的多个服务合并为一个前端服务 1. 减少前端js异步请求的次数改善浏览体验 2. 方便地针对单个接口做异常降级处理