链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83|31

D1T1(rps)

题意:给你一个周期,以及胜负关系,求A和B的胜场。

解题思路:暴力抄表,然后暴力计算即可。

#include<cstdio>
#include<iostream>
using namespace std;
int a[],na,nb,b[],ansa,ansb,n;
int f[][]{{,,,,},{,,,,},{,,,,},{,,,,},{,,,,}};
int main(){
cin>>n>>na>>nb;
for (int i=; i<na; i++)
scanf("%d",&a[i]);
cin>>a[];
for (int i=; i<nb; i++)
scanf("%d",&b[i]);
cin>>b[];
for (int i=; i<=n; i++){
ansa+=f[a[i%na]][b[i%nb]];
ansb+=f[b[i%nb]][a[i%na]];
}
cout<<ansa<<" "<<ansb;
}

D1T2(link)

题意:给你棵树,求最大联合权值与联合权值和,(联合权值:距离为2的2个点的点权之积)

解题思路:枚举所有中间点,暴力算出所有的与其相连的点权之和与其点权平方和,用数学公式求出乘积和,最大的较好做,不多解释。

#include <stdio.h>
#define MN 200005
#define mod 10007
#define ll long long
#define v edge[j].to
#define max(a,b) ((a)>(b)?(a):(b))
int w[MN],head[MN],n,maxx,sum,cnt;
struct zxy{
int to,nxt;
}edge[MN<<];
inline int in(){
int x=,f=;char ch=getchar();
while(ch<''||ch>'') f=ch=='-'?-:,ch=getchar();
while(ch>=''&ch<='') x=(x<<)+(x<<)+ch-'',ch=getchar();
return x*f;
}
inline void ins(int x,int y){edge[++cnt].to=y,edge[cnt].nxt=head[x],head[x]=cnt;}
void init(){
n=in();
for (int i=; i<n; ++i){
register int x=in(),y=in();
ins(x,y);ins(y,x);
}
for (register int i=; i<=n; ++i) w[i]=in();
}
void solve(){
for (register int i=; i<=n; ++i){
register ll tmp=,tmpp=;register int ma1=,ma2=;
for (register int j=head[i]; j; j=edge[j].nxt){
tmp+=w[v],tmpp+=w[v]*w[v],tmp%=mod,tmpp%=mod;
if (w[v]>ma1) ma2=ma1,ma1=w[v];
else ma2=max(ma2,w[v]);
}
maxx=max(maxx,ma1*ma2),sum+=tmp*tmp-tmpp;sum%=mod;
}
printf("%d %d\n",maxx,sum);
}
int main(){init();solve();}

D1T3(bird)

题意:看题目吧= =就是flappy birds啊

解题思路:每次点击看成一个费用为1,体积为X[i]的物品,反之则。。。。然后按题意跑一遍求最小费用的背包,注意对高度>m的特殊处理与管道的判断。

