题目链接: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. Scala学习十五——注解

    一.本章要点 可以为类.方法.字段.局部变量.参数.表达式.类型参数以及各种类型定义添加注解 对于表达式和类型,注解跟在被注解的条目之后 注解的形式有@Annotation.@Annotation(v ...

  2. luogu2568GCD题解--欧拉函数

    题目链接 https://www.luogu.org/problemnew/show/P2568 分析 题目即求\(\sum_{i=1}^N \sum_{j=1}^N [gcd(i,j)\) \(is ...

  3. echarts —— 绘制横向柱状图(圆角、无坐标轴)

    UI给了设计图,看了一眼觉得简单,不就是无序列表布局嘛(ul,li),后来才知道那是echarts图,好吧,样式如下: 代码如下:(渐变色没做) <!DOCTYPE html> <h ...

  4. Java动态追踪技术探究(动态修改)

    Java动态追踪技术探究 Java探针-Java Agent技术-阿里面试题 秒懂Java动态编程(Javassist研究) 可以用于在类加载的时候,修改字节码. Java agent(Java探针) ...

  5. web开发:css总结与应用

    一.常用标签的使用 二.边界圆角 三.背景样式 四.精灵图 五.盒模型布局细节 六.盒模型案例 七.w3c主页 一.常用标签的使用 <!DOCTYPE html> <html> ...

  6. python-----操作路径

    分离路径.文件名 org_path = r"F:\temp\test" fpath, fname = os.path.split(org_path) print(fpath,fna ...

  7. DataSnap初步二

    转:https://blog.csdn.net/a00553344/article/details/51670486 1. 一个典型的DataSnap服务器至少需要三个控件: TDSServer: D ...

  8. VS---《在VS2010中 使用C++创建和使用DLL》(002)

    VS---<在VS2010中 使用C++创建和使用DLL>(002) 前面初认识了创建和调用DLL,在VS工程下可以通过在 同一工程.不同工程 下创建和调用DLL.现在,同一工程下创建和调 ...

  9. LoadRunner(2)

    一.性能测试的基本概念 1.并发和在线的区别:并发的压力是一种瞬时压力,一般针对同一类型业务:在线的压力是一段时间的压力,没有并发那么集中. 规律:一般20用户并发产生的压力相当于200用户在线的压力 ...

  10. js动画fireworks烟花

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...