码迷,mamicode.com
首页 > 其他好文 > 详细

2019.7.7 练习题

时间:2019-07-07 16:02:13      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:nta   ++   编号   代码   i++   mod   toggle   tle   cpp   

A. IP 网络
时间限制 : 5000 MS   空间限制 : 165536 KB
评测说明 : 1000ms
问题描述

可以用一个网络地址和一个子网掩码描述一个子网(即连续的 IP 地址范围)。
其中子网掩码包含 32 个二进制位,前 32-n 位为 1,后 n 位为 0,网络地址的前 32-n 位任意,后 n 位为 0(0<=n<=32) 。 所有前 32-n 位和网络地址相同的 IP 都属于此网络。  

例如,网地址为 194.85.160.176(二进制为 11000010 01010101 10100000 10110000), 子网掩码为 255.255.255.248(二进制为 11111111 11111111 11111111 11111000),则该 子网的 IP 地址范围是 194.85.160.176~194.85.160.183。
现在输入一些网络地址,请你求出包含所有地址的最小的网络(即包含 IP 地址最少的网络)。 

输入格式

第一行为一个整数 m,
接下来的 m 行,每行一个 IP 地址,可能有多个相同的地址出现。

 

输出格式
出两行,表示包含所有输入的 IP 地址的最小网络,第一行是网络地址,第二行是子网掩码。 
这道题是很明显的二进制了 ,但是考试时觉得输入输出特别麻烦就先看的b题

题解:

 

B.排列
时间限制 : - MS   空间限制 : 165536 KB 技术图片
评测说明 : 1000ms
问题描述

将自然数 1 到 n 任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。 例如:对于 1..5 的一个排列:3 2 4 1 5,可得到:3 > 2 < 4 > 1 < 5,其中有两个“>”和 2 个“<” 。 现在给出自然数 n,问在自然数 1..n 的所有排列中,有多少个排列恰好有 k 个“<”。 请你解答这个问题。 

输入格式

包含多组数据。第一行一个整数 T,表示有 T 组数据。  
每组数据的占一行,包含两个整数 n 和 k,它们之间用一个空格分开。 

输出格式

共 T 行,每组数据输出一行,每行一个整数,表示对应输入的排列数,这个数如果很大,则需要 输出 mod 1000000007 的结果。 

 
题解:这是考试唯一a的题 废了很多时间在找规律上 结果emmmm  很久才看出来是动规 
直接给代码  另外,long long 和初始化
#include<bits/stdc++.h>
using namespace std;
long long f[1005][1005],mod=1000000007; 
int main()
{
long long  t,n,k;
cin>>t;
for(int i=1;i<=1000;i++)
f[i][0]=1;
for(int i=1;i<=1000;i++)
for(int j=1;j<=1000;j++)
{
f[i][j]=(f[i-1][j-1]*(i-j)+f[i-1][j]*(j+1))%mod;        
} 
    for(int i=1;i<=t;i++)
    {
    cin>>n>>k;
    cout<<f[n][k]%mod<<endl;    
    }

}

 

C.可爱的猴子
时间限制 : 10000 MS   空间限制 : 65536 KB
问题描述

树上有n只猴子。它们编号为 1 到n。1 号猴子用它的尾巴勾着树枝。剩下的猴子都被其他的猴子用手抓着尾巴(猴子都是头朝下尾巴朝上)。
每只猴子的每只手可以抓住另一只猴子的尾巴。

从0 时刻开始,每一秒都有一只猴子松开它的一只手。这会导致一些猴子掉到地上(它们在地上也能继续松开它们的手,猴子落地的时间很短可以不计)。

你的任务是: 写一个程序,从标准输入读入猴子间抓与被抓住的关系信息,和它们放开手的顺 序,对于每一只猴子算出它落地的时间,把结果输出到标准输出。

输入格式

第一行有两个正整数n和m。n是猴子的数量,m是我们观察猴子的时间(单位为秒)。
接下来n行是初始情 况的描述。第k+1 行有两个整数表示第k个猴子抓住的猴子的编号,前一个数 代表左手抓的猴子的编号,后一个数是右手抓的猴子的编号。如果读入的数为-1 则代表猴子的手是空的。
接下来m行是对猴子观察的结果。在这m行里的第i行,有两个整数。前一个是猴子的编号,后一个是它在时刻i−1 时松开的手的编 号(1-左手,2-右手)。

输出格式

输出n个整数,每行一个。第i行表示第i个猴子落地的时间,如果在观察结束前猴子没有落地,那么输出-1

 

题解: 用并查集

由于并查集只能合并和查询 所以反向思考  何时牵手何时放手

每次如果father死得更早就更改  从下往上  方可解题

 
 

 

 

 

2019.7.7 练习题

标签:nta   ++   编号   代码   i++   mod   toggle   tle   cpp   

原文地址:https://www.cnblogs.com/cocacolalala/p/11145842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!