UVA 1605 Building for UN(思维)】的更多相关文章

题目链接: https://cn.vjudge.net/problem/UVA-1605#author=0 /* 问题 设计一个包含若干层的联合国大厦,其中每一层都是等大的网格,每个格子分配给一个国家,使得任意两个不同的国家 都有一对相邻的格子,也就是说要么同层中有公共边的格子,要么是相邻层的同一个格子. 解题思路 首先看到这个题感觉无从下手,有种先放弃的感觉,看了分析,又读了读题,最多50个国家,每个国家用大写或者 小写字母表示,那分为两层,第一层的第i行是国家i,第二层的每j列国家j,这样就…
The United Nations has decided to build a new headquarters in Saint Petersburg, Russia. It will have aform of a rectangular parallelepiped and will consist of several rectangular oors, one on top of another.Each oor is a rectangular grid of the same…
题意: 有n个国家,要求你设计一栋楼并为这n个国家划分房间,要求国家的房间必须连通,且每两个国家之间必须有一间房间是相邻的 分析: 其实非常简单,完全被样例误导了.只需要设计两层就可以了,每个国家占第一层的每一行,占第二层的每一列,这样的话就既满足联通又相邻了 代码: #include<cstdio>#include<cstring>#define maxn 60char ans[maxn]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm…
题意:给出n个国家,给它们分配办公室,使得任意两个国家都有一对相邻的格子 看的紫书,最开始看的时候不理解 后来还是搜了题解--- 发现是这样的 比如说5个国家 应该输出 AAAA BBBB CCCC DDDD EEEE ABCDE ABCDE ABCDE ABCDE ABCDE 按照这样的办法来放置就好了 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #inclu…
题意:一个联合国大楼每层都有数量相等大小相同的格子,将其分配给n个国家,使任意两个不同的国家都相邻(同层有公共边或相邻层的同一个格子). 分析:可以设计一个只有两层的大楼,第一层每个国家占一行,第二层每个国家占一列,即每层都是n*n的. #pragma comment(linker, "/STACK:102400000, 102400000") #include<cstdio> #include<cstring> #include<cstdlib>…
UVA.10881 Piotr's Ants (思维题) 题意分析 有一根长度为L cm的木棍,上有n只蚂蚁,蚂蚁要么向左爬,要么向右,速度均为1cm/s,若2只蚂蚁相撞,则蚂蚁同时调头.求解第T秒时这n只蚂蚁的状态. 若此时相撞 输出:Turning 若此时已经掉下木棍 输出:Fell off 且要按照输入时的顺序输出各个蚂蚁的状态 此题难点有2个: 1.其实相撞可以理解为交叉走过(因为速度相同). 2.蚂蚁的相对位置保持不变. 想明白了这两点,难点就转换成了: 1.如何确定蚂蚁的位置: 2.…
UVA.11300 Spreading the Wealth (思维题) 题意分析 现给出n个人,每个人手中有a[i]个数的金币,每个人能给其左右相邻的人金币,现在要求你安排传递金币的方案,使得每个人手中的金币个数相等,并求出转移金币的最小个数.保证(Σa[i])/n为整数. 第一眼没有思绪,这种推导方式还是第一次见到. 设ai为第i个人初始金币数量,xi为第i个人转移给i-1个人金币的数量(i为1表示转移给第n个人),(Σa[i])/n = m. 有了上述的基础,可以写出每个人的金币表达式:…
UVA 11636 Hello World 二的幂答案就是二进制长度减1,不是二的幂答案就是是二进制长度. #include<cstdio> int main() { ; ){ ; ) r++; printf("Case %d: %d\n",++kas,r); } ; } LA 3602 DNA Consensus String 贪心构造,每一位上选出现次数最多的. #include<bits/stdc++.h> using namespace std; ,ma…
题意: 有n个国家,要设计一栋长方体的大楼,使得每个单位方格都属于其中一个国家,而且每个国家都要和其他国家相邻. 分析: 紫书上有一种很巧妙的构造方法: 一共有2层,每层n×n.一层是每行一个国家,另一层是每列一个国家. #include <iostream> #include <cstdio> #include <cstring> using namespace std; ; ][maxn][maxn]; char ToChar(int x) { ) return '…
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1980 题意 n个数,要求正负相间,绝对值增长,问n个数能组成的这样数列最长多长 思路 明显,分成正负两组,挨个在两组内取最小,直到不能取就行 代码 #include <algorithm> #include <cassert> #include <cma…