搞死人的题目,,,

就是在n*n的方格中找路径长度为L的回路。

开始的思路值适合n为偶数的情况,而忽视了奇数的case,所以wa了一次。

然后找奇数case的策略,代码从70多行变成了100多,然后改了又改,自己在下面测了好久,交上去1y,但心里却无成就感。

这样的一个题目,提不上什么思路,可以算作是乱搞的,下次比赛中再次碰到类似甚至同样的题目,我并不能保证能写出来。

代码如下:

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <map>
#include <vector>
#include <algorithm> #define M 1005 using namespace std; int n, l, maxx; int main ()
{
scanf("%d%d",&n, &l);
if(l&1||n*n<l) printf("Unsuitable device\n");
else
{
printf("Overwhelming power of magic\n");
int c = l/(2*n);
int last = l%(2*n);
printf("1 1\n");
if(l<2*n)
{
int m = last/2;
for(int i = 2; i <= m; ++i)
printf("%d %d\n",2*c+1,i);
for(int i = m; i >= 2; --i)
printf("%d %d\n",2*c+2,i);
printf("2 1\n");
}
else if(n&1)
{
maxx = 2*c;
if(last==0)
{
for(int i = 1; i <= 2*c; ++i)
{
if(i&1)
for(int j = 2; j <= n; ++j)
printf("%d %d\n",i,j);
else
for(int j = n; j >= 2; --j)
printf("%d %d\n",i,j);
}
}
else
{
for(int i = 1; i < 2*c; ++i)
{
if(i&1)
for(int j = 2; j <= n; ++j)
printf("%d %d\n",i,j);
else
for(int j = n; j >= 2; --j)
printf("%d %d\n",i,j);
}
int nn = n-2*c;
int cc = last/(2*nn);
int ll = last%(2*nn);
int mm = n-2*cc;
for(int i = n; i > n-2*cc; --i)
{
if(i&1)
for(int j = 2*c; j <= n; ++j)
printf("%d %d\n",j,i);
else
for(int j = n; j >= 2*c; --j)
printf("%d %d\n",j,i);
}
if(ll==0)
{
for(int i = mm; i >= 2; --i)
printf("%d %d\n",2*c,i);
}
else
{
int tm = ll/2;
for(int i = 2*c; i <= 2*c+tm; ++i)
printf("%d %d\n",i,mm);
for(int i = 2*c+tm; i >= 2*c; --i)
printf("%d %d\n",i,mm-1);
mm-=2;
for(int i = mm; i >= 2; --i)
printf("%d %d\n",2*c,i);
}
}
for(int i = maxx; i >= 2; --i)
printf("%d 1\n",i);
}
else
{
for(int i = 1; i <= 2*c; ++i)
{
if(i&1)
for(int j = 2; j <= n; ++j)
printf("%d %d\n",i,j);
else
for(int j = n; j >= 2; --j)
printf("%d %d\n",i,j);
}
if(last == 0)
maxx = 2*c;
else if(last == 2)
{
printf("%d %d\n",2*c+1,2);
maxx = 2*c+1;
}
else
{
int m = last/2;
maxx = 2*c+2;
for(int i = 2; i <= m; ++i)
printf("%d %d\n",2*c+1,i);
for(int i = m; i >= 2; --i)
printf("%d %d\n",2*c+2,i);
}
for(int i = maxx; i >= 2; --i)
printf("%d 1\n",i);
}
}
return 0;
}