#include <stdio.h>
#include <string.h>
#define MN 10005
#define MM 1005
#define inf 0x3f3f3f3f
#define min(a,b) ((a)<(b)?(a):(b))
int n,m,k,up[MN],down[MN],dp[][MM],bot[MN],top[MN],ansn,ans;
inline int in(){
int x=;char ch=getchar();
while(ch<''||ch>'') ch=getchar();
while(ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
return x;
}
void init(){
n=in(),top[n]=m=in(),k=in();
for (int i=; i<n; ++i) top[i]=m,up[i]=in(),down[i]=in();
for (register int i=,s; i<=k; ++i) bot[s=in()]=in()+,top[s]=in()-;
}
void solve(){
for (register int i=; i<=n; ++i){
memset(dp[i&],0x3f,sizeof(dp[i&]));
register int minn=inf;
for (register int j=up[i-]+; j<m; ++j)
dp[i&][j]=min(dp[i&][j-up[i-]]+,min(dp[(i&)^][j-up[i-]]+,dp[i&][j]));
for (register int j=m-up[i-]; j<=m; ++j)
dp[i&][m]=min(dp[i&][j]+,min(dp[i&][m],dp[(i&)^][j]+));
for (register int j=down[i-]+; j<=m; ++j)
dp[i&][j-down[i-]]=min(dp[(i&)^][j],dp[i&][j-down[i-]]);
for (register int j=; j<bot[i]; ++j) dp[i&][j]=inf;
for (register int j=top[i]+; j<=m; ++j) dp[i&][j]=inf;
for (register int j=bot[i]; j<=top[i]; ++j) minn=min(minn,dp[i&][j]);
if (minn==inf){
puts("");
printf("%d",ansn);
return;
}
if ((top[i]^m)&&(bot[i])) ++ansn;
}ans=inf;
for (register int j=; j<=m; ++j)
ans=min(ans,dp[n&][j]);
printf("1\n%d",ans);
}
int main(){init();solve();}

D2T1(wireless)

我写了傻逼做法,反正这题就是傻逼模拟。

#include<stdio.h>
#define MN 130
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
int f[MN][MN],n,d,ans[MN][MN],ma,summ;
inline int in(){
int x=,f=;char ch=getchar();
while (ch<''||ch>'') f=ch=='-'?-:,ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
return x*f;
}
int main(){
d=in();n=in();
for (int i=; i<=n; ++i){
int x=in(),y=in(),l=in();
f[x][y]=l;
}
for (register int i=; i<; ++i)
for (register int j=; j<; ++j){
for (register int a=max(,i-d); a<=min(,i+d); ++a)
for (register int b=max(,j-d); b<=min(,j+d); ++b)
ans[i][j]+=f[a][b];
ma=max(ans[i][j],ma);
}
for (register int i=; i<; ++i)
for (register int j=; j<; ++j)
if (ma==ans[i][j]) summ++;
printf("%d %d",summ,ma);
}

D2T2(road)

题意:看题目吧= =。

解题思路:首先建反边然后从终点bfs一遍,计算一下入度,然后判断一下是否可行,再正向bfs一遍即可。

#include <stdio.h>
#include <string.h>
#define MN 10005
#define ME 200005
int head[MN],dis[MN],n,e,fb[MN],cnt,s,t,que[MN],du[MN],cntt[MN];
bool vis[MN];
struct zxy{
int to,nxt;
}edge[ME<<];
inline void ins(int x,int y,int *h){edge[++cnt].to=y,edge[cnt].nxt=h[x],h[x]=cnt;}
inline int in(){
int x=;char ch=getchar();
while(ch<''||ch>'') ch=getchar();
while(ch>=''&&ch<='') x=(x<<)+(x<<)+ch-'',ch=getchar();
return x;
}
inline void bfs(int s,int *hd){
int h=,t=;que[]=s;
memset(dis,/,sizeof(dis));
dis[s]=;vis[s]=;
while(h<t){
for (register int i=hd[que[++h]]; i; i=edge[i].nxt){
register int v=edge[i].to;++cntt[v];
if (!vis[edge[i].to]){
dis[v]=dis[que[h]]+;vis[v]=;que[++t]=v;
}
}
}
}
void init(){
n=in(),e=in();
for (register int i=; i<=e; ++i){
register int x=in(),y=in();++du[x];
ins(x,y,head);ins(y,x,fb);
}
s=in(),t=in();
}
void solve(){
bfs(t,fb);for (register int i=; i<=n; ++i) vis[i]=du[i]!=cntt[i];
bfs(s,head);if (!vis[t]){puts("-1");return;}
printf("%d",dis[t]);
}
int main(){init();solve();return ;}

D2T3(equation)

题意:看题目

解题思路:大丧题,欺负我数学不好。我们考虑选取mo数,然后优化掉高精度操作,然后注意一下多个mo防止出现恰好为mo数倍数的解,多用几个10000左右的质数应该就比较稳了。

#include <stdio.h>
#define MN 105
#define MM 1000005
#define ML 10005
const int mod[]={,,,,};
int a[][MN],ans[MM],ansn,n,b[][],m;char ch[ML];
inline void check(int x){
for (register int i=; i<; ++i)
for (register int j=n; j>=; --j)
b[i][x%mod[i]]=(b[i][x%mod[i]]*(x%mod[i])+a[i][j])%mod[i];
}
inline bool judge(int x){
for (register int i=; i<; ++i) if (b[i][x%mod[i]]) return ;
return ;
}
void init(){
scanf("%d%d",&n,&m);for (int i=; i<=n; ++i){
scanf("%s",ch);for (register int j=; ch[j]; ++j)
if (ch[j]>=''&&ch[j]<='')
for (register int k=; k<; ++k)
a[k][i]=(a[k][i]*+ch[j]-'')%mod[k];
if (ch[]=='-')
for (register int k=; k<; ++k) a[k][i]*=-;
}
}
void solve(){
for (register int i=; i<; ++i) check(i);
for (register int i=; i<=m; ++i) if (judge(i)) ans[++ansn]=i;
printf("%d\n",ansn);
for (register int i=; i<=ansn; ++i) printf("%d\n",ans[i]);
}
int main(){init();solve();}

【NOIP2014TG】solution的更多相关文章

  1. about家庭智能设备部分硬件模块功能共享【协同工作】solution

    本人设备列表: Onda tablet {Android} wifi Desktop computer {win7.centos7} 外接蓝牙adapter PS interface 键盘.鼠标{与同 ...

  2. 【leetcode】solution in java——Easy1

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6409067.html 1:Hamming distance The Hamming distance betw ...

  3. 【436】Solution for LeetCode Problems

    Coding everyday. ^_^ 1. Two Sum 重点知识:指针可以存储数值,通过 malloc 新建数组 int* returnSize:Size of the return arra ...

  4. 【NOIP2012TG】solution

    D1T1(Vigenere) 题意:给你一个原串与一个密码串,问你按照题意规则加密后的密文. 解题思路:暴力模拟. #include <stdio.h> ],c[],u1[],u2[]; ...

  5. 【NOIP2016TG】solution

    传送门:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%7C33 D1T1(toys) 题意:有n个小人, ...

  6. 【NOIP2015TG】solution

    链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%2C32 D1T1(magic) 题意:看题目.. ...

  7. 【NOIP2013TG】solution

    链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%2C30 D1T1:转圈游戏(circle) 题意: ...

  8. 【NOIP2011TG】solution

    老师最近叫我把NOIPTG的题目给刷掉,于是就开始刷吧= = 链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&ta ...

  9. 【leetcode】solution in java——Easy5

    转载请注明原文地址: 21:Assign Cookies Assume you are an awesome parent and want to give your children some co ...

随机推荐

  1. Alpha阶段小结

    1 团队的源码仓库地址 https://github.com/WHUSE2017/MyGod 2 Alpha过程回顾 2.1 团队项目预期 有一个可视化的安卓APP,实现二手交易基本功能.预期的典型用 ...

  2. 201621123031 《Java程序设计》第5周学习总结

    作业05-继承.多态.抽象类与接口 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 关键字:接口.继承.多态 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需 ...

  3. python 一致性哈希 分布式

    hash_ring # -*- coding: utf-8 -*- """ hash_ring ~~~~~~~~~~~~~~ Implements consistent ...

  4. C++布隆过滤器

    布隆过滤器 这名词有没有听着好像很 挺高大上的,的确,它也是一种很重要的结构,下面一起看看: 一:说说历史: (Bloom Filter)是由布隆(Burton Howard Bloom)在1970年 ...

  5. 在linux中关闭防火墙

    1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service iptables sta ...

  6. 原生ajax的请求函数

    ajax:一种请求数据的方式,不需要刷新整个页面:ajax的技术核心是 XMLHttpRequest 对象:ajax 请求过程:创建 XMLHttpRequest 对象.连接服务器.发送请求.接收响应 ...

  7. GitHub 上下载单个文件夹

    写代码的一定经常去github上查看.下载一些源码,有时候会想下载一个项目中的一个文件夹里的内容,但是github上只提供了整个项目的下载,而整个项目里东西太多,压缩的文件太大,github的下载速度 ...

  8. AngularJS1.X学习笔记11-服务

    如果我没记错的话,spring里边有个service层.什么是服务呢?个人理解就是很多地方要用的,可以跨越控制器甚至是跨越模块的工具.AngularJS也为我们提供了服务这种机制,这让我们可以将一些不 ...

  9. BizTalk Server 2010高可用方案

    BizTalk Server 2010高可用方案 本文介绍了 Microsoft BizTalk Server 中通过对主机的各层进行扩展提供高可用性的方案. 分隔各个区域的功能分为不同的主机和中的层 ...

  10. Mego开发文档 - 快速概述

    Mego 快速概述 Mego 是一款轻量级,可扩展和跨平台的数据访问技术. Mego 是一个对象关系映射器(O / RM),它使.NET开发人员能够使用.NET对象处理数据库.它消除了开发人员通常需要 ...