Topcoder 658Div2
补题风向标——>>
假装题意知道
A:暴力合成一遍了
n=s.size();
m=t.size();
ss+=s;
tt+=t;
if (ss==tt) or not;
B:题意是给定 1个或者2个或者3个,先假设3个数啊:a,b,c;
每次你能a-9,b-3,c-1 类似如此过程,求最小操作数。DIV 1 650是加强版 数的个数<=50;
只会最暴力,然后DP数组保存状态,已经都最暴力了,所以不用想很多了
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<string.h>
#include<string>
#include<iostream>
#include<vector> using namespace std; int a[123];
int dp[66][66][66];
int n; int dfs(int x,int y,int z)
{
if (x<=0&&y<=0&&z<=0) return 0;
if (dp[x][y][z]) return dp[x][y][z];
int mx=1234;
mx=min(mx,dfs(max(0,x-1),max(0,y-3),max(0,z-9)));
mx=min(mx,dfs(max(0,x-1),max(0,y-9),max(0,z-3)));
mx=min(mx,dfs(max(0,x-3),max(0,y-1),max(0,z-9)));
mx=min(mx,dfs(max(0,x-3),max(0,y-9),max(0,z-1)));
mx=min(mx,dfs(max(0,x-9),max(0,y-3),max(0,z-1)));
mx=min(mx,dfs(max(0,x-9),max(0,y-1),max(0,z-3)));
return dp[x][y][z]=mx+1;
}
class MutaliskEasy
{
public:
int minimalAttacks(vector <int> x)
{
n=x.size();
memset(dp,0,sizeof(dp));
sort(x.begin(),x.end());
for (int i=0;i<n;i++) a[i]=x[i];
int ans=0;
if (n==1) return (a[0]+8)/9;
if (n==2) a[2]=0; return dfs(a[0],a[1],a[2]);
}
}; int main()
{ int n;
vector<int> q;
cin>>n;
for (int i=0;i<n;i++)
{
int x;
cin>>x;
q.push_back(x);
}
MutaliskEasy p;
cout<<p.minimalAttacks(q);
return 0; }
C: 是DIV1 A
题目很炫酷啦;
给一颗树 X[I][J]=='O',表示I,J 长度为奇数,X[I][J]=='E' 表是为偶数 ‘?’ 不确定
先来第一份,类似floyd dp 找,我们知道奇数+偶数=奇数,其他全为偶数。
我们先判断 是否不满足答案 输出-1;
然后构造:0 到其他点 为奇数 连一条边,
0到Y Y到其他边 再连一条边,0->y 是奇书,0->其他边为偶数
虽然说得很容统,不过确实不会 ,想了很久,脑洞大。。
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <ctime>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <deque>
#include <set> using namespace std; /* int dfs(int v,int w)
{
c[v]=w;
for (int i=0;i<n;i++)
{
if (x[v][i]=='E'&&x[i][v]=='O') return 0;
if (x[v][i]=='O'&&x[i][v]=='E') return 0; if (x[v][i]=='E'||x[i][v]=='E')
{
if (c[i]==0)
{
if (dfs(i,w)==0) return 0;
}
else if (w!=c[i]) return 0;
}
else if (x[v][i]=='O'||x[i][v]=='O')
{
if (c[i]==0)
{
if (dfs(i,w==1?2:1)==0) return 0;
}
else if (w==c[i]) return 0;
}
}
return 1;
}
*/
int a[60][60]; class OddEvenTree{
public:
vector<int> getTree(vector <string> x){
int n=x[0].size(); for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
if (x[i][j]=='O') a[i][j]=1; vector<int> t;
t.push_back(-1);
for (int k=0;k<n;k++)
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
if ((a[i][k]+a[k][j])%2!=a[i][j]) return t; vector<int>res;
int y=-1;
for (int i=1;i<n;i++)
if (a[0][i])
{
res.push_back(0);
res.push_back(i);
y=i;
} if (y==-1) return t;
for (int i=1;i<n;i++)
if (!a[0][i])
{
res.push_back(y);
res.push_back(i);
}
return res;
}
};
DFS版。。
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <ctime>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <deque>
#include <set> using namespace std; /* int dfs(int v,int w)
{
c[v]=w;
for (int i=0;i<n;i++)
{
if (x[v][i]=='E'&&x[i][v]=='O') return 0;
if (x[v][i]=='O'&&x[i][v]=='E') return 0; if (x[v][i]=='E'||x[i][v]=='E')
{
if (c[i]==0)
{
if (dfs(i,w)==0) return 0;
}
else if (w!=c[i]) return 0;
}
else if (x[v][i]=='O'||x[i][v]=='O')
{
if (c[i]==0)
{
if (dfs(i,w==1?2:1)==0) return 0;
}
else if (w==c[i]) return 0;
}
}
return 1;
}
*/
int a[60][60]; class OddEvenTree{
public:
vector<int> getTree(vector <string> x){
int n=x[0].size(); for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
if (x[i][j]=='O') a[i][j]=1; vector<int> t;
t.push_back(-1);
for (int k=0;k<n;k++)
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
if ((a[i][k]+a[k][j])%2!=a[i][j]) return t; vector<int>res;
int y=-1;
for (int i=1;i<n;i++)
if (a[0][i])
{
res.push_back(0);
res.push_back(i);
y=i;
} if (y==-1) return t;
for (int i=1;i<n;i++)
if (!a[0][i])
{
res.push_back(y);
res.push_back(i);
}
return res;
}
};
正常人类版
Topcoder 658Div2的更多相关文章
- TopCoder kawigiEdit插件配置
kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/ ...
- 记第一次TopCoder, 练习SRM 583 div2 250
今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...
- TopCoder比赛总结表
TopCoder 250 500 ...
- Topcoder几例C++字符串应用
本文写于9月初,是利用Topcoder准备应聘时的机试环节临时补习的C++的一部分内容.签约之后,没有再进行练习,此文暂告一段落. 换句话说,就是本文太监了,一直做草稿看着别扭,删掉又觉得可惜,索性发 ...
- TopCoder
在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web ar ...
- TopCoder SRM 596 DIV 1 250
body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...
- 求拓扑排序的数量,例题 topcoder srm 654 div2 500
周赛时遇到的一道比较有意思的题目: Problem Statement There are N rooms in Maki's new house. The rooms are number ...
- TopCoder SRM 590
第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement Fox Ciel is going to play Gomoku with her friend ...
- Topcoder Arena插件配置和训练指南
一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...
随机推荐
- Linux环境下手动配置sbt
一.下载sbt安装包 从sbt官网下载地址:http://www.scala-sbt.org/download.html下载安装包,以sbt-0.13.13.tgz为例. 二.安装 1.将下载的二进制 ...
- 给Sublime Text3 设置自定义快捷键
Preferrences -> Key Bindings-User打开用户自定义快捷键文件,添加以下代码,保存. [ { "keys": ["ctrl+shift+ ...
- Solidity 智能合约开发
需要专用浏览器或部署节点支持. Solidity (中文:固态,固体)是一种语法与Javascript相似的高级语言,它为Ethereum虚拟机(EVM)编译代码而设计. Solidity是静态类型的 ...
- Spring事务管理全面分析
Spring 事务属性分析什么是事物 事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常 ...
- linux centos 中目录结构的含义
文件夹的含义 文件夹路径 含义 / 所有内容的开始 /root 系统管理员目录 /bin 缺省的liunx工具,就是存储命令的目录 环境变量等等 /etc 系统的配置 配置文件的存 ...
- dom和bom是什么?
DOM:文档对象模型,描述了处理网页内容的方法和接口.最根本对象是document(window.document). 由于DOM的操作对象是文档,所以DOM和浏览器没有直接关系. 部署在服务器上的文 ...
- tabsGif
tabsGif
- docker 应用数据的管理之bind mounts
创建容器使用bind mounts 挂载文件系统.宿主机文件系统会覆盖掉容器里初始数据 [root@localhost ~]# mkdir /www/htpm -pv mkdir: 已创建目录 &qu ...
- QT_3
1.QT中命名的规范和常用的快捷键 1.1 命名规范: 类名:首字母大写 多个单词时单词与单词之间首 字母大写 函数名:变量名称 首字母小写 多个单词时,单词和单词之间首字母大写 1. ...
- Hibernate初始化环境的基本封装
public class HibernateUtils { private static SessionFactory sf; static{ sf = new Configuration().con ...