exam8.29

咕了好几篇后...

我终于开始重新写了

T1:

  不会,没思路,暴搜还可能会(一开始我以为暴搜时间复杂度为$\Theta (mn ^ k)$)

  于是码出了暴搜...

  跑一遍$(4,4,5)$,然后...跑不出来!!!

  输出了一下方案数,发现有问题

  然后发现是$\Theta (k ^ {mn})$

  于是我疯了,开始打表不要脸

  $(4,4,5)$跑了1h没跑出来,放弃...然而没有这个点

考场代码:

#include<iostream>
#include<cstdio> #define int long long using namespace std; const int mod=1e9+7; int a[6][6]; int n,m,k; int ans[30]; void work() { int nans=0; for(register int q=1;q<=n;qT1:>++) for(register int w=1;w<=m;w++) { int bo=1; for(register int e=1;e<=n;e++) if(e!=q&&a[e][w]>=a[q][w]) { bo=0; break; } if(bo) { for(int e=1;e<=m;e++) if(e!=w&&a[q][e]>=a[q][w]) { bo=0; break; } } nans+=bo; } ++ans[nans]; ans[nans]%=mod; } int cnt; void dfs(int x,int y) { if(x==n&&y==m+1) { ++cnt; //cout<<cnt<<endl; /*for(int q=1;q<=n;q++)  {  for(int w=1;w<=m;w++)  cout<<a[q][w]<<" ";  cout<<endl;  }  cout<<endl;*/ work(); return; } int res=y+1,tmp=x

转载于:https://www.cnblogs.com/ooovooo/p/11428714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值