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 ...
随机推荐
- RHEL6.4上Samba/NFS服务器简单配置
近期在RHEL6.4上尝试搭建一个NAS,底层使用XFS文件系统,对外主要提供samba协议和NFS协议共享,这里把主要步骤记录下来. 环境:RHEL6.4,IP:192.168.50.117 1.关 ...
- 什么是Entitlement
Entitlement(权限),可以想象成App里用于描述该App可以调用哪些服务的字符串.苹果的操作系统(mac os或者iOS)会通过检查这个串,决定这个应用是否可以调用相关功能.比如iCloud ...
- how to make a function from using global var to not using it
let say, we want to find the bottom left node in a tree.one way to do it is using global vars: /** * ...
- Unity整合Asp.Net MVC
先来看一下我们的解决方案 我们建立Yubay.Models项目, using System; using System.Collections.Generic; using System.Data.E ...
- Low Speed High Torque Hydraulic Motor: Motion Performance
Crank connecting rod type low speed high torque hydraulic motor is used earlier, which is called Sta ...
- Spring-01 注解实现IOC
Spring框架四大原则 使用pojo进行轻量级和最小侵入式开发. 通过依赖注入和基于接口编程实现松耦合. 使用AOP和默认习惯进行声明式编程. 使用AOP和模板(template)减少模式化代码. ...
- docker运行时设置redis密码并替换redis默认的dump.rdb
docker run -itd --name test -p 6379:6379 -v /tmp/dump.rdb:/data/dump.rdb redis:4.0.8 --requirepass ' ...
- Mac下Apache服务器的初步搭建
回送地址 127.0.0.1(localhost) ping 这个地址可以检测网卡是否正常 ping 本地地址如果不正常说明网线挂了 // 启动 sudo apachectl -k start ...
- 天梯赛L1 题解
L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. AC代码:(直接输出记性) #include & ...
- python 模块学习(二)
一.日志模块(logging ) 日志是一种追踪软件运行时所发生事件的方法 1.简单的日志编写(文件输出) import logging # 日志模块 # 日志配置,把日志内容存到文件中 loggin ...