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;}
};
正常人类版
转载于:https://www.cnblogs.com/forgot93/p/4483278.html
Topcoder 658Div2相关推荐
- *[topcoder]TheTree
http://community.topcoder.com/stat?c=problem_statement&pm=12746&rd=15703 这道题有意思.给了树的根和每层节点的个 ...
- TopCoder 入门教程 -- sqybi完善版
本文根据经典的TC教程完善和改编. TopCoder:http://www.topcoder.com/ 基本规则 TopCoder的比赛类型很多,最常见的是周赛SRM(Single Round Mat ...
- TOPCODER SAM 686 div1 300
// TOPCODER SAM 686 div1 300 Problem Statement 带有小中括号的括号序列,问可以去掉多少子串,使得剩下的非空串是合法的. Constraints 字符串长度 ...
- Topcoder SRM 697题解
Topcoder SRM 697题解 D1L1 分子分母同乘a[i]: \(a_{i}^{b_{i}+1} mod \prod a_i = 0\) 然后我们考虑质因子p,设质因子p在a[i]中出现cn ...
- Topcoder Srm 671 Div2 1000 BearDestroysDiv2
\(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...
- TopCoder入门教程
from http://hi.baidu.com/juart/blog/item/e0ef838b705eb9d4fd1f1039.html 基本规则 TopCoder的比赛类型很多,最常见的是周赛S ...
- Ubuntu下Topcoder配置
先去下载一个http://community.topcoder.com/tc?module=Static&d1=applet&d2=partial-support 并且确保jdk可以使 ...
- topcoder srm 714 div1
problem1 link 倒着想.每次添加一个右括号再添加一个左括号,直到还原.那么每次的右括号的选择范围为当前左括号后面的右括号减去后面已经使用的右括号. problem2 link 令$h(x) ...
- Virtual Judge —— Nim TopCoder - 11469
Problem Statement 问题陈述 Alice and Bob are going to play a famous game called Nim. 爱丽丝和鲍勃将要玩一个著名的游戏叫尼姆 ...
最新文章
- 【FFmpeg】RTSP、RTMP相关命令及开源项目
- Mysql不需要身份验证便可远程连接故障
- 1047. 删除字符串中的所有相邻重复项
- C语言 十六进制整数字符串转十进制整数
- java 字节输入流_JavaIO流(一)-字节输入流与字符输入流
- 【第一章】MySQL数据概述
- 【数字信号处理】基于matlab GUI IIR低通+FIR高通信号时域+频谱分析【含Matlab源码 1029期】
- mybatis逆向工程利用mybatis-generator-core自动生成代码
- Linux之校准服务器时间
- android全面屏像素密度,手机屏幕分辨率、PPI像素密度科普知识大全
- 程序员必备的25个好网站汇总
- python画图星空_编程从绘画开始:用Python画一幅《月夜星空》图
- 计算机每次关机需要配置,电脑一键关机怎么设置 电脑关机一步到位设置教程...
- 报错https://chat.openai.com/ api/auth/ session 429怎么办
- 呀,葵花宝典![IT项目经理成长晋升记2]
- Python爬虫新手教程:微医挂号网医生数据抓取
- BZOJ 2121: 字符串游戏
- python 按列读取数据并写入txt_Python数据分析之Pandas读写外部数据文件!
- C# DateTime 24小时格式
- WEBGIS开发 数据处理软件CesiumLab学习使用总结
热门文章
- 对注册表操作的REG函数
- 【Java】_2_Java程序入门第五课
- python findcontours_基于Python的opencv学习练习(十二) findContours()轮廓与绘制drawContours()...
- 阈值和阀值的区别_基于双阈值设定的图像识别产品策略
- 千寻和省cors精度对比_测量员新手上路攻略:解析省CORS和千寻CORS账号区别及其如何选择运用...
- java 舍_Java中BigDecimal的8种舍入模式
- 贝叶斯估计和极大似然估计
- 达梦数据库代码导出_达梦数据库常见问题-命令行工具-导入导出工具
- 小学三年级计算机导学案,小学三年级学科导学案.doc
- pytorch使用早停策略