摘要:
"传送门" 首先考虑定下一个端点,然后剩下的就可以递推了 一开始想的是定下左端点,然后预处理出位置最远能看到的位置,后来发现时间GG了 看题解发现定右端点优秀得多 记录下当前$r$最远能看到的位置$p$,能看到$[p,r]$一共需要几个守卫,这个后缀和一下就好了 然后斜率的判断,只需要$l,r$的斜 阅读全文
摘要:
"传送门" 对于一些植物存在保护它的植物,比如能攻击到它的和它右边的植物都能保护它 这就符合最大权闭合子图的定义 按照最大权闭合子图的建模方式,正权连源点,负权连汇点,中间就对于每个植物连向保护它的植物就好了 可惜有些保护是成环的,环内的植物以及被这个环保护的植物你一个也碰不了 所以先反向建图,跑一 阅读全文
摘要:
"传送门" 看到数据范围这么小,就没想过暴力的办法么 考虑肯定是从近走到远,所以走的点之间一定没有其他的点,所以我们就可以暴力的建图,然后暴力的去dfs就好了 代码: c++ include include include using namespace std; void read(int &x) 阅读全文
摘要:
"传送门" 暴力啊,直接树套树上啊 线段树套splay,卡卡常就直接A了 代码: 阅读全文
摘要:
"传送门" 考虑每次交换都不会改变每个数所在的行和列(不是指编号,而是指和它在同一行或者同一列的数不会发生变化) 由于每个数互不相同,所以记录下每个数所在的行和列,暴力判断就好了 代码: c++ include include include include using namespace std; 阅读全文
摘要:
"传送门" 普通数位dp 代码: c++ include include include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=getchar(); !isdigi 阅读全文
摘要:
"传送门" 状压dp 考虑某些店可以不走,所以做的时候记个前缀min就好了 代码: c++ include include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=g 阅读全文
摘要:
"传送门" 显然可以发现把$k$状压 显然可以发现三维的dp,$f[i][j][k]$代表当前到$i$,已经连了$j$条边,当前$i\ to\ i k$奇偶性为$k$,然而会重复算 所以再加一维$t$,表示上一次连的边为$i i k+c$ 代码: 阅读全文
摘要:
"传送门" 设状态$f[i][j][k]$为枚举到第$i$行,放国王的状态为$j$,目前一共放了$k$个国王 算出来复杂度挺高的,但是剪枝比较niubi,然后就没了 代码: c++ include include include include using namespace std; void r 阅读全文
摘要:
"传送门" 神仙题吧,很有东西 看了题解才会做的 先提取有用信息: 1、这个密室是一棵有n个节点的完全二叉树 2、在点灯的过程中,要保证任意时刻所有被点亮的灯泡必须连通 3、在点亮一个灯泡后必须先点亮其子树所有灯泡才能点亮其他灯泡 所以get到信息 1、树高严格$logn$ 2、点亮的灯泡组成一个联 阅读全文