Topcoder SRM 638 DIV 2 (大力出奇迹)
水题,就是一个暴力。大力出奇迹。
Problem Statement |
|||||||||||||
| There is a narrow passage. Inside the passage there are some wolves. You are given a vector <int> size that contains the sizes of those wolves, from left to right. The passage is so narrow that some pairs of wolves cannot pass by each other. More precisely, two adjacent wolves may swap places if and only if the sum of their sizes is maxSizeSum or less. Assuming that no wolves leave the passage, what is the number of different permutations of wolves in the passage? Note that two wolves are considered different even if they have the same size. Compute and return the number of permutations of wolves that can be obtained from their initial order by swapping a pair of wolves zero or more times. |
|||||||||||||
Definition |
|||||||||||||
|
|||||||||||||
Limits |
|||||||||||||
|
|||||||||||||
Constraints |
|||||||||||||
| - | size will contain between 1 and 6 elements, inclusive. | ||||||||||||
| - | Each element in size will be between 1 and 1,000, inclusive. | ||||||||||||
| - | maxSizeSum will be between 1 and 1,000, inclusive. | ||||||||||||
Examples |
|||||||||||||
| 0) | |||||||||||||
|
|||||||||||||
| 1) | |||||||||||||
|
|||||||||||||
| 2) | |||||||||||||
|
|||||||||||||
| 3) | |||||||||||||
|
|||||||||||||
| 4) | |||||||||||||
|
|||||||||||||
| 5) | |||||||||||||
|
|||||||||||||
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <iomanip>
#include <stdio.h>
#include <string>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
#define eps 1e-10
///#define M 1000100
///#define LL __int64
#define LL long long
#define INF 0x7fffffff
#define PI 3.1415926535898
#define zero(x) ((fabs(x)<eps)? 0:x) using namespace std; const int maxn = 1000010; int vis[10][10]; class NarrowPassage2Easy
{
public:
int count(vector <int> size, int maxSizeSum)
{
int len = size.size();
memset(vis, 0, sizeof(vis));
for(int i = 1; i <= len; i++)
{
for(int j = i+1; j <= len; j++)
{
int x = size[i-1]+size[j-1];
if(x > maxSizeSum)
{
///vis[i][j] = 1;
vis[j][i] = 1;
}
}
}
for(int i = 1; i <= len; i++)
{
for(int j = 1; j <= len; j++)
{
cout<<vis[i][j]<<" ";
}
cout<<endl;
}
int sum = 0;
if(len == 1) return 1;
if(len == 2)
{
if(size[0]+size[1] > maxSizeSum) return 1;
return 2;
}
if(len == 3)
{
for(int i = 1; i <= len; i++)
{
for(int j = 1; j <= len; j++)
{
if(i == j) continue;
for(int k = 1; k <= len; k++)
{
if(k == i || k == j) continue;
if(vis[i][j] || vis[i][k] || vis[j][k]) continue;
sum++;
}
}
}
}
if(len == 4)
{
for(int i1 = 1; i1 <= len; i1++)
{
for(int i2= 1; i2 <= len; i2++)
{
if(i1 == i2) continue;
for(int i3 = 1; i3 <= len; i3++)
{
if(i1 == i3 || i2 == i3) continue;
for(int i4 = 1; i4 <= len; i4++)
{
if(i1 == i4 || i2 == i4 || i3 == i4) continue;
if(vis[i1][i2] || vis[i1][i3] || vis[i1][i4]
|| vis[i2][i3] ||vis[i2][i4]
||vis[i3][i4]) continue;
sum++;
}
}
}
}
}
if(len == 5)
{
for(int i1 = 1; i1 <= len; i1++)
{
for(int i2= 1; i2 <= len; i2++)
{
if(i1 == i2) continue;
for(int i3 = 1; i3 <= len; i3++)
{
if(i1 == i3 || i2 == i3) continue;
for(int i4 = 1; i4 <= len; i4++)
{
if(i1 == i4 || i2 == i4 || i3 == i4) continue;
for(int i5 = 1; i5 <= len; i5++)
{
if(i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5) continue;
if(vis[i1][i2] || vis[i1][i3] || vis[i1][i4] || vis[i1][i5]
|| vis[i2][i3] ||vis[i2][i4] || vis[i2][i5]
||vis[i3][i4] || vis[i3][i5]
||vis[i4][i5]) continue;
sum++;
}
}
}
}
}
}
if(len == 6)
{
for(int i1 = 1; i1 <= len; i1++)
{
for(int i2= 1; i2 <= len; i2++)
{
if(i1 == i2) continue;
for(int i3 = 1; i3 <= len; i3++)
{
if(i1 == i3 || i2 == i3) continue;
for(int i4 = 1; i4 <= len; i4++)
{
if(i1 == i4 || i2 == i4 || i3 == i4) continue;
for(int i5 = 1; i5 <= len; i5++)
{
if(i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5) continue;
for(int i6 = 1; i6 <= len; i6++)
{
if(i1 == i6 || i2 == i6 || i3 == i6 || i4 == i6 || i6 == i5) continue;
if(vis[i1][i2] || vis[i1][i3] || vis[i1][i4] || vis[i1][i5] || vis[i1][i6]
|| vis[i2][i3] ||vis[i2][i4] || vis[i2][i5] || vis[i2][i6]
||vis[i3][i4] || vis[i3][i5] || vis[i3][i6]
||vis[i4][i5] || vis[i4][i6]
|| vis[i5][i6]) continue;
sum ++;
}
}
}
}
}
}
}
return sum;
}
};
int main()
{
NarrowPassage2Easy a;
vector<int> f;
f.push_back(189);
f.push_back(266);
cout<<a.count(f, 186)<<endl;;
return 0;
}
Topcoder SRM 638 DIV 2 (大力出奇迹)的更多相关文章
- TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E
传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...
- TopCoder SRM 667 Div.2题解
概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复 ...
- TopCoder SRM 596 DIV 1 250
body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...
- Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索
最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...
- Topcoder SRM 648 (div.2)
第一次做TC全部通过,截图纪念一下. 终于蓝了一次,也是TC上第一次变成蓝名,下次就要做Div.1了,希望div1不要挂零..._(:зゝ∠)_ A. KitayutaMart2 万年不变的水题. # ...
- [topcoder]SRM 646 DIV 2
第一题:K等于1或者2,非常简单.略.K更多的情况,http://www.cnblogs.com/lautsie/p/4242975.html,值得思考. 第二题:http://www.cnblogs ...
- [topcoder]SRM 633 DIV 2
第一题,http://community.topcoder.com/stat?c=problem_statement&pm=13462&rd=16076 模拟就可以了. #includ ...
- TopCoder SRM 639 Div.2 500 AliceGameEasy
题意: 一个游戏有n轮,有A和B比赛,谁在第 i 轮得胜,就获得 i 分,给出x,y,问A得x分,B得y分有没有可能,如果有,输出A最少赢的盘数 解题思路: 首先判断n(n+1)/2 = (x+y)是 ...
- TopCoder SRM 639 Div.2 500 AliceGameEasy --乱搞
题意: 一个游戏有n轮,有A和B比赛,谁在第 i 轮得胜,就获得 i 分,给出x,y,问A得x分,B得y分有没有可能,如果有,输出A最少赢的盘数. 解法: 这题是我傻逼了,处理上各种不优越,要使n*( ...
随机推荐
- vue的过渡动画在除了chrome浏览器外的浏览器下不正常的问题
为过渡动画添加mode="out-in"在其它浏览器下面就能正常的使用了
- 配置vscode使它能够在自定义扩展名当中支持emment语法
在.vue文件当中默认是不支持emment的,需要在vscode设置当中设置 "emmet.syntaxProfiles": { "vue-html": &qu ...
- SharePoint 2013 SSO-Secure Store Service在实际案例中的应用
文章目录: Secure Store Service介绍 Secure Store Service部署 Secure Store Service应用 之前有一篇博客讲到使用EMSManagedAPI操 ...
- 洛谷 P 3379 【模板】最近公共祖先(LCA)
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...
- DB2数据库 CASE WHEN的使用
THEN T1.INSURANCEMATURITYDATE ELSE T1.COMMERCIALENDDATE END as m, T1.INSURANCEMATURITYDATE ,T1.COMME ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E DNA Evolution
DNA Evolution 题目让我们联想到树状数组或者线段树,但是如果像普通那样子统计一段的和,空间会爆炸. 所以我们想怎样可以表示一段区间的字符串. 学习一发大佬的解法. 开一个C[10][10] ...
- python笔记4:高级特性
4 高级特性 4.1 切片 [:] *注:-- list和tuple,字符串都支持切片 4.2 迭代 Iteration for ... in 及 for ... in if 两个变量迭代时, 例1 ...
- 进击JavaScript核心 --- (2)函数和预解析机制
一.函数 每个函数都是 Function类型的实例,也具有属性和方法.由于函数也是一个对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定 1.函数的定义方式 (1).函数声明 fun ...
- Arduino可穿戴教程保存源文件与打开已经存在的源文件
Arduino可穿戴教程保存源文件与打开已经存在的源文件 Arduino IDE保存源文件 保存源文件可以通过“文件”菜单的“保存”或者快捷键Ctrl+S完成,如图2.28所示. 图2.28 保 ...
- layui-时间选择器-时间范围选择
HTML: JS: layui.use(['laydate'],function{ }); start:就为你选择的开始日期; end:就为你选择的结束日期 此方式可选择任意范围的时间,时间格式可任意 ...