摘要:
给定一个1….n的正整数序列,每次操作可以从序列寻找出一个或多个正整数,然后同时减去一个相同的正整数。通过画图可以发现只要把后一半都减去n/2就和前一半一样了,所以有递推式 f(n )=f(n/2) + 1#include using namespace std;int f(int n) { return n == 1 ? 1 : f(n >> 1) + 1;}int main() { int n; while(~scanf("%d",&n)) { printf("%d\n",f(n)); } return 0;} 阅读全文
摘要:
给你一个n*n的矩阵,你的任务是把尽量少的0变成1,使得每个数字的上下左右元素之和是偶数。直接暴力肯定会超时,找到行与行之间的关系,可以发现只要枚举第一行的所有情况,后面行都可以算出来。#include #include #include using namespace std;const int maxn = 16;const int INF = 2100000000 / 2;int mat[maxn][maxn],ans,n;int getsum(int x,int y,int m[maxn][maxn]) { int ans = 0; if(x > 1) ans += m[x - 阅读全文