链接:https://ac.nowcoder.com/acm/contest/1099#question

A:可知符合条件的图中间肯定存在一个由1构成的矩形,找到由1构成矩形的边界,判断出现的1的数量等不等于矩形的面积即可。

 #include<bits/stdc++.h>
using namespace std;
char a[][];
int main()
{
int n, m;
while(cin >> n >> m)
{
int x1 = , x2 = ;
int y1 = , y2 = ;
int cnt = ;
for(int i = ;i < n;i++)
for(int j = ;j < m;j++)
cin >> a[i][j];
for(int i = ;i < n;i++)
for(int j = ;j < m;j++)
if(a[i][j] == ''){
cnt++;
x1 = min(x1, i);
x2 = max(x2, i);
y1 = min(y1, j);
y2 = max(y2, j);
}
if((x2 - x1 + )*(y2 - y1 + ) == cnt) cout << "Yes" << endl;
else cout << "No" << endl;
}
return ;
}

B:题目所给的式子是组合数的公式C(n,k),组合数的函数是一个开口向下的二次函数,故有对称性,所以在一边上可以单调递增,我们可以从C(n,0)一直枚举到C(n,min(k, n - k));然后超过1e18则跳出。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 1e18;
ll n, k;
void yf(ll &a, ll &b){
ll d = __gcd(a, b);
a /= d;
b /= d;
}
int main()
{
std::ios::sync_with_stdio(false);
while(cin >> n >> k)
{
bool flag = false;
k = min(k, n - k);
ll cnt = n;
ll sum = ;
ll last = ;
for(ll i = ;i <= k;i++){
ll t1 = cnt--;
ll t2 = i;
yf(t1, t2);
yf(t1, last);
yf(sum, t2);
sum *= t1;
last *= t2;
yf(sum, last);
if(sum / last >= INF ){
cout << INF << endl;
flag = true;
break;
}
}
if(!flag)
cout << sum << endl;
} return ;
}

E:记忆化搜索。

 #include<bits/stdc++.h>
using namespace std;
string a;
int ans;
int vis[];
void dfs(int now){
if(now >= a.size())
{
ans++;
return;
}
int t = a[now] - '';
if(!vis[t]){
vis[t] = ;
dfs(now + );
vis[t] = ;
}
if(a[now]- '' != && now + < a.size()){
int tmp = t * + a[now + ] - '';
if(!vis[tmp]){
vis[tmp] = ;
dfs(now + );
vis[tmp] = ;
}
} }
int main()
{ std::ios::sync_with_stdio(false);
while(cin >> a){
ans = ;
dfs();
cout << ans << endl;
} }

F:题意:Bobo一开始位于平面上的原点 (0,0),有四种操作:向右最多移动a步,向上最多移动b步,向左最多移动c步,向下最多移动d步。问执行 n 次操作可以到达多少个不同的点。

思路:只进行一步的操作很简单,分别可以到达坐标轴上离原点最远的 (a, 0), (0, b), (-c, 0), (0, -d)。故包含原点在内共有 1 + a + b + c + d 个点。

多步的话,我们先只看第一象限内的情况:

第一次操作到达x轴上区间 [1, a],第2次到第n次竖直方向上能到达 [1, (n-1)b)] ,共 a*(n-1)b个点;

两次操作到达x轴上区间 [a+1, 2a], 第2次到第n次竖直方向上能到达 [1, (n-2)b)] ,共 a*(n-2)b个点;

···

n-1次操作到达x轴上区间 [(n-2)a+1, (n-1)a], 第n-1次到第n次竖直方向上能到达 [1, b] ,共 a*b个//点;

// n 次操作到达x轴上最远的a个点 [(n-1)*a+1, na]。

所以答案很简单, 1 + n*(a + b + c + d) + n(n-1)/2 * (ab + bc + cd + ad) 。

参考博客:https://www.cnblogs.com/izcat/p/11618652.html

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9+;
int main()
{
ll n, a, b, c, d;
while(cin >> n >> a >> b >> c >> d)
{
ll ans = 1LL + (a + b + c + d) % mod * n % mod + n * (n - ) / % mod*((a * b % mod+ b * c % mod + c * d % mod + a * d % mod) % mod) % mod;
cout << ans % mod << endl;
}
return ;
}

K:模拟链表,学了大佬的写法,才40行代码,自己手写链表写吐了还WA了

 #include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+;
int n,m,x,y;
list <int> L[maxn],D[maxn];//L为正序, D为L的倒序
int main()
{
while(cin >> n >> m)
{
for(int i = ;i <= n;i++)
{
L[i].clear(),L[i].push_back(i);
D[i].clear(),D[i].push_back(i);
}
while(m--)
{
cin >> x >> y;
D[y].splice(D[y].end(), D[x]);//将x的倒序拼接在y后面
L[x].splice(L[x].end(), L[y]);//x和y正序拼接
swap(L[x], D[y]);//y的倒序成为x的正序
swap(D[x], D[y]);//x的正序成为x的倒序
L[y].clear();
D[y].clear();
}
cout << L[].size();
for(auto it:L[]) cout << " " << it;
cout << endl;
}
return ;
}

