题目链接: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. Jobs(一)前端页面

    Java Web工程中的Intellij中Java Web工程的基本目录: 启动web工程后,显示的默认页面是index.html.需要注意的是,本来IDE自建的是index.jsp,我暂时改成了in ...

  2. [Tarjan系列] 无向图e-DCC和v-DCC的缩点

    上一篇讲了如何应用Tarjan算法求出e-DCC和v-DCC. 那么这一篇就是e-DCC和v-DCC的应用之一:缩点. 先讲e-DCC的缩点. 我们把每一个e-DCC都看成一个节点,把所有桥边(x,y ...

  3. Idea加载项目扫描完毕后自动退出

    问题描述:Idea平时好好的,突然就打开后扫描完毕后自动退出.网上说修改idea.exe.vmoptions文件的Xmx,还是不行. 后来根据http://www.pianshen.com/artic ...

  4. MySql学习- 存储引擎简介

    mysql可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎. 每一种存储引擎使用不同的存储机制.索引技巧.锁定水平,最终提供广泛且不同的功能. MySQL支持的存储引擎: MyISA ...

  5. java Map 四种遍历方法

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  6. HTML导航条的制作

    导航条的制作HTML代码:<nav> <ul> <li> <a href="#"></a> </li> &l ...

  7. Node.js学习(3)-用express改写留言本

    安装 cnpm i -S express cnpm i -S express-art-template cnpm i -S art-template   var express = require(' ...

  8. Nginx如何配置禁止访问某个目录

    location ~* \.(txt|doc)${ root /data/www/wwwroot/test; deny all; }

  9. iTop4412开发板+虚拟机+tftp服务

    感觉好坑啊 利用路由器+2根网线+tftp服务 首先是开发板,主机,虚拟机相互之间能ping通(坑), 关闭主机防火墙,防止被强 关闭虚拟机防火墙 虚拟机装上tftpd服务端(通过网上教程嘛) 是不是 ...

  10. Delphi 重载方法与重定义方法