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. cassandra中的ACID,与RDBMS中的事务有何不同?

    Cassandra中的ACID标准 Apache Cassandra不遵循具有回滚或锁定机制的ACID(原子性,一致性,隔离性,持久性)事务,而是提供原子,隔离和持久的事务,并具有最终和可调的一致性, ...

  2. 【转】【e周美文】优秀博客上榜推荐

    Everybody,本周的博客推荐开始啦,记住,有好的博客可要给小活推荐一下哦. 7.19日 博客推荐 Android权限列表作者:@大漠落日 链接:http://my.eoe.cn/1103623/ ...

  3. 通过核心API启动单个或多个scrapy爬虫

    1. 可以使用API从脚本运行Scrapy,而不是运行Scrapy的典型方法scrapy crawl:Scrapy是基于Twisted异步网络库构建的,因此需要在Twisted容器内运行它,可以通过两 ...

  4. 存储过程带参数和sqlcommand

    public DataSet SelectBillNo(string CarrierCode, string Date, string CompanyCode) { System.Collection ...

  5. Qt Installer Framework翻译(5-2)

    创建在线安装程序 联机安装程序获取二进制安装文件中的内容以及存储库描述(Updates.xml).请创建一个存储库,并将其上传到Web服务器.然后在用于创建安装程序的config.xml文件中指定存储 ...

  6. Dart语言学习(六) Dart 列表List数组

    创建List : var list = [1,2,3,"Dart",true]; 创建不可变List : var list = const [1,2,3,"Dart&qu ...

  7. 手把手写一个基于Spring Boot框架下的参数校验组件(JSR-303)

    前言 之前参与的新开放平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一.校验工具类不一致.维护风险高等其它因素 ...

  8. 手势识别控制pygame精灵

    步骤: 编写简易pygame精灵游戏(只实现键盘上下左右控制) 解决opencv手势识别核心问题 上述2部分对接上 pygame部分我们只加载个背景,然后里面放1只乌龟精灵,用键盘的上下左右键来控制, ...

  9. ValidationAttribute特性的截图

  10. Java中的循环语句

    1.1 while 循环语句 while 语句也称为条件判断语句. 循环方式 : 利用一个条件来控制是否要反复执行这个语句. 语法 : while(条件表达式){ 执行语句 } 当条件表达式的返回值为 ...