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的更多相关文章

随机推荐

  1. 【原创】(十五)Linux内存管理之RMAP

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  2. Django 单表查询

    前言 如何只单独测试django中的某一个py文件呢?或者说如何书写测试脚本? 我们可以在任意一个py文件(应用下的tests或者自己新建一个)中书写以下代码: 前期准备 创建一个电影表 class ...

  3. Don’t Repeat Yourself,Repeat Yourself

    Don't Repeat Yourself,Repeat Yourself Don't repeat yourself (DRY, or sometimes do not repeat yoursel ...

  4. nginx 负载均衡的配置

    首先搭建好三台nginx,我是用VM搭建的 nginx搭建,https://www.cnblogs.com/liubaoqing/p/10507962.html 这里的三台nginx ,ip分别是 1 ...

  5. linux常用命令,最基础

    rmdir keda1/ 6 touch test.java 创建空文件 7 拷贝文件 cp 源文件 目标文件 cp test.java test1.java 8 删除文件rm -r 递归删除 -rf ...

  6. HTTPS中的TLS

    1. SSL 与 TLS SSL:(Secure Socket Layer) 安全套接层,于 1994 年由网景公司设计,并于 1995 年发布了 3.0 版本TLS:(Transport Layer ...

  7. hive 动态分区

    非常重要的动态分区属性: hive.exec.dynamic.partition  是否启动动态分区.false(不开启) true(开启)默认是 false hive.exec.dynamic.pa ...

  8. numpy基本知识

    """np.arrayobject 数组或嵌套的数列dtype 数组元素的数据类型,可选copy 对象是否需要复制,可选order 创建数组的样式,C为行方向,F为列方向 ...

  9. selenium chrome headless无界面引擎

    注意:PhantomJS已被舍弃 chrome headless 在打开浏览器之前添加参数 import time import sys from selenium import webdriver ...

  10. Java入门 - 高级教程 - 02.集合

    原文地址:http://www.work100.net/training/java-collection.html 更多教程:光束云 - 免费课程 集合 序号 文内章节 视频 1 概述 2 集合接口 ...