题目1001
      大意:已知$n$个角色,$m$种怪物种族,$k$个怪物,给出一组角色编号,编号$P_{i}$的角色能肝死编号$i$的怪物,对于给定的一组怪物编号,为了打通关,求切换角色的次数。另外初始默认第$1$个角色上场。
      思路:模拟水题,没啥好说的,先随便弄个数组比如叫$monitors$,于是$monitors[i] = P_{i}$,然后去肝那群怪,初始变量$actor = 1$,循环每次读一个怪物编号$x$,如果$monitors[x] \neq actor$,说明当前角色$actor$并不能肝死这只编号$x$的怪,切换次数$count + 1$,当前角色$actor$改为$monitors[x]$,然后就下一次循环了。
      非官方代码:

 #include <stdio.h>

 int main()
{
int T, n, m, k, act[];
scanf("%d", &T);
while(T--) {
scanf("%d%d%d", &n, &m, &k);
for(int i=; i<=m; i++)
scanf("%d", act+i);
int t=, x, res=;
for(int i=; i<k; i++) {
scanf("%d", &x);
if(t!=act[x]) {
t=act[x];
++res;
}
}
printf("%d\n", res);
}
return ;
}

1001

      题目1002
      大意:自己理解吧,懒得打了。
      思路:在给定的$n \times m$矩阵里,行代表角色,列代表怪物,对应元素就是该行角色打败该列怪物所需时间,那就找出每列的最小值,最后根据怪物编号累加一下时间即可。拿一维数组就够了,读入的同时求最小值,因此不用保存二维的信息。
      非官方代码:
 #include <stdio.h>

 int main()
{
int T, n, m, k, tme[], t;
scanf("%d", &T);
while(T--) {
scanf("%d%d%d", &n, &m, &k);
for(int i=; i<=m; i++)
scanf("%d", tme+i);
for(int i=; i<n; i++)
for(int j=; j<=m; j++) {
scanf("%d", &t);
if(tme[j]>t)
tme[j]=t;
}
int res=;
for(int i=; i<k; i++)
scanf("%d", &t),
res+=tme[t];
printf("%d\n", res);
}
return ;
}

1002

      题目1003
      大意:没有大意,就是求方程,详细要求自己看去。
      思路:这题不难,真的不难,真的真的不骗你。但搞起来麻烦= =|||首先慢慢来,别想太多,一个一个字符读入,转成数字会吧?标记个小数点的状态就可以读小数了,不会自己单独尝试下。然后读入到$x$或者其他符号比如$+$、$-$、$=$你就要停止一下,把读入的数字加到相应的$a$、$b$、$c$上。所以不是碰到$x$停止的,请加到$c$上,碰到$x$停止的,判断下一个是不是^,是就加到$a$上,否则加到$b$上。那判断^的时候,如果没有^,而是$+$、$-$、$=$怎么办?这里也拿两个状态,比如碰到$+$则$neg = false$,碰到$-$则$neg = true$,碰到$=$则$eql = true$,注意如果$eql$为$true$则符号是要反一下的,因为我们默认移项到$=$的左边。于是前面读数字那里应该利用这两个状态判断正负性。最后根据总共的$a$、$b$、$c$拿公式求一下就好了,代码懒得打所以没有。如果你们能领悟$C$的精髓——函数式编程,不要把所有代码都挤在$main()$里,分开几个函数写,思路是很容易理清的。
      当然你也可以拿字符串函数乱搞,把数字提取出来,不过思路不清晰会坑死自己,而且这种方法的时间常数大点,也就是说运行耗时会长一点点。
 
 
      题目1004
      大意:数位只有两个:$5$和$8$,其中$88888888888888888888$为最小,$55555555555555555555$为最大,请根据给定数字,求它是这样的数字中是第几大的。
      思路:这很简单,$5 > 8$,那$5$和$8$分别改成$1$和$0$不就是二进制了吗?....有一点要注意一下,是求在这种数字中的顺序,而不是求输入的数字中的顺序....不过题目要求第几大,也可以为避免麻烦,设置$5$和$8$分别对应$0$和$1$,这样直接把得到的二进制数转成十进制就可以输出辣。判断$5$和$8$的方法可以直接判断,也可以根据奇偶性判断。
      非官方代码:
 #include <stdio.h>

 int main()
{
int T, m=<<;
char N[];
scanf("%d", &T);
while(T--) {
int x=;
scanf("%s", N);
for(int i=; i<; i++) {
x<<=;
if(N[i]=='')
x|=;
}
printf("%d\n", m-x);
}
return ;
}

1004

      题目1005
      大意:自己看题目去。
      思路:求助你的数学老师。最后得到公式:$m \times m \div n + m - n$。但很不幸由于出题人太水,所以数据精度出了点问题,大部分姿势不对的情况下你大概要减去一个误差才行。。
      非官方代码:
 #include <stdio.h>

 int main() {
int T, n, m;
scanf("%d", &T);
while(T--) {
scanf("%d%d", &n, &m);
printf("%.2lf\n", .*m*m/n+m-n-1E-);
}
return ;
}

1005

      题目1006
 
 
      题目1007
 
 
      题目1008
      题意:每次初始$A$是$0$,$B$是$1$,$+$代表$A = A + 1$,$\ast$代表$B = A \ast B$,求最后$B$会是多少?
      思路:首先判一下极限情况,发现$16$个$+$与$16$个$\ast$的情况会使$B$达到最大:$16^{16} = 2^{64}$,超过long long的范围,甚至unsigned long long都被爆掉了,于是只好用long double类型,当然你也可以考虑用大数......
      非官方代码:
 #include <stdio.h>