2019牛客国庆集训派对day1(A, B E F K)的更多相关文章

  1. 2019牛客国庆集训派对day1 K题 双向链表练习题 splay区间翻转

    题目链接: 解法: 先建n颗平衡树,合并的时候将a中最右的结点翻转到根节点,b中最左的结点翻转到根节点,对合并后的根节点进行标记. #include <bits/stdc++.h> usi ...

  2. 2019牛客国庆集训派对day1

    C 存每个值存在的位置,枚举末尾的值,再枚举前面的值,哈希二分出最长相同的,即剩下的为不同的 D \(f_{i,j,k}\)为前i位,最后一个3因子在j,次因子在k G bitset处理有多少位置符合 ...

  3. 2019牛客国庆集训派对day5

    2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < ...

  4. 牛客国庆集训派对Day1 L-New Game!(最短路)

    链接:https://www.nowcoder.com/acm/contest/201/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  5. 2019 牛客国庆集训派对day1-C Distinct Substrings(exkmp+概率)

    链接:https://ac.nowcoder.com/acm/contest/1099/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  6. 牛客国庆集训派对Day1 L New Game!(堆优化dijkstra+建图)

    链接:https://ac.nowcoder.com/acm/contest/201/L来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言2097 ...

  7. 计算几何板子题【2019牛客国庆集训派对day7——三角形和矩形】【多边形相交的面积】

    链接:https://ac.nowcoder.com/acm/contest/1112/J来源:牛客网 题目描述 Bobo 有一个三角形和一个矩形,他想求他们交的面积. 具体地,三角形和矩形由 8 个 ...

  8. 2019牛客国庆集训派对day7 A 2016

    链接:https://ac.nowcoder.com/acm/problem/52800来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  9. 牛客国庆集训派对Day1.B.Attack on Titan(思路 最短路Dijkstra)

    题目链接 \(Description\) 给定\(n,m,C\)及大小为\((n+1)(m+1)\)的矩阵\(c[i][j]\).平面上有\((n+1)(m+1)\)个点,从\((0,0)\)编号到\ ...

随机推荐

  1. [LOJ3123] CTSC2019重复

    Description 给定一个⻓为 n 的字符串 s , 问有多少个⻓为 m 的字符串 t 满足: 将 t 无限重复后,可以从中截出一个⻓度为 n 且字典序比 s 小的串. m ≤ 2000 n ≤ ...

  2. vue 全局filter的坑

    下面连段代码的filter放在不同的位子会有不同的效果, 1.filter放在new vue之后,居然不起作用 <script> new Vue({ el: '#app', data: { ...

  3. Spring Data Redis实战之提供RedisTemplate

    参考: http://www.cnblogs.com/edwinchen/p/3816938.html 本项目创建的是Maven项目 一.pom.xml引入dependencies <depen ...

  4. 奇异值分解基础(SVD)

    最近要了解一下Incremental PCA的一些知识,然后看到一篇论文里面讲到了SVD(奇异值分解),奈何自己以前没有把机器学习的课好好上,现在很多东西还是要补回来.所以,我就想了解一些SVD的基础 ...

  5. 2018-2-13-C#-复制列表

    title author date CreateTime categories C# 复制列表 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 +0 ...

  6. 135-基于TMS320C6678、FPGA XC5VSX95T的2路Full模式Camera Link输入双目视觉处理平台

    基于TMS320C6678.FPGA XC5VSX95T的2路Full模式Camera Link输入双目视觉处理平台 一.板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合CPCI2.0标准,采 ...

  7. 164-基于TI DSP TMS320C6455和Altera FPGA EP2S130的Full CameraLink PDS150接口板卡

    一.板卡概述 本板卡由我公司自主研发,板卡采用DSP+FPGA的结构,DSP使用TMS320C6455芯片,FPGA采用ALTERA的高端FPGA芯片Stratix II EP2S系列EP2S130, ...

  8. opencl(九)----标量、向量数据类型

    1.opencl 标量数据类型 bool char unsigned char/uchar short 16位有符号整数(补码) ushort int 32位有符号整数(补码) uint 32位无符号 ...

  9. Codeforces Global Round 1 (CF1110) (未完结,只有 A-F)

    Codeforces Global Round 1 (CF1110) 继续补题.因为看见同学打了这场,而且涨分还不错,所以觉得这套题目可能会比较有意思. 因为下午要开学了,所以恐怕暂时不能把这套题目补 ...

  10. BZOJ3038 上帝造题的七分钟

    Time Limit: 3 Sec Memory Limit: 128 MB Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说, ...