牛客每日练习----德玛西亚万岁,求最值,小牛再战

我喜欢给自己压力,必须得定一个很高的目标,逼自己朝着这个目标前进,不管会不会实现,都是一个动力。                                      ----喻言

链接:https://ac.nowcoder.com/acm/problem/15034
来源:牛客网

题目描述

德玛西亚是一个实力雄厚、奉公守法的国家,有着功勋卓著的光荣军史。

这里非常重视正义、荣耀、职责的意识形态,这里的人民为此感到强烈自豪。

有一天他们想去制裁邪恶的比尔吉沃特,于是派遣了自己最优秀的战士。

结果比尔吉沃特领土太小,只有长为n宽为m共计n*m块土地,其中有些土

地标记为0表示为高山峻岭或者深海湖泊,英雄们无法在其中站立,只有标

记为1的土地才能容纳一个英雄。德玛西亚的英雄们战斗时有一个特点,他

们不希望队友站在自己旁边显得很暧昧。请问最多能有多少种安排德玛西

亚英雄的方法?

 

输入描述:

输入包含多组测试数据;
每组数据的第一行包含2个整数n和m (n <= 12, m <= 12 ),之间用空格隔开;
接下来的n行,每行m个数,表示n*m的比尔吉沃特领土。

输出描述:

输出一个整数n代表安排应用的方法。
(答案取膜100000000)

示例1

输入

复制

3 3
1 1 1
0 1 1
1 0 0

输出

复制

24
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
const int mod=1e8;  
const int maxn=20;
int dp[maxn][1<<maxn];
int a[maxn],n,m;
signed main(){
    while(cin>>n>>m){
    	int jg=0;
        for(int i=1;i<=n;i++)
            for(int s=0;s<(1<<m);s++)
                dp[i][s]=0;
        for(int i=1;i<=n;i++){
            int tmp=0;
            for(int j=0;j<m;j++){
                int x;
				cin>>x;
                if(x)
					tmp+=(1<<j);
            }
            a[i]=tmp;
        }
        dp[0][0]=1;
        for(int i=1;i<=n;i++){
            for(int s=0;s<(1<<m);s++){
                if((s&a[i])!=s)
					continue;
                if(s&(s<<1))
					continue;
                for(int j=0;j<(1<<m);j++){
                    if(j&s)
						continue;
                    dp[i][s]=(dp[i][s]+dp[i-1][j])%mod;
                }
            }
        }
        for(int s=0;s<(1<<m);s++)
            jg=(jg+dp[n][s])%mod;
        cout<<jg<<endl;
    }
    return 0;
}

链接:https://ac.nowcoder.com/acm/problem/15052
来源:牛客网

题目描述

给你一个长为n的序列a

定义f(i,j)=(i-j)2+g(i,j)2

g是这样的一个函数

求最小的f(i,j)的值,i!=j

输入描述:

第一行一个数n
之后一行n个数表示序列a

输出描述:

输出一行一个数表示答案

示例1

输入

复制

4
1 0 0 -1

输出

复制

1

备注:

对于100%的数据,2 <= n <= 100000 , |ai| <= 10000

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
typedef long long ll;
using namespace std;
const int mod=1e8;  
const int maxn=20;
long long a[100010];
int n,x;
ll mi=llinf;
int main()
{
    
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        a[i]=a[i-1]+x;
    }
    for(int i=1;i<=n;i++)
    {
         for(int j=i;j<=i+1;j++)
         {
            ll ls = (a[j]-a[i-1])*(a[j]-a[i-1])+(j-i+1)*(j-i+1);
            mi=mi>ls?ls:mi;
         }
    }
    printf("%lld\n",mi);
    return 0;
}

链接:https://ac.nowcoder.com/acm/problem/15066
来源:牛客网

题目描述

共有N堆石子,已知每堆中石子的数量,两个人轮流取石子,每次只能选择N堆石子中的一堆取一定数量的石子(最少取一个),取过子之后,还可以将该堆石子中剩余的石子随意选取几个放到其它的任意一堆或几堆上。等哪个人无法取子时就表示此人输掉了游戏。注意:一堆石子没有子之后,就不能再往此处放石子了。

假设每次都是小牛先取石子,并且游戏双方都绝对聪明,现在给你石子的堆数、每堆石子的数量,请判断出小牛能否获胜。

输入描述:

可能有多组测试数据(测试数据组数不超过1000)
每组测试数据的第一行是一个整数,表示N(1<=N<=10)
第二行是N个整数分别表示该堆石子中石子的数量。(每堆石子数目不超过100)
当输入的N为0时,表示输入结束

输出描述:

对于每组测试数据,输出Win表示小牛可以获胜,输出Lose表示小牛必然会败。

示例1

输入

复制

3
2 1 3
2
1 1
0

输出

复制

Win
Lose

备注:

提示:
例如:如果最开始有4堆石子,石子个数分别为3 1 4 2,而小牛想决定要先拿走第三堆石子中的两个石子(石子堆状态变为3 1 2 2),然后他可以使石子堆达到的状态有以下几种:
3 1 2 2(不再移动石子)
4 1 1 2(移动到第一堆一个)
3 2 1 2(移动到第二堆一个)
3 1 1 3(移动到第四堆一个)
5 1 0 2(全部移动到第一堆)
3 3 0 2(全部移动到第二堆)
3 1 0 4(全部移动到最后)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
typedef long long ll;
using namespace std;
const int mod=1e8;  
const int maxn=20;
ll n,a[110];
int main(){
    while(cin>>n&&n!=0){
    	ll jg=0;
        for(ll i=1;i<=n;i++){
            cin>>a[i];
            jg=jg^a[i];
        }
        if(n&1||jg)
            printf("Win\n");
        else
            printf("Lose\n");
    }
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
德玛杰是一个网站前端特效源码,于2021年3月6日发布。这个特效源码是使用HTML5、CSS3和JavaScript制作的一个响应式设计。响应式设计是指根据不同设备(如电脑、平板电脑和手机)的屏幕大小和分辨率,自动调整网站的布局和样式,以提供更好的用户体验。 德玛杰的特效源码包含了许多令人惊艳的特效效果,例如页面滚动时的平滑过渡效果、鼠标悬停时的动画效果和图片加载时的渐入效果等。这些特效效果可以通过HTML5和CSS3的新特性以及JavaScript的动画库来实现。 为了使用德玛杰的特效源码,你需要将HTML和CSS代码嵌入到你的网站中,并在JavaScript中调用相应的函数。然后,根据你的具体需和喜好,你可以自定义特效的样式和配置参数。 德玛杰的特效源码充分展示了前端开发的创造力和技术实力。通过使用这些源码,你可以为你的网站增添独特而且吸引人的特效效果,提升用户对网站的体验和赏析。无论你是一名专业的前端开发人员还是一个对网页设计感兴趣的爱好者,德玛杰的特效源码都会给你带来新的灵感和学习的机会。 总之,德玛杰是一个使用HTML5、CSS3和JavaScript制作的响应式网站前端特效源码,它通过各种特效效果增添了网站的视觉吸引力和用户体验。无论你是想给自己的网站增添一些特效效果,还是想学习前端开发的技术,德玛杰都是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值