题目链接:https://vjudge.net/contest/149212#overview

  A题,水题,略过。

  B题,水题,读清题意即可。

  C题,数学题,如果把x表示成x=nb+m,则k=n/m属于[1,a],m属于[1,b-1]。然后由第一个式子得到n=(x-m)/b,那么带入第二个式子得,x=m(kb+1)。已经知道的m的范围,因此m的和为b(b-1)/2。然后因为k的范围已知,那么枚举k累和即可得到答案。注意m算好以后要先mod,不然太大了后面会溢出。代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = + ;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + ; int main()
{
ll a,b;
cin >> a >> b;
ll m = b*(b-)/;
m %= mod;
ll ans = ;
for(int k=;k<=a;k++)
{
ll t = m*(k*b%mod + ) % mod;
ans += t;
ans = (ans % mod + mod) % mod;
//ans += m*(k*b+1);
}
cout << ans << endl;
return ;
}

C

  D题,状压DP,dp[i][j],i表示状态,j表示上一个被选的是哪一个菜。代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = + ;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + ; int n,m,k;
int a[];
map<pii,int> M;
ll ans;
bool vis[];
ll dp[<<][];
int get(int x)
{
int ans = ;
while(x)
{
ans += x % ;
x >>= ;
}
return ans;
} int main()
{
cin >> n >> m >> k;
for(int i=;i<=n;i++) scanf("%d",a+i);
for(int i=;i<=k;i++)
{
int x,y,w;
scanf("%d%d%d",&x,&y,&w);
M[pii(x,y)] = w;
}
memset(dp,-,sizeof dp);
for(int i=;i<=n;i++) dp[<<i-][i] = a[i];
int all = ( << n) - ;
for(int mask=;mask<=all;mask++)
{
int flag = get(mask) == m;
for(int i=;i<=n;i++)
{
if(dp[mask][i] == -) continue;
if(flag) ans = max(ans, dp[mask][i]);
for(int j=;j<=n;j++)
{
if(mask & (<<j-)) continue;
dp[mask | (<<j-)][j] = max(dp[mask | (<<j-)][j], dp[mask][i] + M[pii(i,j)] + a[j]);
}
}
}
cout << ans << endl;
return ;
}

D

  E题,lyf说什么dijkstra树,不知道什么东西。。题意有点问题,题目明明说不能有环结果第一个样例却有环。。看懂了题意以后这题不难。只要把距离相差1的点随便连即可。代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = + ;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + ; int n,k;
struct node
{
int dis;
int id;
bool operator < (const node & temp) const
{
return dis < temp.dis;
}
}p[N];
vector<int> v[N];
vector<pii> ans; int main()
{
cin >> n >> k;
for(int i=;i<=n;i++)
{
scanf("%d",&p[i].dis);
p[i].id = i;
v[p[i].dis].push_back(i);
}
sort(p+,p++n);
int max_dis = p[n].dis;
if(v[].size() != ) return *puts("-1");
int flag = ;
for(int i=;i<=max_dis;i++)
{
if(i == )
{
if(v[].size() > k)
{
flag = ;
break;
}
for(int j=;j<v[].size();j++) ans.push_back(pii(v[][], v[][j]));
}
else
{
if((ll)(k-)*v[i-].size() < v[i].size())
{
flag = ;
break;
}
int pos = ;
for(int j=;j<v[i].size();j++)
{
pos++;
if(pos > v[i-].size()) pos = ;
ans.push_back(pii(v[i-][pos-], v[i][j]));
}
}
}
if(flag == ) puts("-1");
else
{
printf("%d\n",ans.size());
for(int i=;i<ans.size();i++) printf("%d %d\n",ans[i].first, ans[i].second);
}
return ;
}

E

  

  

