The German Collegiate Programming Contest 2017
B - Building
给一个m各面的多边形柱体,每一侧面有n*n个格子,现在对这些格子染色,看有多少种方式使得多面柱体无论如何旋转都不会与另一个一样。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mod 1000000007
ll n,m,c;
ll quickly_pow(ll x,ll y){
ll ans=;
while(y){
if(y&) ans=ans*x%mod;
y>>=;
x=x*x%mod;
}
return ans%mod;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&c);
ll pos=quickly_pow(c,n*n);
ll ans=;
for(ll i=;i<=m;i++){
ans+=quickly_pow(pos,__gcd(i,m));
ans%=mod;
}
printf("%lld\n",ans*quickly_pow(m,mod-)%mod);
return ;
}
C - Joyride
有m条边n个点,经过每个点耗时t,花费p,经过每一条边花费ti,现在问你总共时间x,确保花完,在回到出口,花费最小。
bfs+剪枝
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
vector<int>v[];
vector<pair<int,int> >cost();
struct node{
int u,t,w;
node(int u,int t,int w):u(u),t(t),w(w){}
bool operator<(const node &a) const{
return w>a.w;
}
};
int x,n,m,t;
int dis[][];
void bfs(){
memset(dis,INF,sizeof(dis));
if(x-cost[].first<) return ;
priority_queue<node>q;
dis[][x-cost[].first]=cost[].second;
q.push(node(,x-cost[].first,cost[].second));
while(!q.empty()){
node e=q.top();
q.pop();
if(e.w>dis[e.u][e.t]) continue;
if(e.t-cost[e.u].first>=){
if(dis[e.u][e.t-cost[e.u].first]>(dis[e.u][e.t]+cost[e.u].second)){
dis[e.u][e.t-cost[e.u].first]=dis[e.u][e.t]+cost[e.u].second;
q.push(node(e.u,e.t-cost[e.u].first,dis[e.u][e.t-cost[e.u].first]));
}
}
for(int i=;i<v[e.u].size();i++){
if(e.t-t-cost[v[e.u][i]].first>=){
if(dis[v[e.u][i]][e.t-cost[v[e.u][i]].first-t]>(dis[e.u][e.t]+cost[v[e.u][i]].second)){
dis[v[e.u][i]][e.t-cost[v[e.u][i]].first-t]=dis[e.u][e.t]+cost[v[e.u][i]].second;
q.push(node(v[e.u][i],e.t-cost[v[e.u][i]].first-t,dis[v[e.u][i]][e.t-cost[v[e.u][i]].first-t]));
}
}
}
}
}
int main(){
scanf("%d%d%d%d",&x,&n,&m,&t);
for(int i=;i<m;i++){
int u,to;
scanf("%d%d",&u,&to);
v[u].push_back(to);
v[to].push_back(u);
}
for(int i=;i<=n;i++)
scanf("%d%d",&cost[i].first,&cost[i].second);
bfs();
if(dis[][]==INF) printf("It is a trap.\n");
else printf("%d\n",dis[][]);
return ;
}
D - Pants On Fire
根据前面n条句子,判断后面句子是否正确,传递性。
离散化+flyod
#include <bits/stdc++.h>
using namespace std;
map<string,int>m;
int n,q,ans=;
int vis[][];
string u,v,s;
int main(){
scanf("%d%d",&n,&q);
for(int i=;i<n;i++){
cin>>u>>s>>s>>s>>v;
vis[m[u]?m[u]:(m[u]=++ans)][m[v]?m[v]:(m[v]=++ans)]=;
}
for(int k=;k<=ans;k++)
for(int i=;i<=ans;i++)
for(int j=;j<=ans;j++)
if(vis[i][k] && vis[k][j]) vis[i][j]=;
while(q--){
cin>>u>>s>>s>>s>>v;
if(vis[m[u]][m[v]]) printf("Fact\n");
else if(vis[m[v]][m[u]]) printf("Alternative Fact\n");
else printf("Pants on Fire\n");
}
return ;
}
G - Water Testing
皮克定理,求多边形内部点的数量
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Point{
ll x,y;
}p[];
ll n;
ll operator * (Point a,Point b){return a.x*b.y-a.y*b.x;}
ll cal(Point a,Point b){
if(a.x==b.x) return abs(b.y-a.y)-;
if(a.y==b.y) return abs(b.x-a.x)-;
return __gcd(abs(b.y-a.y),abs(a.x-b.x))-;
}
ll area(){
ll s=;
for(int i=;i<n;i++)
s+=p[i]*p[(i+)%n];
return abs(s);
}
ll solve(){
ll ans=n;
for(int i=;i<n;i++)
ans+=cal(p[i],p[(i+)%n]);
return ans-;
}
int main(){
scanf("%lld",&n);
for(int i=;i<n;i++)
scanf("%lld%lld",&p[i].x,&p[i].y);
printf("%lld\n",(area()-solve())/);
return ;
}
I - Uberwatch
K - You Are Fired!
在开除不超过k个人的情况下,使得工资大于等于d
优先队列
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int AX = 1e4 + ;
struct Node{
string s ;
ll v ;
bool operator < (const Node &ch )const{
return v < ch.v ;
}
}a[AX];
int main(){
ll n,d,k;
priority_queue<Node>q;
scanf("%lld%lld%lld",&n,&d,&k);
for(int i=;i<n;i++){
string s;
ll c;
cin>>s>>c;
q.push((Node){s,c});
}
int ans=;
while(!q.empty() && d> && ans<k){
Node e=q.top();
q.pop();
a[ans++]=e;
//printf("%lld\n",e.v);
d-=e.v;
}
if(d>) printf("impossible\n");
else{
printf("%d\n",ans);
for(int i=;i<ans;i++){
cout<<a[i].s<<",";
cout<<" YOU ARE FIRED!"<<endl;
}
}
return ;
}
The German Collegiate Programming Contest 2017的更多相关文章
- (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)
layout: post title: (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017) au ...
- 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)(9/11)
$$2017-2018\ ACM-ICPC\ German\ Collegiate\ Programming\ Contest (GCPC 2017)$$ \(A.Drawing\ Borders\) ...
- 2018 German Collegiate Programming Contest (GCPC 18)
2018 German Collegiate Programming Contest (GCPC 18) Attack on Alpha-Zet 建树,求lca 代码: #include <al ...
- (寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)
layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa&q ...
- German Collegiate Programming Contest 2018 C. Coolest Ski Route
John loves winter. Every skiing season he goes heli-skiing with his friends. To do so, they rent a h ...
- German Collegiate Programming Contest 2015 计蒜课
// Change of Scenery 1 #include <iostream> #include <cstdio> #include <algorithm> ...
- German Collegiate Programming Contest 2018 B. Battle Royale
Battle Royale games are the current trend in video games and Gamers Concealed Punching Circles (GCPC ...
- ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. Poor Ramzi -dp+记忆化搜索
ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. ...
- 2015 German Collegiate Programming Contest (GCPC 15) + POI 10-T3(12/13)
$$2015\ German\ Collegiate\ Programming\ Contest\ (GCPC 15) + POI 10-T3$$ \(A.\ Journey\ to\ Greece\ ...
随机推荐
- AssemblyInfo.cs 文件信息
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices ...
- React从安装到实战
建议:初学者看之前请先看一遍菜鸟教程 可以安装一个ATOM编辑器,本人觉得很好用 一.安装并启动项目:网址 搭建好的项目目录为: 二.开始写项目: 1.组件到界面流程: 定义一个组件app.js导出 ...
- MySQL数据库唯一性设置(unique index)
1,命令行操作 分为两种.一种是在建表时就想好要加上唯一性,另一种是在后期才发现需要设置唯一性. 建表时: CREATE TABLE `t_user` ( `Id` int(11) NOT NULL ...
- Python编程:从入门到实践 - matplotlib篇 - Random Walk
随机漫步 # random_walk.py 随机漫步 from random import choice class RandomWalk(): """一个生成随机漫步数 ...
- 【hiho一下 第十周】后序遍历
[题目链接]:http://hihocoder.com/problemset/problem/1049 [题意] [题解] 前序遍历的第一个节点; 肯定是整颗树的头结点; 然后在中序遍历中; 得到这个 ...
- --- Error: failed to execute '.\ARMCC\bin\ArmAsm'
1.KEIL4在开发STM32程序时报: Error: failed to execute '.\ARMCC\bin\ArmAsm' 或是Error: failed to execute '.\ARM ...
- hdu 4079简单贪心
#include<stdio.h> #include<string.h> #define ll __int64 #define N 11000 struct node { in ...
- ie7 text-indent input影响
IE6/IE7中text-indent对input背景的影响 在text-indent在IE6/IE7中的位置偏移BUG一文中讨论过IE6/IE7中inline-block元素设置text-inden ...
- ajax短轮询+php与服务器交互制作简易即时聊天网站
主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events). 本文主要介绍ajax短轮询的简易实现方式. 看懂此文 ...
- TNS-12557: TNS:protocol adapter not loadable TNS-12560: TNS:protocol adapter error
Description: Oracle 10.2 on hpux 11.23 PA. When i try to start listener i go the next errors: Error ...