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的更多相关文章

  1. (寒假开黑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 ...

  2. 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\) ...

  3. 2018 German Collegiate Programming Contest (GCPC 18)

    2018 German Collegiate Programming Contest (GCPC 18) Attack on Alpha-Zet 建树,求lca 代码: #include <al ...

  4. (寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)

    layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa&q ...

  5. 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 ...

  6. German Collegiate Programming Contest 2015 计蒜课

    // Change of Scenery 1 #include <iostream> #include <cstdio> #include <algorithm> ...

  7. German Collegiate Programming Contest 2018​ B. Battle Royale

    Battle Royale games are the current trend in video games and Gamers Concealed Punching Circles (GCPC ...

  8. 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. ...

  9. 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\ ...

随机推荐

  1. Asp.net Core 源码-SessionExtensions

    using Microsoft.AspNetCore.Http; using Newtonsoft.Json; namespace SportsStore.Infrastructure { publi ...

  2. 安装oracle执行runInstaller文件时报错:“……/install/.oui:Permission denied”

    一:问题描述 二:出错原因 将windows下未解压的Oracle安装软件上传到了linux服务器,导致有三个文件的执行权限丢失. 三:解决方法 为其赋予相应权限即可. 1: [root@MyPc ~ ...

  3. 序列模型(4)----门控循环单元(GRU)

    一.GRU 其中, rt表示重置门,zt表示更新门. 重置门决定是否将之前的状态忘记.(作用相当于合并了 LSTM 中的遗忘门和传入门) 当rt趋于0的时候,前一个时刻的状态信息ht−1会被忘掉,隐藏 ...

  4. nyoj256-C小加之级数求和

    C小加 之 级数求和 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 最近,C小加 又遇到难题了,正寻求你的帮助. 已知:Sn= 1+1/2+1/3+-+1/n. 显然对 ...

  5. BZOJ 1901 Dynamic Rankings (整体二分+树状数组)

    题目大意:略 洛谷传送门 这道题在洛谷上数据比较强 貌似这个题比较常见的写法是树状数组套主席树,动态修改 我写的是整体二分 一开始的序列全都视为插入 对于修改操作,把它拆分成插入和删除两个操作 像$C ...

  6. idea 解决git冲突

    1.提交本地代码到本地仓库 2.啦取远程代码 不进行merge 3.冲突文件会显示   >>> head  ===== 4.删除  >>> head  ===== ...

  7. snmp--CentOS安装Net-SNMP小计

    http://blog.csdn.net/tmpbook/article/details/39620549

  8. Python爬虫之正則表達式

    1.经常使用符号 .  :匹配随意字符,换行符 \n 除外 *  :匹配前一个字符0次或无限次 ? :匹配前一个字符0次或1次 .*  :贪心算法.尽可能的匹配多的字符 .*?  :非贪心算法 () ...

  9. OpenCV+海康威视摄像头的实时读取

    OpenCV+海康威视摄像头的实时读取 本文由 @lonelyrains出品.转载请注明出处. 文章链接: http://blog.csdn.net/lonelyrains/article/detai ...

  10. 防火墙设置对外开放port

    今天在部署项目时,遇到项目组其它人重整了server上的iis.结果外部訪问不了所部属的项目,通过一些渠道找到了设置方法 例如以下报错的截图: 原因是"入站ICMP规则"被重整了, ...