#include <iostream>
using namespace std; int main() {
int rd, A=;
long double B=;
cout.precision();
cout<<fixed;
while(~(rd=getchar())) {
if(rd=='\n') {
cout<<B<<endl;
A=; B=;
}
else if(rd=='+')
++A;
else if(rd=='*')
B*=A;
}
return ;
}

1008

      题目1009
      题意:没啥好说的。
      思路:没啥好说的。
      非官方代码:玩玩又不会怀孕对吧。
 #include <iostream>

 template<int N> struct czj { czj<N-> oyk; czj() { std::cout << N << std::endl; } };

 template<> struct czj<> { };

 czj<> wwj;

 int main() { }

1009

      题目1010
      题意:我选择死亡。
      思路:首先你要知道各个寄存器怎么转成$Hex$先,然后你需要一定的英文水平或者一定的搜索技巧,强行学会ModR/M和SIB编码,然后就可以搞出来了。
 
 
      题目1011
      题意:给出若干个点,按顺序求出两点间的距离,的总和。
      思路:这很简单,高中数学搞搞就是了,可是这输入格式是要闹哪样?(╯‵□′)╯︵┻━┻ 另外注意一下起点是第一个点,而不是(0,0,0)。
      非官方代码:
 #include <stdio.h>
#include <math.h> int main() {
int T;
scanf("%d%*c", &T);
for(int cse=; cse<=T; cse++) {
int r, a, b, c, x, y, z;
double res=.;
printf("Case #%d: ", cse);
scanf("%*c%d,%d,%d%*c", &a, &b, &c);
while(r=getchar(), r!='\n') {
scanf("%*c%d,%d,%d%*c", &x, &y, &z);
a-=x; b-=y; c-=z;
res+=sqrt(a*a+b*b+c*c);
a=x; b=y; c=z;
}
printf("%.3f\n", res);
}
return ;
}

1011

SCNU 2015ACM新生赛初赛【1001~1011】个人解题思路的更多相关文章

  1. SCNU 2015ACM新生赛初赛【1007. ZLM的扑克牌】解题报告

            题目链接详见SCNU 2015新生网络赛 1007. ZLM的扑克牌 .         其实我在想这题的时候,还想过要不要设置求最小的排列,并且对于回文数字的话,可以把扑克牌折起来( ...

  2. SCNU 2015ACM新生赛初赛【1006. 3D打印】解题报告

            题目链接详见SCNU 2015新生网络赛 1006. 3D打印 .出题思路来自codevs 3288. 积木大赛,属于模拟题.         首先我们把“选择从第L部分到第R部分”理 ...

  3. SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

            题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音?       ...

  4. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  5. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  6. 贪心 赛码 1001 Movie

    题目传送门 /* 贪心:官方题解: 首先我们考虑如何选择最左边的一个区间 假设最左边的区间标号是i, 那选择的另外两个区间的左端点必定要大于Ri 若存在i之外的j, 满足Rj<Ri, 那么另外两 ...

  7. Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串

    A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist

    [ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...

  9. [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga

    [ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...

随机推荐

  1. FTP的搭建与虚拟目录作用<之简单讲解>

    操作系统:win7 VS2010编写WebService与在IIS的发布<之简单讲解>中我已经说了IIS安装与使用,不明白的可以跳过去看. 1.添加FTP站点 2. 3. 4. 5. zq ...

  2. Eclipse 实用技巧

    代码智能提示 Java智能提示 Window -> Preferences -> Java -> Editor -> Content Assist -> Auto Act ...

  3. 前端打包构建工具grunt快速入门(大篇幅完整版)

    打包的目的和意义就不用叙述了直接上干货 http://www.gruntjs.net/getting-started里面的教程也太简单了,需要下一番功夫去研究才行.本文将grunt打包的常用方法都用实 ...

  4. 列表组件抽象(2)-listViewBase说明

    这是我写的关于列表组件的第2篇博客.前面的相关文章有: 1. 列表组件抽象(1)-概述 listViewBase是列表组件所有文件中最核心的一个,它抽象了所有列表的公共逻辑,将来如果有必要添加其它公共 ...

  5. Rafy 框架 - 流水号插件

    Rafy 框架又添新成员:流水号插件.本文将解释 Rafy 框架中的流水插件的场景.使用方法. 场景 在开发各类数据库应用系统时,往往需要生成从一开始的流水号,有时还需要按月或者按日进行独立生成,如下 ...

  6. EnumHelper.cs枚举助手(枚举描述信息多语言支持)C#

    C#里面经常会用到枚举类型,枚举是值类型对象,如果你想用枚举类型的多属性特性,或者你想在MVC页面上通过简单的值类型转换,将某字段值所代表的含义转换为文字显示,这时候必须要将枚举扩展,是它支持文本描述 ...

  7. axis2+struts拦截地址冲突问题

    axis2和struts在整合过程中,struts会把axis的地址也拦截了,默认当成一个action处理, 会因为找不到action而报错: <!-- struts配置 --> < ...

  8. xcode中的.h和.m文件分别是什么意思?各有什么用?

    .h 表示头文件,用来声明各种成员变量,方法,属性之类的.在import的时候用头文件. .m 主要用来实现.h 里声明的方法.举个例子,如果要写一个方法,你要在.h里先声明: - (void)myM ...

  9. dagride实现模糊查询

    一:首行放置搜索元素(可以是easyui中的input.datetimebox.combox等等) 将各个元素的value值获取到存为Json格式(data{a:..,b:..,c:..}),再回车或 ...

  10. MPAndroidChart 3.0——LineChart(折线图)

    显示效果 MPAndroidChart每一种图表的基本使用方式都基本相同 了解一种图表的实现 参考项目源码其他的图表也就差不多哩 在布局文件中定义 <com.github.mikephil.ch ...