摘要:
题目的意思是在一个有空地,墙,和草的棋盘上放机器人, 机器人只能放在空地上, 机器人很强大可以攻击上、下、左、右四个方向, 但是不能穿透墙。 然后求最多能放置多少个机器人使其不互相攻击.刚开始拿到题的时候,苦苦思考怎么建图, 连将整个图放大25倍的烂方法想了一遍,最后没能想出正确的解法。 因为对二分图构图以及求解不熟悉。 所以想不出怎样构建图首先可以知道的是, 在一个点u选择了另一个点v后, u点就不能选择其他的点,联想到这题在一行中选择了对应一个列的一点,那么这行中的其他点(直接到达的)就不能选了。 方之,对于点v 也是,选择了u点就不能选择其他的点, 对应于一个列上只能选择一个点相应的行。 阅读全文
摘要:
刚刚看到很多人都用DFS+剪枝做数独。。 顿时不爽了, 我家DLX 何在。。。不过想想确实这个搜索剪枝真的很多,不过怎么说还是DLX 快...#include <stdio.h>#include <string.h>#include <iostream>using namespace std;#define N 300000#define INF 0x3fffffffchar g[10][10];int ans[1000];int u[5000],d[5000],r[5000],l[5000],num[5000],H[1000],save[5000],sav 阅读全文