1564专题

HDU 1564 Play a game 博弈

这道题目是真心没看出来办法,后来看了别人的其实不难 题意: 从一个n*n的角落出发,每次移动到相邻的,而且没有经过的格子上。谁不能操作了谁输。 结论就是n为偶数,先手赢,奇数,后手赢。 S表示起点。 如果n为偶数,那么所有格子可以被2*1的砖块覆盖掉。 这样先手每次都移动到当前1*2的另外一块。先手必赢。 如果n为奇数。出了起始那个店,其余点都可以被覆盖。 所

poj 1564 Sum It Up -- DFS 递归

题意:给一个数 t ,以及 n 个数,求 n 个数中的几个数加起来的和为 t 的情况有多少种。 注意:题目要求相同的组合方式不能出现2次,即 “3 4 1 1 1 1 ” 的结果为:“1+1+1”。 思路:一个  for  循环遍历一遍,每个 i 表示以当前数为起点开始一次DFS递归,当所遍历的和为 t 时,输出该组合方式,如果大于 t 则返回,小于则往下递归。以二维数组保存已经输出过的数据,

UVA 1564 - Widget Factory(高斯消元)

UVA 1564 - Widget Factory 题目链接 题意:n种零件, 给定m个制作时间,每段时间制作k个零件,每种零件有一个制作时间,每段时间用Mon到Sun表示,求每个零件的制作时间,还要判断一下多解和无解的情况 思路:对于每段时间列出一个方程,这样一共列出m个方程解n个变元,利用高斯消元去求解,注意每个方程都是MOD 7的,所以在高斯消元过程中遇到除法要求该数字%7的逆

poj 1564 Sum It Up

http://poj.org/problem?id=1564给你一些数,要求你输出用这些数构成的子集的和等于一个指定的数,用深搜。#include<stdio.h>#include<string.h>int a[15],vis[15];int t,n,flag;void dfs(int i,int sum){if(sum==t){int f;flag=1;for(int k