A.直接判断每一个数。

#include<bits/stdc++.h>
using namespace std; int n,a[][]; int main()
{
ios::sync_with_stdio();
cin >> n;
for(int i = ;i <= n;i++)
{
for(int j = ;j <= n;j++) cin >> a[i][j];
}
for(int i = ;i <= n;i++)
{
for(int j = ;j <= n;j++)
{
if(a[i][j] == ) continue;
int flag = ;
for(int ii = ;ii <= n;ii++)
{
for(int jj = ;jj <= n;jj++)
{
if(a[ii][j]+a[i][jj] == a[i][j]) flag = ;
}
}
if(!flag)
{
cout << "No" << endl;
return ;
}
}
}
cout << "Yes" << endl;
return ;
}

B.枚举直线上每一点,x,y坐标分开算,求和公式。

#include<bits/stdc++.h>
using namespace std; long long m,b; int main()
{
ios::sync_with_stdio();
cin >> m >> b;
long long ans = ;
for(int y = ;y <= b;y++)
{
long long x = (b-y)*m;
ans = max(ans,(x+)*(y+)*y/+(y+)*(x+)*x/);
}
cout << ans << endl;
return ;
}

C.模拟栈,每次需要整理的时候,把栈中所有出栈,因为底下的已经有序,不需要再去关注它们。

#include<bits/stdc++.h>
using namespace std; int n;
stack<int> s;
string ss; int main()
{
ios::sync_with_stdio();
cin >> n;
int now = ,ans = ;
for(int i = ;i <= *n;i++)
{
cin >> ss;
if(ss == "add")
{
int x;
cin >> x;
s.push(x);
}
else
{
if(s.empty())
{
now++;
continue;
}
if(now == s.top())
{
s.pop();
now++;
}
else
{
ans++;
now++;
while(!s.empty()) s.pop();
}
}
}
cout << ans << endl;
return ;
}

D.直接O(k^2)的最短路,转移的时候若两个点相邻,则dis不用+1,若某一坐标之差≤2,则可以转移dis+1,若终点不lit,设一个(n+1,m+1)的点,最后结果回自动+1。

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std; int n,m,k,x[],y[],vis[] = {},dis[] = {}; int main()
{
ios::sync_with_stdio();
cin >> n >> m >> k;
int s,t = ;
for(int i = ;i <= k;i++)
{
cin >> x[i] >> y[i];
if(x[i] == && y[i] == ) s = i;
if(x[i] == n && y[i] == m) t = i;
}
if(!t)
{
t = ++k;
x[k] = n+;
y[k] = m+;
}
memset(dis,0x3f,sizeof(dis));
dis[s] = ;
for(int j = ;j <= k;j++)
{
int pos = -,minn = INF;
for(int i = ;i <= k;i++)
{
if(!vis[i] && dis[i] < minn)
{
pos = i;
minn = dis[i];
}
}
if(pos == -) break;
vis[pos] = ;
for(int i = ;i <= k;i++)
{
if(vis[i]) continue;
if(abs(x[pos]-x[i])+abs(y[pos]-y[i]) == ) dis[i] = min(dis[i],dis[pos]);
else if(abs(x[pos]-x[i]) <= || abs(y[pos]-y[i]) <= ) dis[i] = min(dis[i],dis[pos]+);
}
}
if(dis[t] == INF) cout << - << endl;
else cout << dis[t] << endl;
return ;
}

E.对于每一段,可以dp,矩阵快速幂优化,注意每一段结束和每一段开始的时候,把高于c点的值清零。

#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std; int n;
long long k;
struct xx
{
long long m[][];
}; xx mul(xx a,xx b,int len)
{
xx tmp;
for(int i = ;i <= len;i++)
{
for(int j = ;j <= len;j++)
{
tmp.m[i][j] = ;
for(int k = ;k <= len;k++) tmp.m[i][j] = (tmp.m[i][j]+a.m[i][k]*b.m[k][j])%MOD;
}
}
return tmp;
} xx qpower(xx a,long long k,int len)
{
xx b;
memset(b.m,,sizeof(b.m));
for(int i = ;i <= len;i++) b.m[i][i] = ;
while(k)
{
if(k%) b = mul(a,b,len);
a = mul(a,a,len);
k /= ;
}
return b;
}
int main()
{
ios::sync_with_stdio();
cin >> n >> k;
xx base,now;
for(int i = ;i < ;i++)
{
for(int j = max(,i-);j < min(i+,);j++) base.m[i][j] = ;
}
now.m[][] = ;
for(int i = ;i <= n;i++)
{
long long a,b,c;
cin >> a >> b >> c;
for(int j = c+;j < ;j++) now.m[j][] = ;
now = mul(qpower(base,min(b,k)-a,c),now,c);
for(int j = c+;j < ;j++) now.m[j][] = ;
if(b >= k) break;
}
cout << now.m[][] << endl;
return ;
}

Codeforces_821的更多相关文章

随机推荐

  1. apache相关实验-2

    一.Apache+openssl 实现 https HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的 HTTP 通道,简单 ...

  2. 分布式唯一ID:雪花ID Snowflake .Net版

    先抄个雪花ID介绍,雪花算法: 雪花算法的原始版本是scala版,用于生成分布式ID(纯数字,时间顺序),订单编号等. 自增ID:对于数据敏感场景不宜使用,且不适合于分布式场景.GUID:采用无意义字 ...

  3. win10下使用mklink命令给C盘软件搬家

    在windows下,大多数软件会默认安装在C盘,即使小心翼翼地点开“自定义”->“安装路径”,然后把软件安装到其他盘,还是会有很多软件用到的数据文件被塞到C盘,虽然可以到注册表修改软件默认安装路 ...

  4. Flutter 不能热加载,热重载按钮灰色,无法点击,flutter doctor 显示NO_PROXY is not set

    一.现象: Flutter 不能热加载 热重载按钮灰色,无法点击. 二.分析原因: 终端 flutter doctor 显示 NO_PROXY is not set 没有设置无代理的端口 终端:flu ...

  5. c++中减字符0的作用(转)

    在刷OJ题的时候遇到要读取“2013-3-1”形式的日期然后计算这个日期是该年的第几天, 显然我们读取的是字符串,但是计算第几天却要整型数来计算,这是这个问题的难点,下面是解决这个问题的代码: int ...

  6. fastjson使用详解

    目录 二.fastjson使用 三.fastjson 常用 API 四.fastjson使用演示 测试类准备 1.java类转换为json字符串 2.json字符串转为java类 五.fastjson ...

  7. Redis 高可用之"持久化"

    Redis高可用概述 在Redis中,实现高可用的技术主要包括:持久化.复制(读写分离).哨兵.集群. 持久化: 持久化是最简单的高可用方法(有时甚至不被归为高可用手段),主要作用是数据备份,即将数据 ...

  8. CMS总结

    过程 初始标记 从roots(例如:thread stack引用的对象,static对象),新生代对象,标记直接引用的老年代对象. 并发标记 利用初始标记阶段标记的对象,递归标记整个老年代. 该阶段与 ...

  9. java架构之路(多线程)大厂方式手写单例模式

    上期回顾: 上次博客我们说了我们的volatile关键字,我们知道volatile可以保证我们变量被修改马上刷回主存,并且可以有效的防止指令重排序,思想就是加了我们的内存屏障,再后面的多线程博客里还有 ...

  10. bzoj_1036 树链剖分套线段树

    bzoj_1036 ★★★★   输入文件:bzoj_1036.in   输出文件:bzoj_1036.out   简单对比时间限制:1 s   内存限制:162 MB [题目描述] 一棵树上有n个节 ...