链接: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. Beta冲刺-用户测试报告

    一.项目概述 1.1项目名称 高校学生征信系统 1.2项目简介 此项目基于SSH框架,力图为学生提供征信服务和信用相关的借款和申请活动.其中以信用统计和管理为主,信用使用为辅,构建出一个集信用收集和使 ...

  2. C语言——第二次作业

    **学习内容总结** 本周是国庆假期,学习了mooc相关课程.阅读了<提问的智慧>一文. 文章总结 1.在提问之前,要利用身边的资源(例如相关资料.FAQ.浏览器搜索)试着自己寻找答案,或 ...

  3. Scala 快速入门

     Scalable 编程语言 纯正的的面向对象语言 函数式编程语言 无缝的java互操作 scala之父 Martin Odersky 1. 函数式编程 函数式编程(functional progr ...

  4. JAVA线程池原理详解(1)

    线程池的优点 1.线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用. 2.可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃. 线 ...

  5. 韩顺平dedecms讲解上课记录

    感谢韩顺平: 如何打开php的gd库,通过php设置->php扩展-->phpdb库;打上勾就行: dede存在四张十分重要的表,channeltype,模型表最原始的发源arctype: ...

  6. UDP协议实现客户服务器数据交互

    UDP协议实现客户服务器数据交互 按照往常一样将今天自己写的题目答案写在了博客上习题:客户端循环发送消息给服务端,服务端循环接收,并打印出来,直到收到Bye就退出程序. package network ...

  7. vmware 12 安装 mac os 10.12正式版

    1.首先下载安装vmware 12 pro ,将VT打开(虚拟功能,以前安装过虚拟机点的同学可忽略). 2.下载mac ox 10.12正式版镜像文件(cdr后缀). 3.下载Unlocker208( ...

  8. PHP处理上传文件

    HTML中使用type = 'file'类型的表单可以向服务器上传文件: 上传文件的表单必须在form中定义enctyp = 'multipart/form-data': HTML代码如下: < ...

  9. 新概念英语(1-65)Not a Baby

    新概念英语(1-65)Not a Baby Does Jill take the key to the front door? A:What are you going to do this even ...

  10. Android 6.0 以后webview不加载图片的问题

    /** * Webview在安卓5.0之前默认允许其加载混合网络协议内容 * 在安卓5.0之后,默认不允许加载http与https混合内容,需要设置webview允许其加载混合网络协议内容 */if ...