XOJ测试 2016.5.22
哈哈 我是最先使用XOJ的人之一
膜拜zrt ing
首先是XOJ神奇的界面
还没有建设完的OJ是这个样子的
一共有5道题
这次小测有3道题 是T2T3T4
首先是骑士精神
(BZOJ1085)
上来一个裸搜 因为数据范围有梯度。。所以 混30分吧。。
然后就怎么改都改不对。。
改了快一个小时 发现ohc 题看错了 是12个黑 12个白 我当成了14个黑10个白
无语。。。
限制了一下搜索深度,比赛的时候限制了10层。后来发现 oh 限制11层还能多对一个点。。。。 这份代码是比赛后提交的。
//By: Sirius_Ren
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
char a[10][10];
int cases,jyi,jyj,ans,b[10][10];
int xx[10]={0,1,1,-1,-1,2,2,-2,-2},yy[10]={0,2,-2,2,-2,1,-1,1,-1};
inline bool check(int t){
if(a[3][3]!=-1)return 0;
for(int i=1;i<=5;i++)
for(int j=i;j<=5;j++)
if(a[i][j]!=b[i][j])return 0;
return 1;
}
void dfs(int x,int y,int t){
if(t>=11)return;
if(check(t))ans=min(ans,t);
for(int i=1;i<=8;i++){
int jyx=x+xx[i],jyy=y+yy[i];
if(jyx>0&&jyx<=5&&jyy>0&&jyy<=5){
swap(a[x][y],a[jyx][jyy]);
dfs(jyx,jyy,t+1);
swap(a[x][y],a[jyx][jyy]);
}
}
}
int main()
{
scanf("%d",&cases);
for(int i=1;i<=5;i++)
for(int j=i+1;j<=5;j++)b[i][j]=1;
b[1][1]=b[2][2]=1;b[3][3]=-1;
while(cases--)
{
ans=0x3ffffff;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
cin>>a[i][j];
if(a[i][j]=='1')a[i][j]=1;
else if(a[i][j]=='0')a[i][j]=0;
else if(a[i][j]=='*'){a[i][j]=-1;jyi=i;jyj=j;}
}
}
dfs(jyi,jyj,0);
if(ans>15)printf("-1\n");
else printf("%d\n",ans);
}
}
详细结果:
Case#1: Time Limit Exceeded time: 1024ms mem: 30764kb
Case#2: Presentation Error time: 124ms mem: 30764kb
Case#3: Presentation Error time: 348ms mem: 30764kb
Case#4: Presentation Error time: 324ms mem: 30764kb
Case#5: Presentation Error time: 476ms mem: 30764kb
Case#6: Wrong Answer time: 480ms mem: 30764kb
Case#7: Wrong Answer time: 556ms mem: 30764kb
Case#8: Wrong Answer time: 760ms mem: 30764kb
Case#9: Wrong Answer time: 776ms mem: 30764kb
Case#10: Wrong Answer time: 920ms mem: 30764kb
score: 40
PE的原因好像是章末回车 这个不重要。。
晚上回家以后改了改 加了个剪枝 A此题。
//By: Sirius_Ren
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
char a[10][10];
int cases,jyi,jyj,b[10][10],cnt,flag,xx[10]={0,1,1,-1,-1,2,2,-2,-2},yy[10]={0,2,-2,2,-2,1,-1,1,-1};
bool check(int t){
if(a[3][3]!=-1)return 0;
for(int i=1;i<=5;i++)
for(int j=i;j<=5;j++)
if(a[i][j]!=b[i][j])return 0;
return 1;
}
bool hong (int t){
int Q=0;
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
if(a[i][j]!=b[i][j]){Q++;if(Q+t>cnt)return 0;}
return 1;
}
void dfs(int x,int y,int t){
if(t==cnt){if(check(t))flag=1;return;}
if(flag)return;
for(int i=1;i<=8;i++){
int jyx=x+xx[i],jyy=y+yy[i];
if(jyx>0&&jyx<=5&&jyy>0&&jyy<=5){
swap(a[x][y],a[jyx][jyy]);
if(hong(t))dfs(jyx,jyy,t+1);
swap(a[x][y],a[jyx][jyy]);
}
}
}
int main()
{
scanf("%d",&cases);
for(int i=1;i<=5;i++)
for(int j=i+1;j<=5;j++)b[i][j]=1;
b[1][1]=b[2][2]=1;b[3][3]=-1;
while(cases--){
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++){
cin>>a[i][j];
if(a[i][j]=='1')a[i][j]=1;
else if(a[i][j]=='0')a[i][j]=0;
else if(a[i][j]=='*'){a[i][j]=-1;jyi=i;jyj=j;}
}
for(cnt=1;!flag&&cnt<=15;cnt++)
dfs(jyi,jyj,0);
if(!flag)printf("-1\n");
else printf("%d\n",cnt-1),flag=0;
}
}
据cxc说 这就叫ID-DFS (不就是加了个可行性剪枝&限制搜索深度嘛) 不管那么多了 他说是那就是吧
第二题是魔术师(BZOJ 3714)
呃呃根本想不到要用Kruskal 比赛的时候写了个区间DP 写挂了 (不挂就鬼了)
欲找ZRT的题解请直接戳这里
#include <cstdio>
#include <algorithm>
using namespace std;
int tot=1,ans=0,f[8000005],n,jy;
struct node{int x,y,wei;}d[8000005];
bool cmp(node x,node y){return x.wei<y.wei;}
int find(int x){return f[x]==x?x:f[x]=find(f[x]);}
void add(int x,int y){if(find(x)!=find(y))f[find(x)]=find(y);}
void ad(int i,int j,int jy){d[tot].x=i,d[tot].y=j,d[tot].wei=jy,tot++;}
int main(){
scanf("%d",&n);
for(int i=1;i<=1000000;i++)f[i]=i;
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
scanf("%d",&jy),ad(i-1,j,jy);
sort(d+1,d+tot,cmp);
for(int i=1;i<=tot;i++)
if(find(d[i].x)!=find(d[i].y))
ans+=d[i].wei,add(d[i].x,d[i].y);
printf("%d",ans);
}
这是晚上回家写得
第三题
写了个数组模拟
ZRT的评测机太快 一开始AC了 然后他就把Time limit从1000ms改到了500ms 80分也相当高了
刚才写了一下正解。 用set 20行之内就能搞定
插入的数的fa只能是上一个比它大的数或者是上一个比它小的数 (要看时间先后)
//By: Sirius_Ren
#include <set>
#include <cstdio>
using namespace std;
int n,a[100005];
set<pair<int,int> >s;
int main(){
scanf("%d%d",&n,&a[1]);
s.insert(make_pair(a[1],1));
for(int i=2;i<=n;i++){
scanf("%d",&a[i]);
set<pair<int, int> >::iterator it=s.upper_bound(make_pair(a[i],0)),it2=it--;
if(it2==s.begin()) printf("%d ",*it2);
else if(it->second>it2->second) printf("%d ",*it);
else printf("%d ",*it2);
s.insert(make_pair(a[i],i));
}
}
代码长度短的惊人
比赛结果 (暴力出奇迹)
Orz gzz Orz lty
XOJ测试 2016.5.22的更多相关文章
- [官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神
[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.it ...
- NIPS 2016上22篇论文的实现汇集
http://blog.csdn.net/jiandanjinxin/article/details/54087592 日前,LightOn CEO 兼联合创始人 Igor Carron 在其博客上放 ...
- OneZero第二次站立会议(2016.3.22)
会议时间:2016年3月22日 9:33~9:57 会议成员:冉华,张敏,王巍,夏一鸣. 会议目的:汇报前一天工作,全体成员评论并修改. 会议内容:以下为会议插图 1.界面原型方面,小组成员对夏所画的 ...
- 2016 - 1 - 22 HTTP(一)
一:通过URL找到服务器 1. URL的概念: 1.1 URL全称Uniform Resource Locatior 统一资源定位符 1.2 通过一个URL就可以找到互联网上的唯一的资源. 1.3 ...
- csp-s模拟测试50(9.22)「施工(单调栈优化DP)」·「蔬菜(二维莫队???)」·「联盟(树上直径)」
改了两天,终于将T1,T3毒瘤题改完了... T1 施工(单调栈优化DP) 考场上只想到了n*hmaxn*hmaxn的DP,用线段树优化一下变成n*hmaxn*log但显然不是正解 正解是很**的单调 ...
- csp-s模拟测试49(9.22)养花(分块/主席树)·折射(神仙DP)·画作
最近有点头晕........... T1 养花 考场我没想到正解,后来打的主席树,对于每个摸数查找1-(k-1),k-(2k-1)...的最大值,事实上还是很容易被卡的但是没有数据好像还比较友善, 对 ...
- MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
未经许可谢绝以任何形式对本文内容进行转载! 一.环境配置 关于MIT课程中使用的JOS的配置教程网上已经有很多了,在这里就不做介绍,个人使用的是Ubuntu 16.04 + qemu.另注,本文章中贴 ...
- [2016.01.22]万峰文本处理专家 v2.1
<万峰文本处理专家>是一款简单易用,且功能强大的各类文本文件处理软件.1.支持多任务的处理模式,允许一次处理多个任务.2.支持正则表达式替换,替换更加强大:3.支持各类关键字的行处理操作: ...
- 2016.8.22 JavaScript入门之三
1.对一个数组的末尾追加数据的一种简便方法是通过push()功能. 例如: var myArray = [["John", 23], ["cat", 2]];m ...
随机推荐
- CAD在图纸保存的同时,也把基本信息保存了(网页版)
主要用到函数说明: MxDrawXCustomFunction::Mx_SaveDwgToURLEx 保存DWG文件到服务器上的扩展函数.详细说明如下: 参数 说明 pszServerUrl 服务器网 ...
- js取自定义data属性
//20170329 原本以为只能attr或者prop来获取属性,但是今天看别人的代码他自定义了一个属性,却取不到他的属性值,我自己在本地又可以取到,难道是phtml的原因,于是我到网上查找,发现了一 ...
- C++入职学习篇--代码规范(持续更新)
C++入职学习篇--代码规范(持续更新) 一.头文件规范 在头文件中大家一般会定义宏.引入库函数.声明.定义全局变量等,在设计时最后进行分类,代码示范(自己瞎琢磨的,请多多指点): #ifndef T ...
- 【Android】登陆界面设计
界面布局 布局其实很简单,用相对布局累起来就可以了,然后注册和记住密码这两个控件放在一个水平线性布局里 界面底部还设置了一个QQ一键登录的入口,可以直接用. 控件的ID命名有点乱 <?xml v ...
- LNOI2019 退役记
Day -4 最近这两天智商有点不在线啊..得好好调整作息了,滚粗感++ 复习模板好啊 下午睡了一觉,智商似乎回来了一丢丢,滚粗感-- Day -3 智商略有回暖,滚粗感-- 明天有模拟赛,要加油啊 ...
- 34.分组聚合操作—bucket
主要知识点: 学习聚合知识 一.准备数据 1.家电卖场案例背景建立index 以一个家电卖场中的电视销售数据为背景,来对各种品牌,各种颜色的电视的销量和销售额,进行各种各样角度的分析 ...
- 小白两篇博客熟练操作MySQL 之 第二篇
小白两篇博客熟练操作MySQL 之 第二篇 一. 视图 视图是一个虚拟表,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集, 并可以将其当做表来使用. s ...
- noip模拟赛 c
分析:一道比较难的爆搜题.首先要把9个块的信息存下来,记录每个块上下左右位置的颜色,然后记录每一排每一列能否操作,之后就是bfs了.在bfs的时候用一个数记录状态,第i位表示原来的第i个块现在在哪个位 ...
- CodeForces - 284C - Cows and Sequence
先上题目: C. Cows and Sequence time limit per test 3 seconds memory limit per test 256 megabytes input s ...
- hdu_1038_Biker's Trip Odometer_201311021643
Biker's Trip Odometer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...