题目名称

时空定位

棋子移动

高精度乘法

数独游戏

存盘文件名

location

piece

mul

sudoku

输入文件名

location.in

piece.in

mul.in

sudoku.in

输出文件名

location. out

piece.out

mul.out

sudoku.out

时限

1s

1s

1s

1s

内存限制

64MB

64MB

64MB

64MB

题1  时空定位(location)

【题目描述】

张琪曼已经确定了李旭琳在一个长为20千米,宽为2千米的空间,她要在横中心线上放置半径为Ri的定位装置,每个定位装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的物体被定位,这有充足的定位装置i(1<i<600)个,并且一定能把空间全部覆盖,你要做的是:选择尽量少的定位装置,把整个空间全部覆盖。

【输入格式】

第一行m表示有m组测试数据。

每一组测试数据的第一行有一个整数数n,n表示共有n个定位装置,随后的一行,有n个实数Ri,Ri表示该定位装置能覆盖的圆的半径。

【输出格式】

输出所用装置的个数。

【输入样例】

2

5

2 3.2 4 4.5 6

10

1 2 3 1 2 1.2 3 1.1 1 2

【输出样例】

2

5


这道题就是肥肠简单的贪心,来看我的AC代码吧:

 #include<bits/stdc++.h>
using namespace std;
double a[];
int main()
{
//freopen("location.in","r",stdin);
//freopen("location.out","w",stdout);
int m,n,ans;cin>>m;
for(int i=;i<m;i++)
{
double l=;ans=;
cin>>n;
for(int j=;j<n;j++)cin>>a[j];
sort(a,a+n);
for(int j=n-;j>=;j--)
{
ans++;
double x=sqrt(a[j]*a[j]-);
l-=*x;
if(l<=)break;
}
cout<<ans<<endl;
}
return ;
}

题2 棋子移动(piece)

问题描述

魔法世界的历史上曾经出现过一位赫赫有名的不败战神陈庆之,陈庆之以棋道悟兵法,一生身经数百战,没有一场败绩,而且没有一场不是在绝对的劣势中大胜敌军。

受此影响,魔法世界开始流行一种叫棋子移动的游戏,即有2N个棋子(N≥4)排成一行,开始位置为白子全部在左边,黑子全部在右边,例如当N=4时,棋子排列情况为:

〇〇〇〇●●●●

移动棋子的规则是:每次必须同时移动相邻两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置.每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。例如当N=4时,最终排列情况为:

〇●〇●〇●〇●

试求出移动步骤。

【输入格式】

一个整数,即N。

【输出格式】

输出移动步骤,每一步操作占一行。

【输入样例】

4

【输出样例】

4,5-->9,10

8,9-->4,5

2,3-->8,9

7,8-->2,3

1,2-->7,8


分治算法经典例题啦(~ ̄▽ ̄)~ 把所有情况都转化成n=4的情况就可以啦

上代码:

 #include<bits/stdc++.h>
using namespace std;
int k;
void move(int j)
{
printf("%d,%d-->%d,%d\n",j,j+,k,k+);
k=j;
}
void mv(int n)
{
if(n==)
{
move();move();move();move();move();
}
else
{
move(n);move(*n-);mv(n-);
}
}
int main()
{
//freopen("piece.in","r",stdin);
//freopen("piece.out","w",stdout);
int n;cin>>n;k=*n+;
mv(n);
return ;
}

题3  高精度乘法(mul)

【题目描述】

输入两个整数,求它们的乘积并输出。

【输入格式】

两行,每行表示一个非负整数(不超过5000位)

输出格式】

两数的乘积。

【输入样例】

99

101

【输出样例】

9999


高精运算肥肠重要,所以这些模板就算是背也要背下来哇!

 #include<bits/stdc++.h>
using namespace std;
int a[],b[],c[];
void init(int x[])
{
string s;
cin>>s;
x[]=s.length();
for(int i=;i<x[];i++)x[x[]-i]=s[i]-'';
while(x[x[]]==&&x[]>)x[]--;
}
int main()
{
//freopen("mul.in","r",stdin);
//freopen("mul.out","w",stdout);
init(a);init(b);
int x=;
for(int i=;i<=a[];i++)
{
x=;
for(int j=;j<=b[];j++)
{
c[i+j-]=c[i+j-]+x+a[i]*b[j];
x=c[i+j-]/;
c[i+j-]%=;
}
if(x)c[i+b[]]=x;
}
c[]=a[]+b[];
while(c[c[]]==&&c[]>)c[]--;
for(int i=c[];i>=;i--)cout<<c[i];
return ;
}

