【NOIP2014TG】solution
链接: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的更多相关文章
- about家庭智能设备部分硬件模块功能共享【协同工作】solution
本人设备列表: Onda tablet {Android} wifi Desktop computer {win7.centos7} 外接蓝牙adapter PS interface 键盘.鼠标{与同 ...
- 【leetcode】solution in java——Easy1
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6409067.html 1:Hamming distance The Hamming distance betw ...
- 【436】Solution for LeetCode Problems
Coding everyday. ^_^ 1. Two Sum 重点知识:指针可以存储数值,通过 malloc 新建数组 int* returnSize:Size of the return arra ...
- 【NOIP2012TG】solution
D1T1(Vigenere) 题意:给你一个原串与一个密码串,问你按照题意规则加密后的密文. 解题思路:暴力模拟. #include <stdio.h> ],c[],u1[],u2[]; ...
- 【NOIP2016TG】solution
传送门:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%7C33 D1T1(toys) 题意:有n个小人, ...
- 【NOIP2015TG】solution
链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%2C32 D1T1(magic) 题意:看题目.. ...
- 【NOIP2013TG】solution
链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%2C30 D1T1:转圈游戏(circle) 题意: ...
- 【NOIP2011TG】solution
老师最近叫我把NOIPTG的题目给刷掉,于是就开始刷吧= = 链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&ta ...
- 【leetcode】solution in java——Easy5
转载请注明原文地址: 21:Assign Cookies Assume you are an awesome parent and want to give your children some co ...
随机推荐
- bug终结者 团队作业第一周
bug终结者 团队作业第一周 小组组员及人员分工 小组成员 组长: 20162323 周楠 组员: 20162302 杨京典 20162322 朱娅霖 20162327 王旌含 20162328 蔡文 ...
- Linux中Eclipse下搭建Web开发环境
0. 准备工作 java环境,Linux下基本上都有含开源jdk的库,可直接下载,且不用配置环境变量,当然也可以官网下载后自己配置: Eclipse Neon,注意看清是64位还是32位,下载的应该是 ...
- hibernate懒加载导致jackjson解析json时StackOverFlow
@JsonIgnore @JsonFilter @JsonBackReference @JsonManagedReference @JsonIgnoreProperties jackson中的@Jso ...
- IntelliJ IDEA插件——冷门神器分享
IntelliJ IDEA就不必介绍了,至今还能保持IDE前三的神器,如今java程序员的首选,今天介绍几款冷门但绝对是神器的IDEA插件. 前言 IDEA自不必说,IDEA插件是开发中必备的神器,相 ...
- Ubuntu Desktop 16.04 LTS 下成功配置Jupyter的两个python内核版本(2.7x,3.5x)
Ubuntu Desktop 16.04 LTS 安装好系统默认就有python两个不同版本(2.7.12和3.5.2) 现在来熟悉一下jupyter的对python这两个不同python版本的内核 ...
- Web Api 接收图片
public async Task<HttpResponseMessage> Upload() { if (!Request.Content.IsMimeMultipartContent( ...
- 新概念英语(1-47)A cup of coffee
新概念英语(1-47)A cup of coffee How does Ann like her coffee? A:Do you like coffee, Ann? B:Yes, I do. A:D ...
- redux的使用过程
1.redux是react的状态管理工具,可以用来存放公共数据,因此也可用来作为组件间参数传递的方法. 2.组件传参,需要有一个公共的父组件.在父组件中引入Provider.通过Provider将 ...
- yagmail让发邮件更简单
这是我迄今为止碰到的最良心的库,真tm简单啊 import yagmail # 连接邮箱服务器 yag = yagmail.SMTP(user="wuyongqiang2012@163.co ...
- 从感知机到 SVM,再到深度学习(二)
这篇博文承接上一篇,详细推导了 SVM 算法,包括对偶算法,SMO 优化算法,核函数技巧等等,最后还提到用高度非线性的曲线代替超平面,就是神经网络的方法. 在第一篇中已经得到了最优间隔 ...