Codeforces_816
A.不断增加时间,直到符合要求。
#include<bits/stdc++.h>
using namespace std; int a,b;
char c; int f(int x)
{
return x%*+x/;
} int main()
{
ios::sync_with_stdio();
cin >> a >> c >> b;
int ans = ;
while()
{
if(f(a) == b) break;
ans++;
b++;
if(b == )
{
b = ;
a++;
}
if(a == ) a = ;
}
cout << ans << endl;
return ;
}
B.两次前缀和。
#include<bits/stdc++.h>
using namespace std; int n,k,q,a[] = {},ans[] = {}; int main()
{
ios::sync_with_stdio();
cin >> n >> k >> q;
for(int i = ;i <= n;i++)
{
int x,y;
cin >> x >> y;
a[x]++;
a[y+]--;
}
for(int i = ;i <= ;i++) a[i] += a[i-];
for(int i = ;i <= ;i++)
{
ans[i] = ans[i-];
if(a[i] >= k) ans[i]++;
}
while(q--)
{
int x,y;
cin >> x >> y;
cout << ans[y]-ans[x-] << endl;
}
return ;
}
C.对于每一行,我们找当前最小的值,然后处理该行每一个值,每一个值减去最小值,若结果不为0,则该列处理这个值至0,最后判断是否每个点都为0。
注意n>m的时候,我们转置一下矩阵才能得到最小的答案。
#include<bits/stdc++.h>
using namespace std; int n,m,a[][],cnt1[] = {},cnt2[] = {}; int main()
{
ios::sync_with_stdio();
cin >> n >> m;
int flag = ;
if(n > m) flag = ;
if(flag)
{
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++) cin >> a[i][j];
}
}
else
{
swap(n,m);
for(int j = ;j <= m;j++)
{
for(int i = ;i <= n;i++) cin >> a[i][j];
}
}
for(int i = ;i <= n;i++)
{
int minn = ;
for(int j = ;j <= m;j++) minn = min(minn,a[i][j]);
for(int j = ;j <= m;j++)
{
if(a[i][j] != minn)
{
int t = a[i][j]-minn;
cnt2[j] += t;
for(int k = ;k <= n;k++) a[k][j] -= t;
}
a[i][j] -= minn;
}
cnt1[i] += minn;
}
int ok = ;
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++)
{
if(a[i][j] != ) ok = ;
}
}
if(!ok)
{
cout << - << endl;
return ;
}
int ans = ;
for(int i = ;i <= n;i++) ans += cnt1[i];
for(int i = ;i <= m;i++) ans += cnt2[i];
cout << ans << endl;
if(flag)
{
for(int i = ;i <= n;i++)
{
while(cnt1[i])
{
cnt1[i]--;
cout << "row " << i << endl;
}
}
for(int i = ;i <= m;i++)
{
while(cnt2[i])
{
cnt2[i]--;
cout << "col " << i << endl;
}
}
}
else
{
for(int i = ;i <= n;i++)
{
while(cnt1[i])
{
cnt1[i]--;
cout << "col " << i << endl;
}
}
for(int i = ;i <= m;i++)
{
while(cnt2[i])
{
cnt2[i]--;
cout << "row " << i << endl;
}
}
}
return ;
}
D.发现n是偶数的时候,会有规律,每隔两行会是前面的两个数相加,直接计算二项式的系数,最后一步的加减取决于n%4。
如果n是奇数,先模拟一行变成偶数。
#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std; int n,a[];
long long fac[] = {}; long long qpow(long long a,long long b)
{
long long ans = ;
while(b)
{
if(b%) ans = ans*a%MOD;
a = a*a%MOD;
b /= ;
}
return ans;
}
int main()
{
ios::sync_with_stdio();
for(int i = ;i <= ;i++) fac[i] = fac[i-]*i%MOD;
cin >> n;
for(int i = ;i < n;i++) cin >> a[i];
if(n == )
{
cout << a[] << endl;
return ;
}
if(n%)
{
n--;
int now = ;
for(int i = ; i < n;i++)
{
if(now) a[i] = (a[i]+a[i+])%MOD;
else a[i] = (a[i]-a[i+]+MOD)%MOD;
now ^= ;
}
}
n = n/-;
long long ans1 = ,ans2 = ;
for(int i = ;i <= n;i++)
{
long long t = fac[n]*qpow(fac[i]*fac[n-i]%MOD,MOD-)%MOD;
ans1 = (ans1+t*a[i*]%MOD)%MOD;
ans2 = (ans2+t*a[i*+]%MOD)%MOD;
}
if(n%) cout << (ans1-ans2+MOD)%MOD << endl;
else cout << (ans1+ans2)%MOD << endl;
return ;
}
E.树形DP,dp[i][j][k]代表(当前在i点,买了j个商品,是否购买当前商品)的最少花费。
#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std; int n,m,a[],b[],sz[] = {},ok[] = {};
long long dp[][][];
vector<int> v[]; void dfs(int now)
{
if(ok[now]) return;
dp[now][][] = ;
dp[now][][] = a[now];
dp[now][][] = b[now];
sz[now] = ;
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
dfs(t);
for(int i = sz[now];i >= ;i--)
{
for(int j = sz[t];j >= ;j--)
{
dp[now][i+j][] = min(dp[now][i+j][],dp[now][i][]+dp[t][j][]);
dp[now][i+j][] = min(dp[now][i+j][],dp[now][i][]+min(dp[t][j][],dp[t][j][]));
}
}
sz[now] += sz[t];
}
ok[now] = ;
} int main()
{
ios::sync_with_stdio();
cin >> n >> m;
for(int i = ;i <= n;i++)
{
cin >> a[i] >> b[i];
b[i] = a[i]-b[i];
if(i > )
{
int x;
cin >> x;
v[x].push_back(i);
}
}
memset(dp,0x3f,sizeof(dp));
dfs();
for(int i = n;i >= ;i--)
{
if(dp[][i][] <= m || dp[][i][] <= m)
{
cout << i << endl;
return ;
}
}
return ;
}
Codeforces_816的更多相关文章
随机推荐
- 【原创】(十五)Linux内存管理之RMAP
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- Django 单表查询
前言 如何只单独测试django中的某一个py文件呢?或者说如何书写测试脚本? 我们可以在任意一个py文件(应用下的tests或者自己新建一个)中书写以下代码: 前期准备 创建一个电影表 class ...
- Don’t Repeat Yourself,Repeat Yourself
Don't Repeat Yourself,Repeat Yourself Don't repeat yourself (DRY, or sometimes do not repeat yoursel ...
- nginx 负载均衡的配置
首先搭建好三台nginx,我是用VM搭建的 nginx搭建,https://www.cnblogs.com/liubaoqing/p/10507962.html 这里的三台nginx ,ip分别是 1 ...
- linux常用命令,最基础
rmdir keda1/ 6 touch test.java 创建空文件 7 拷贝文件 cp 源文件 目标文件 cp test.java test1.java 8 删除文件rm -r 递归删除 -rf ...
- HTTPS中的TLS
1. SSL 与 TLS SSL:(Secure Socket Layer) 安全套接层,于 1994 年由网景公司设计,并于 1995 年发布了 3.0 版本TLS:(Transport Layer ...
- hive 动态分区
非常重要的动态分区属性: hive.exec.dynamic.partition 是否启动动态分区.false(不开启) true(开启)默认是 false hive.exec.dynamic.pa ...
- numpy基本知识
"""np.arrayobject 数组或嵌套的数列dtype 数组元素的数据类型,可选copy 对象是否需要复制,可选order 创建数组的样式,C为行方向,F为列方向 ...
- selenium chrome headless无界面引擎
注意:PhantomJS已被舍弃 chrome headless 在打开浏览器之前添加参数 import time import sys from selenium import webdriver ...
- Java入门 - 高级教程 - 02.集合
原文地址:http://www.work100.net/training/java-collection.html 更多教程:光束云 - 免费课程 集合 序号 文内章节 视频 1 概述 2 集合接口 ...