预计得分: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 模拟赛-模拟的更多相关文章

  1. 4.28 省选模拟赛模拟赛 最佳农场 二维卷积 NTT

    第一次遇到二维卷积 不太清楚是怎么做的. 40分暴力比对即可. 对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可. 考虑这是一个二维的比对过程. 设\(f_{i,j}\)表示以i,j为右 ...

  2. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  3. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  4. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  5. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  6. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  7. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

  8. PKUSC 模拟赛 day1 下午总结

    下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...

  9. [GRYZ]寒假模拟赛

    写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...

随机推荐

  1. poj——1274 The Perfect Stall

    poj——1274   The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25709   A ...

  2. uva 1364

    刘书上例题 #include <cstdio> #include <cstdlib> #include <cmath> #include <set> # ...

  3. Tomcat错误信息(服务器版本号)泄露(低危)

    一.问题描述Tomcat报错页面泄漏Apache Tomcat/7.0.52相关版本号信息,是攻击者攻击的途径之一.因此实际当中建议去掉版本号信息. 二.解决办法 1.进入到tomcat/lib目录下 ...

  4. powerDigner使用

    PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...

  5. 洛谷 P1731 [NOI1999]生日蛋糕

    P1731 [NOI1999]生日蛋糕 题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M ...

  6. CodeForces - 344D Alternating Current (模拟题)

    id=46667" style="color:blue; text-decoration:none">CodeForces - 344D id=46667" ...

  7. 【拆分版】Docker-compose构建Zookeeper集群管理Kafka集群

    写在前边 在搭建Logstash多节点之前,想到就算先搭好Logstash启动会因为日志无法连接到Kafka Brokers而无限重试,所以这里先构建下Zookeeper集群管理的Kafka集群. 众 ...

  8. Codeforces 480B Long Jumps 规律题

    题目链接:点击打开链接 题意: 输出n l x y 有一根直尺长度为l 上面有n个刻度. 以下n个数字是距离开头的长度(保证第一个数字是0,最后一个数字是l) 要使得 直尺中存在某2个刻度的距离为x ...

  9. 初探active mq

    mq(message queue),即消息队列,目前比较流行消息队列是active mq 和kafka.本文介绍如何简单的使用active mq. ActiveMQ官网下载地址:http://acti ...

  10. 2016/05/23 thinkphp M方法和D方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...