2017 ZSTU寒假排位赛 #6的更多相关文章

  1. 2017 ZSTU寒假排位赛 #7

    题目链接:https://vjudge.net/contest/149498#overview. A题,水题,直接按照题意模拟一下即可. B题,我用的是线段树.大力用的差分标记(上次听zy说过,下次再 ...

  2. 2017 ZSTU寒假排位赛 #1

    题目链接:https://vjudge.net/contest/147102#overview. A题:给出一堆的点,要找出两条垂直的直线,一条与x轴呈45度.-->使得所有的点到任意一条直线的 ...

  3. 2017 ZSTU寒假排位赛 #2

    题目链接:https://vjudge.net/contest/147632#overview. A题,状态压缩一下然后暴力即可. B题,水题,略过. C题,有负数,前缀和不是单调的,因此不能用尺取法 ...

  4. 2017 ZSTU寒假排位赛 #8

    题目链接:https://vjudge.net/contest/149845#overview. A题,水题. B题,给出 p个 第一个人的区间 和 q个第二个人的区间,问[l,r]中有多少个整数满足 ...

  5. 2017 ZSTU寒假排位赛 #5

    题目链接:https://vjudge.net/contest/148901#overview. A题,排序以后xjbg即可. B题,弄个数组记录当前列是不是删除以及当前行是不是已经大于下一行然后乱搞 ...

  6. 2017 ZSTU寒假排位赛 #4

    题目链接:https://vjudge.net/contest/148543#overview. A题:n个罪犯,每个人有一个犯罪值,现在要从里面选出连续的c个人,每个人的犯罪值都不能超过t,问选法的 ...

  7. 2017 ZSTU寒假排位赛 #3

    题目链接:https://vjudge.net/contest/147974#overview. A题,费用流,不会..跳过了. B题,给一个图,问至少添加几条边能成为强连通图.显然缩点,要使得成为一 ...

  8. Codeforces Round #341 (Div. 2)

    在家都变的懒惰了,好久没写题解了,补补CF 模拟 A - Wet Shark and Odd and Even #include <bits/stdc++.h> typedef long ...

  9. 2017杭电ACM集训队单人排位赛 - 6

    2017杭电ACM集训队单人排位赛 - 6 排名 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 59 1 X X 1 1 X X 0 1 ...

随机推荐

  1. Linux 创建用户 用户组 用户权限

    首先 你要有个root账号 然后才能做下面几条操作: useradd username 创建用户usernamepasswd user_pwd     给已创建的用户username设置密码 关于us ...

  2. 怎样获取响应头: Response Header

    1. 使用 xhr.getResponseHeader()可以获取指定响应头字段值. function getHeaderTime() { console.log(this.getResponseHe ...

  3. luogu1313计算系数题解--二项式定理

    题目链接 https://www.luogu.org/problemnew/show/P1313 分析 二项式定理 \((a+b)^n=\sum_{k=0}^{n}{C^k_n a^k b^{n-k} ...

  4. iphone SprintBoard部分私有API总结(不支持iOS8)

    本文介绍iOS SrpintBoard框架的部分私有API,具体包括: 获取ios上当前正在运行的所有App的bundle id(不管当前程序是在前台还是后台都可以) 获取ios上当前前台运行的App ...

  5. linux后台启动项目命令

    在用xshell启动一个项目后,关闭了xshell后,项目又停止了 nohup python admin.py runserver & nohup ........  &   中间包含 ...

  6. Django_05_模板

    模板 如何向请求者返回一个漂亮的页面呢?肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为HttpResponse()的参数吗?这样定义就太麻烦 ...

  7. Educational Codeforces Round 40 G. Castle Defense (二分+滑动数组+greedy)

    G. Castle Defense time limit per test 1.5 seconds memory limit per test 256 megabytes input standard ...

  8. scala学习(4)---Array定长数组操作

    ScalaArrayNote: https://www.jianshu.com/p/d906f00c05bf

  9. Linux下批量修改文件编码

    假设需要将所有afish目录下的php文件,编码从gb2312转到utf8 cd afish find ./ -type f -name “*.php”|while read line;do echo ...

  10. dynamic类型

    dynamic类型在运行时做类型检查 可用于变量类型.方法参数和返回值类型 示例 dynamic person = new Student { Name = "张三", Age = ...