搜索
入门
ddgo
给我高高飞起来啊!(ACM退役,转JAVA后端了)
展开
-
Tromino 棋盘覆盖谜题 分治求解
给一个 2n2^n2n * 2n2^n2n 的棋盘。每次把棋盘划分成4个部分,每个部分都是2n−12^{n-1}2n−1 * 2n−12^{n-1}2n−1 把有黑色点的区域继续递归下去,剩下的3个区域,各自把靠两条分割线最近的一个点染黑,形成一个L的样子。例如 递归下去直到n = 1 会发现刚好有一个已经染色,剩下3个形成一个L.测试代码:#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#include<bi原创 2020-10-07 23:35:32 · 748 阅读 · 0 评论 -
反素数
题目地址证明书上有 P141(算法进阶指南)。记录代码:#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#include<bits/stdc++.h>#define int long long#define sc scanf#define pf printfusing namespace std;typedef pair<int,int> pii;typedef long long ll原创 2020-08-17 21:50:23 · 199 阅读 · 0 评论 -
uva 1103
题目地址题意分析:为了方便确定,我么发现有个东西,即构成图案中里面的空白处的数量是不一样的,所以找到每一个图案里面有多少个空白就可以知道是哪个图案。故可以有char ans[] = {'W','A','K','J','S','D'};16进制转二进制4位的预处理map<char,string> mp;void change_bit(){ char p[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','原创 2020-07-09 22:58:11 · 134 阅读 · 0 评论 -
uva 129
题目链接dfs 主要是判断当前加入这个字母后是否满足无两个相邻的子串。因为每一个先前的串全都是满足题意的,要每次判断当前的串是否满足题意。用判断后缀的方法就可以了。(比如 有长度为6的串,当前变为7了,不用判断,23,45,是不是一样,因为之前已经处理过了)取最后一个和倒数第一个,取倒数两个和倒数两个前面的两个,…。j 就是所取的子串的长度 ,cur是从0开始的,所以长度要加1for(int j=1;j*2 <= cur + 1;j++){ bool ok = true; for(原创 2020-07-10 16:41:53 · 146 阅读 · 0 评论 -
uva 140
题目地址这题就是求一个全排列,判断最小的最大带宽。加上剪枝优化让程序更快速,当前已经有一个最小值的时候,若此时结果的到了一个更大的带宽,就不用处理了。这题输入处理和带宽计算要弄清楚:输入处理,直接用二维标记a和b是否相邻。 这里e是存下出现的字母(后面有去重处理,也可以直接set),mp是标记两个字母是否能够到达。char ch; int t = 1; mi = INF; for(int i=0;i<(int)s.size();i++) { if(s[i] == ':')原创 2020-07-10 22:42:46 · 179 阅读 · 0 评论 -
Escape(有加速铭文)(优先队列)
题目:BH is in a maze,the maze is a matrix,he wants to escape!输入The input consists of multiple test cases.For each case,the first line contains 2 integers N,M( 1 <= N, M <= 100 ).Each of the f...原创 2020-02-22 21:37:56 · 231 阅读 · 0 评论