题4  数独游戏(sudoku)

 【问题描述】

“我陪你玩这个数独游戏已经整整三天了,你到底什么时候给我上古神器?”修罗王忍不住问。

“这人生啊,急也好,慢也好,目标总能达到,何不让自己静下心来,慢慢欣赏一下沿途的风景?”上古神器的守护者悠悠道。

修罗王悻悻道:“如果玩这个没有赌注的话,我还真信你的话了,就三天工夫,你都把我的魔法石赢去一大半了。”

已知9×9的方阵,有些格子填有1~9的数字,有的格子则是空白。你的任务是完成这个方阵,使得每一行、每一列以及每一个小九宫格中的数字都刚好是1~9。

如图所示,该例子中左图是开始时的方阵状态,右图为完成后的样子。

【输入格式】

9行9列的方阵状态,0代表空格。

【输出格式】

输出完成后的方阵状态,每一个小九宫格以空格分隔。行为三个空格,列为一个空格。

【输入样例】

0 6 0 1 0 4 0 5 0

0 0 8 3 0 5 6 0 0

2 0 0 0 0 0 0 0 1

8 0 0 4 0 7 0 0 6

0 0 6 0 0 0 3 0 0

7 0 0 9 0 1 0 0 4

5 0 0 0 0 0 0 0 2

0 0 7 2 0 6 9 0 0

0 4 0 5 0 8 0 7 0

【输出样例】

9 6 3   1 7 4   2 5 8

1 7 8   3 2 5   6 4 9

2 5 4   6 8 9   7 3 1

8 2 1   4 3 7   5 9 6

4 9 6   8 5 2   3 1 7

7 3 5   9 6 1   8 2 4

5 8 9   7 1 3   4 6 2

3 1 7   2 4 6   9 8 5

6 4 2   5 9 8   1 7 3


这道题的输出格式很重要滴!至于算法思想就是深搜嘛。其实我写的是比较暴力粗糙的,其实明明可以进行剪枝的...不过反正我AC啦!

 #include<bits/stdc++.h>
using namespace std;
struct node{
int shu,jn;
}a[][];
struct kong{
int xx,yy;
}ko[];
int h[][],l[][],jiu[][],m;
void print()
{
for(int i=;i<=;i++)
{
if(i==||i==)cout<<endl;
for(int j=;j<=;j++)
{
if(j==||j==)cout<<" ";
cout<<a[i][j].shu<<" ";
}
cout<<endl;
}
}
void search(int n)
{
int x=ko[n].xx,y=ko[n].yy;
if(n==m+)
{
print();exit();
}
if(x&&y)
for(int i=;i<=;i++)
{
if(h[x][i]==&&l[y][i]==&&jiu[a[x][y].jn][i]==)
{
ko[n].xx=;
ko[n].yy=;
a[x][y].shu=i;
h[x][i]=;
l[y][i]=;
jiu[a[x][y].jn][i]=;
search(n+);
ko[n].xx=x;
ko[n].yy=y;
a[x][y].shu=;
h[x][i]=;
l[y][i]=;
jiu[a[x][y].jn][i]=;
}
}
else search(n+);
}
int main()
{
//freopen("sudoku.in","r",stdin);
//freopen("sudoku.out","w",stdout);
int x=,k=,n=;
for(int i=;i<=;i++)
{
if(i==||i==||i==)x=i;
else x-=;
for(int j=;j<=;j++)
{
if(j==||j==)x++;
cin>>a[i][j].shu;
a[i][j].jn=x;
if(a[i][j].shu)
{
h[i][a[i][j].shu]=;
l[j][a[i][j].shu]=;
jiu[a[i][j].jn][a[i][j].shu]=;
}
else
{
m++;
ko[m].xx=i;
ko[m].yy=j;
}
}
}
search();
return ;
}