URAL - 1920 Titan Ruins: the Infinite Power of Magic(乱搞)的更多相关文章

  1. URAL 1920 Titan Ruins: the Infinite Power of Magic

    大意: 有一张N*N的网格,你每次可以走一步,每格只能走一次,有没有一种方法让走了L步后回到一个距原点1步远的格子?  没有输出Unsuitable device,否则输出Overwhelming p ...

  2. URAL - 1917 Titan Ruins: Deadly Accuracy(水题)

    水题一个,代码挫了一下: 题意不好理解. 你去一个洞窟内探险,洞窟内有许多宝石,但都有魔法守护,你需要用魔法将它们打下来. 每个宝石都有自己的防御等级,当你的魔法超过它的防御等级时它就会被你打下来. ...

  3. URAL 1915 Titan Ruins: Reconstruction of Bygones(思路)

    搞这个题差不多是从比赛开始到结束. 从自信慢慢的看题一直到wrong到死. 这个题目可以说成是思路题,以为我们只要明白一点,这道题就成了纯暴力的水题, 那就是当操作数不足栈中数字数目的时候,我们就没有 ...

  4. 【URAL 1917】Titan Ruins: Deadly Accuracy(DP)

    题目 #include<cstdio> #include<algorithm> using namespace std; #define N 1005 int n, m, cn ...

  5. URAL 1827 Indigenous Wars(排序、乱搞)

    题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...

  6. Ural 1780 Gray Code 乱搞暴力

    原题链接:http://acm.timus.ru/problem.aspx?space=1&num=1780 1780. Gray Code Time limit: 0.5 secondMem ...

  7. [USACO2002][poj1945]Power Hungry Cows(启发式搜索)

    Power Hungry CowsTime Limit: 1000MS Memory Limit: 30000K Total Submissions: 4570 Accepted: 1120 Desc ...

  8. 2016中国大学生程序设计竞赛 网络选拔赛 I This world need more Zhu

    This world need more Zhu Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  9. OrientDB入门(1)Getting Started

    Running OrientDB the First Time First, download and extract OrientDB by selecting the appropriate pa ...

随机推荐

  1. 关于oracle的相关基础语句

    ----给表的字段添加描述COMMENT ON COLUMN 数据库名称.表名.表字段 IS '字段描述'; ---设置自动增长 CREATE SEQUENCE emp_sequence INCREM ...

  2. mongodb根据字符长度作为条件查询

    { $where:"this.XXX.length==2" } 用$where条件查询,等号要用==.虽说$where查询可能效率不是很好,这只是我能想到的,有更好的方法欢迎指教

  3. C# .net ACCESS 网页增删改查 --留言板

    话不多说,上代码 http://yunpan.cn/QaQs5Dzz8ZIxK  访问密码 041b

  4. tomcat7的安装与配置、及Servlet部署

    一.tomcat7的下载页面 https://tomcat.apache.org/download-70.cgi 就是:32-bit Windows zip 下载得到apache-tomcat-7.0 ...

  5. (转)django上传文件

    本文转自:http://www.cnblogs.com/linjiqin/p/3731751.html 另:  本文对原文做了适当修改 更为详细的介绍可以参考官方文档. emplate html(模板 ...

  6. kali 虚拟机开启mysql:3306 供主机访问.

    mysql -u root -p use mysql; update user set host='ip' where user='root'; //更新访问权限 flush privileges; ...

  7. kafka使用

    0: ./sbt update ./sbt package ./sbt assembly-package-dependency 1: 启动ZK: 通过kafka的命令启动:bin/zookeeper- ...

  8. 编程范式 epesode7,8 stack存放指针类型and heap,register

    这一节从后往前写. ____stack and heap ___stack由 汇编语言操控管理,数据先入后出. 栈是存放局部变量,函数调用子函数时,该函数在栈中占用的空间会增大,用于存放子函数的局部变 ...

  9. sql语句备份

    1.新采购需求查询 SELECT p.sku, g.GoodsName, w.WarehouseID, w.WarehouseName, s.FullNameFROM PurchaseRequires ...

  10. WebForm ASP开发方式、 IIS服务器以及WebForm开发基础

    网页端 B/S两种:(ASP.NET  --网站应用开发技术) WebForm:  微软最先出现的网站开发技术 MVC:  后来开发,为了让java.PHP转过来的开发人员更容易接受使用 客户端 C/ ...