二模 06day2
很长时间没更新有意义的题目了呢,这是一套题撒,于是乎我便开心的边刷题边发题解了撒.
第一题: interval
比较好玩的一题撒, 分分钟过了, 就是模拟贪吃蛇但是没有食物(嗯,只要你判断冲突).
整个数组拿来移当然是不行的撒, 只要在末尾移去一个方格再向头部正对出放一个方格就行了撒.
编程复杂度挺低的, 可以直接修改一下做贪吃蛇游戏的后台.
(最坑的地方就是坐标系.无图无**)
其实也不算很坑啦.
#include <cstdio>
#include <cstring>
struct point{
int x,y;
};
point gpos(char ch,point c){
switch(ch){
case 'E':
++c.x;
break;
case 'W':
--c.x;
break;
case 'S':
--c.y;
break;
case 'N':
++c.y;
break;
}
return c;
}
struct queue{
point q[2000],t;
bool map[100][100];
int s,e,i;
int move(char c){
map[q[s].x][q[s].y]=false;
++s;
t=gpos(c,q[e-1]);
if(t.x>50||t.x<0) return 1;
if(t.y>50||t.y<0) return 1;
if(map[t.x][t.y]) return 2;
map[t.x][t.y]=true;
q[e]=t;
++e;
return 0;
}
void reset(){
memset(map,0,sizeof map);
memset(q,0,sizeof q);
s=e=0;
for(i=11;i<=30;++i){
q[e].y=25;
q[e].x=i;
map[i][25]=true;
++e;
}
}
} q;
int i,j,n;
char c,str[1000];
bool f;
int main(){
freopen("interval.in","r",stdin);
freopen("interval.out","w",stdout);
while(scanf("%d\n",&n),n){
q.reset();
f=false;
scanf("%s",str);
for(i=0;i<n;++i){
c=str[i];
j=q.move(c);
if(j){
if(j==1){
printf("The worm ran off the board on move %d.\n", i+1);
}else{
printf("The worm ran into itself on move %d.\n", i+1);
}
f=true;
break;
}
}
if(!f) printf("The worm successfully made all %d moves.\n", n);
}
return 0;
}
第二题 直角三角形
平面上给定 n 个两两不同的整数点,统计以给定的点为顶点,其直角边平行于坐标轴的直角三角形的个数.
嗯横纵轴离散化.(嗯hash似乎比较好,统计x,y的实在不想写啊摔)
为什么离散化呢因为数据范围不小.
30%的数据满足 n≤100;
50%的数据满足 n≤1000;
100%的数据满足 0<n≤100,000,所有坐标不超过 32 位整数范围。
就是这样辣.
#include <cstdio>
struct node{
int d,n;
long long s;
} p[200000];
int he[2][103979],pl,temp,temp2;
inline int find(int h,bool n){
temp=h;
temp2=h=h%103979;
h=he[n][h];
while(h && p[h].d!=temp) h=p[h].n;
if(h) return h;
++pl;
p[pl].n=he[n][temp2];
p[pl].d=temp;
p[pl].s=0;
he[n][temp2]=pl;
return pl;
}
long long sum;
int i,n,a,b;
int xs[200000],ys[200000];
int main(int argc, char const *argv[]){
freopen("right.in","r",stdin);
freopen("right.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;++i){
scanf("%d %d",&a,&b);
xs[i]=a;
ys[i]=b;
a=find(a,0),b=find(b,1);
++p[a].s,++p[b].s;
}
for(i=0;i<n;++i){
a=find(xs[i],0),b=find(ys[i],1);
sum+=(p[a].s-1)*(p[b].s-1);
}
printf("%lld\n", sum);
return 0;
}
(简直短到奇葩)
二模 06day2的更多相关文章
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- 二模 (8) day2
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...
- RSA简介(二)——模幂算法
RSA最终加密.解密都要用到模乘的幂运算,简称模幂运算. 回忆一下RSA,从明文A到B B=Ae1%N 对B解密,就是 A=Be2%N 其中,一般来说,加密公钥中的e1一般会比较小,取65537居多, ...
- 二模14day1解题报告
注:Index数☞由4,7组成的十进制数. T1.全排列(permutation) 求n个数的第k个排列中,有多少个Index位置上是Index数. 由于k的范围比较小,n的范围比较大(都是109), ...
- 二模12day2解题报告
T1.笨笨玩糖果(sugar) 有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢:不能,输出-1. 一开始天真的写了一个dp,f[i]表示i颗糖最少取 ...
- 二模01day1解题报告
T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxs ...
- 二模 (12) day1
第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...
- 二模 (9) day2
第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律, ...
- 二模 (3) day1
第一题: 题目描述: 一个数列定义如下:f(1) = 1,f(2) = 1,f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给定 A,B 和 n 的值,要求计算 ...
随机推荐
- 第五次课堂总结x
一.知识点: 1.while语句 循环体语句: while语句里的表达式可以是任何合法的表达式,循环体则只可以表达一条语句. while的循环体语句需要能改变循环条件的真假条件. ...
- php发送get、post请求的6种方法简明总结
方法1: 用file_get_contents 以get方式获取内容: ? 1 2 3 4 5 <?php $url='http://www.jb51.net/'; $html = file_g ...
- 原型图利器 – Mockplus的审阅功能
Mockplus是一款简洁快速的原型图工具 (http://www.mockplus.cn),最近推出了审阅功能. 审阅,旨在解决团队项目原型设计中的沟通和协作的问题. 没有孤立的原型,更没有一次成型 ...
- 【CodeForces 626C】Block Towers
题意 给你n,m,如果 n个2的倍数和m个3的倍数,这n+m个数各不相同,那么求最大的数的最小值. 分析 方法1:枚举最大值为i,直到 i/2+i/3-i/6(不重复的2或3的倍数)≥n+m,并且要i ...
- Java编程思想学习(十六) 并发编程
线程是进程中一个任务控制流序列,由于进程的创建和销毁需要销毁大量的资源,而多个线程之间可以共享进程数据,因此多线程是并发编程的基础. 多核心CPU可以真正实现多个任务并行执行,单核心CPU程序其实不是 ...
- 【bzoj4010】 HNOI2015—菜肴制作
http://www.lydsy.com/JudgeOnline/problem.php?id=4010 (题目链接) 题意 给出一张无向图要求出一个拓扑序列满足1的位置最靠前 ,在保证上面的条件下使 ...
- Threat Risk Modeling Learning
相关学习资料 http://msdn.microsoft.com/en-us/library/aa302419(d=printer).aspx http://msdn.microsoft.com/li ...
- android4.0浏览器在eclipse中编译的步骤
工程源码: 注意: 如果下载已经修过的源码,只要进行3.4.8步骤就应该可以了. eclipse版本:adt-bundle-windows (Android Developer Tools Build ...
- Xcode的一些有用的插件
** --Alcatraz:Xcode插件管理 ** 安装:curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/ ...
- try、catch 和 throw 语句 (了解)
C++ 异常使用 try.catch 和 throw 关键字. 引发表达式指示错误或异常情况. 可以将任何类型的对象用作引发表达式的操作数. 此对象通常用于传达有关错误的信息. 通常,应使用在标准库中 ...