Noip2019暑期训练1的更多相关文章

  1. Noip2019暑期训练2 反思

    经过两次测试,通过深刻的反思,我主要发现了以下易犯错误: 1.做题目时过于追求速度,导致好几处代码都出现手误打错的现象!而且,千万不要图快.图方便就复制粘贴,非常容易出错!(例如T3-party中直接 ...

  2. Noip2019暑期训练2

      题目名称 骑士遍历 和谐俱乐部 农场派对 对称二叉树 存盘文件名 knight Beautiful party tree 输入文件名 knight.in Beautiful.in party.in ...

  3. [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10

    [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10 各位看众朋友们,你们好,今天是2018年08月14日,星期二,农历七月初四,欢迎阅看今天的颓废联编节目 最近发生的灵异事件有 ...

  4. ACM暑期训练总结

    ACM暑期集训总结报告 不知不觉,ACM暑期集训已经过去了一个月了(其实我还差几天才够一个月,因为最后几天要回家办助学贷款,所以没坚持到最后,当了个逃兵.....[汗])也到了结束的时候.在这一个月中 ...

  5. 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)

    题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...

  6. 牛客网2018暑期训练 第三场 a题

    #include <bits/stdc++.h> using namespace std; vector<int> path; ; short dp[maxn][maxn][m ...

  7. CSU-ACM2018暑期训练7-贪心

    A:合并果子(贪心+优先队列) B:HDU 1789 Doing Homework again(非常经典的贪心) C:11572 - Unique Snowflakes(贪心,两指针滑动保存子段最大长 ...

  8. 「暑期训练」「基础DP」免费馅饼(HDU-1176)

    题意与分析 中文题就不讲题意了.我是真的菜,菜出声. 不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置:二,所在的时间.还有吗?没有了,所以设dp[i][j]" role=" ...

  9. 7/31 CSU-ACM2018暑期训练7-贪心

    比赛链接 A-CSU - 1588 现在有n堆果子,第i堆有ai个果子.现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数.求合并所有果子的最小代价. Input 第一行包含一个整数T(T ...

随机推荐

  1. C# 的ToString 常用方法

    货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025E 科学型 25000.ToString(&q ...

  2. 2019 前程无忧java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.前程无忧等公司offer,岗位是Java后端开发,最终选择去了前程无忧. 面试了很多家公司,感觉大部分公司考察的点 ...

  3. 数据仓库模型ETL架构(DWI/DWR/DM)

    1.DWI DWI:数据湖.数据砥柱,一般存放在HDFS 数据仓库的基础数据来源,各种杂七杂八的数据 关键点:数据清洗.数据整合.异常处理.增量获取 ETL:E-数据抽取.数据清洁.格式转换,T-生成 ...

  4. Java 之 Cookie

    Cookie 一.会话概述 1.会话:一次会话中包含多次请求和响应.       一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止. 2.功能: 在一次会话的范围内的多次请求间 ...

  5. MongoDB 基本概念

    MongoDB和关系型数据库的对应关系 关系数据库 MongoDB 数据库   database 数据库   database 表格  table 集合  collection 行  row 文档  ...

  6. SQL与NoSQL区别--商业SQL数据库衰落--oracle面临困境

    转自:商用数据库之死:Oracle 面临困境 这二十年来,商业数据库市场仍然是 IT 行业最稳定.最具黏性的领域之一,Oracle.IBM 和微软三家厂商瓜分了 80% 的份额.然而,我们认为这个领域 ...

  7. linux /bin/bash^M: bad interpreter的解决办法

    linux下执行shell脚本时报错:-bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory. 原因是window ...

  8. 大数据JavaWeb之java基础巩固----Junit&反射&注解

    最近打算从0开始学学大数据,目前的主业是Android开发,但是当年毕业之后其实是搞J2EE的,所以打算没事又来拓展一下后台的技能,扩宽一下自己的知识体系对于自己的未来也能够多一些可能,另外大数据的一 ...

  9. 在linux下crontab不执行原因排查

    一.开启cron日志 #检查是否已经开启 cron sudo service cron status #cron start/running, process 23719 # 重启服务 cron su ...

  10. HTML——MP4视频不能播放

    前言 HTML5中提供了video标签,但是为什么有的MP4视频可以播放,有的不能播放呢? 简介 当然是因为编码的问题咯~ 视频格式 标签属性 DOM参考 HTML 5 视频/音频参考手册 使用 &l ...