OI队内测试——石门一
T1:
题目大意:
给你一个立方体,每个面上有些数字,给你一个数字K,你可以玩K轮游戏,
每轮你会将每个面上的数均分为4份,分给相邻的面,求K轮游戏后,上面的数字是
依次给你前、后、上、下、左、右的起始数字大小!
题解:因为轮数最大只有45,所以直接暴力模拟即可,但是可能是数据水,在通分的时候不会爆炸,也可能是我太垃圾不会算最坏情况!
总之非高精度可以A
T2:
题目大意:
给你一串由小写字母组成的字符串,希望你把它划分成一些小段,使得每一小段字符串
中的字母都不相同,并且希望分的段数尽量少。
字符串"nnsmpmn",最少分成 3 小段:"n","nsmp","mn"。 排序后输出:mn n nsmp
可能有多组解,求最小字典序的答案并输出
题解:DP,设F[i]表示到第i段截至的struct 存下段数,每段的字符组成即可!
T3:
题目大意:
你和朋友 Shary 玩一个游戏:在一个无环的、无向的图中,每个节点可以放一些糖果。
每次 Shary 可以从糖果数不少于 2 的节点上拿 2 个糖果,吃掉 1 个,并把另一个糖果放到相 邻的某个节点去。
如果在某个时候,目标节点 T 上有了糖果,游戏结束,Shary 赢。
如果你设计的初始状态,无论如何 Shary 都赢不了,则 Shary 输。 给定一个图,你能赢的方案中可以放的最多糖果数是多少?如果答案数超过 2*10^9, 只要输出-1 即可
题解:贪心即可,考虑它一定是一棵树,于是以这个节点T为根,先考虑一条链,我们可以证明在深度最大的放2*size+1个,其余点不放是最优的
因为链与树无本质上的区别,所以重复上述操作即可!
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#define ll long long
using namespace std;
ll read()
{
ll x=,f=; char ch;
while (ch=getchar(),ch<''||ch>'') if (ch=='-') f=-;
while (x=x*+ch-'',ch=getchar(),ch>=''&&ch<='');
return x*f;
}
ll gcd(ll a,ll b){if (!b) return a; return gcd(b,a%b);
}
struct point{
ll x,y;
friend point operator / (point a,ll x){
if ((a.x%x)==) {a.x/=x; return a;}
else{
a.y*=x;
ll tmp=gcd(a.x,a.y);
a.x/=tmp; a.y/=tmp; return a;
}
}
friend point operator + (point a,point b){
if (a.x==) return b;
if (b.x==) return a;
ll tmp=gcd(b.y,a.y); tmp=a.y/tmp*b.y;
a.x*=(tmp/a.y); b.x*=(tmp/b.y); a.y=b.y=tmp;
point c; c.x=a.x+b.x; c.y=;
return (c/tmp);
}
}a[],b[];
int main()
{
freopen("cube.in","r",stdin);
freopen("cube.out","w",stdout);
point x,y;
x.x=; x.y=;
y.x=; y.y=;
for (int i=; i<=; i++) a[i].x=read(),a[i].y=;
int k=read();
//if (k==0) {cout<<a[3].x<<endl; return;}
for (int i=; i<=k; i++)
{
b[]=b[]=(a[]+a[]+a[]+a[])/;
b[]=b[]=(a[]+a[]+a[]+a[])/;
b[]=b[]=(a[]+a[]+a[]+a[])/;
for (int j=; j<=; j++) a[j]=b[j];
}
if (a[].x==) cout<<<<endl;
else if (a[].x%a[].y==) cout<<a[].x/a[].y<<endl;
else cout<<a[].x<<"/"<<a[].y<<endl;
return ;
}
/*
0 0 4 0 0 0
2 0 0 4 0 0 0
3 1 2 3 4 5 6
45
*/
T1
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#define N 55
using namespace std;
struct Str{int x; char s[N];};
struct P{int cnt; Str s[N];}F[N];
bool vis[N];
int n;
char s[N];
bool operator <(Str a,Str b)
{
for (int i=; i<=min(a.x,b.x); i++)
{
if (a.s[i]==b.s[i]) continue;
if (a.s[i]<b.s[i]) return ; else return ;
}
return a.x<b.x?:;
}
bool operator <(P a, P b){
if (a.cnt<b.cnt) return ;
if (a.cnt>b.cnt) return ;
for (int i=; i<=a.cnt; i++)
{
if (a.s[i]<b.s[i]) return ;
if (b.s[i]<a.s[i]) return ;
}
}
int read()
{
int x=,f=; char ch;
while (ch=getchar(),ch<''||ch>'') if (ch=='-') f=-;
while (x=x*+ch-'',ch=getchar(),ch>=''&&ch<='');
return x*f;
}
int main()
{
freopen("string.in","r",stdin);
freopen("string.out","w",stdout);
int T=read();
while (T--)
{
scanf("%s",s+); n=strlen(s+);
for (int i=; i<=n; i++) F[i].cnt=n+;
for (int i=; i<=n; i++)
{
memset(vis,,sizeof(vis));
for (int j=i-; j>=; j--)
{
if (vis[s[j+]-'a']) break; vis[s[j+]-'a']=;
P X; X=F[j]; X.cnt++;
for (int k=j+; k<=i; k++) X.s[X.cnt].x++,X.s[X.cnt].s[k-j]=s[k];
sort(X.s+,X.s++X.cnt);
if (X<F[i]) F[i]=X;
}
}
// cout<<" "<<F[n].cnt<<" "<<F[n].s[]endl;
for (int i=; i<=F[n].cnt; i++)
{
for (int j=; j<=F[n].s[i].x; j++)
{
cout<<F[n].s[i].s[j];
}
cout<<" ";
}
cout<<endl;
}
return ;
}
/*
2
facetiously
aaaaa 2
aba
babb
*/
T2
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#define inf 2e9
#define ll long long
#define N 100
using namespace std;
char ch[N];
int pre[N*N],now[N],v[N*N],tot;
int size[N],hson[N];
bool vis[N];
int n;
ll ans;
int read()
{
int x=,f=; char ch;
while (ch=getchar(),ch<''||ch>'') if (ch=='-') f=-;
while (x=x*+ch-'',ch=getchar(),ch>=''&&ch<='');
return x*f;
}
void ins(int a,int b){++tot; pre[tot]=now[a]; now[a]=tot; v[tot]=b;
}
void dfs(int x,int fa)
{
vis[x]=; size[x]=;
for (int p=now[x]; p; p=pre[p])
{
int son=v[p]; if (son==fa) continue;
dfs(son,x); size[x]=max(size[x],size[son]+);
if (size[son]>size[hson[x]] || hson[x]==) hson[x]=son;
}
}
void get(int x,int fa,ll sum)
{
//cout<<" "<<x<<" "<<fa<<" "<<sum<<endl;
if (ans==- || sum==-) {ans=-; return ;}
if (!hson[x]) {ans+=sum; ans=ans>inf?-:ans; return;}
for (int p=now[x]; p; p=pre[p])
{
int son=v[p]; if (son==fa) continue;
if (son==hson[x]) get(son,x,sum*+>inf?-:sum*+);
else get(son,x,);
}
}
int main()
{
freopen("candy.in","r",stdin);
freopen("candy.out","w",stdout);
int T=read();
while (T--)
{
tot=; memset(now,,sizeof(now));
n=read(); int s=read(); s++;
for (int i=; i<=n; i++)
{
scanf("%s",ch+); for (int j=; j<=n; j++) if (ch[j]=='Y') ins(i,j);
}
memset(vis,,sizeof(vis));
memset(hson,,sizeof(hson));
dfs(s,); bool bo=true; for (int i=; i<=n; i++) if (!vis[i]) bo=false;
if (!bo) {cout<<-<<endl; continue;}
ans=; get(s,,); printf("%lld\n",ans);
}
return ;
}
/*
3
3 2
NYN
YNY
NYN
4 1
NYYY
YNNN
YNNN
YNNN
7 0
NYNNNYN
YNYNYNN
NYNYNNN
NNYNNNN
NYNNNNN
YNNNNNY
NNNNNYN */
T3
OI队内测试——石门一的更多相关文章
- OI队内测试一【数论概率期望】
版权声明:未经本人允许,擅自转载,一旦发现将严肃处理,情节严重者,将追究法律责任! 序:代码部分待更[因为在家写博客,代码保存在机房] 测试分数:110 本应分数:160 改完分数:200 T1: 题 ...
- OI队内测试二【数论概率期望】
版权声明:未经本人允许,擅自转载,一旦发现将严肃处理,情节严重者,将追究法律责任! 序:代码部分待更[因为在家写博客,代码保存在机房] T1: 题解:插头dp应该很好想吧,我们考虑当出现转折时我们对下 ...
- Socket规划中的局域网内测试
前面提到的Socket信息及文件传输软件,如何测试和使用它? 事实上仅仅要推断client及server的局域网连通就可以. 1.Server在cmd下输入 ipconfig/all获得IP地址或者本 ...
- Gym101482 NWERC 2014(队内训练第4场)
-----------------------前面的两场感觉质量不高,就没写题解----------------------------- A .Around the Track pro:给定内多边形 ...
- 【zznu-夏季队内积分赛3-F】学无止境
题目描述 “别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“ACM程序设计竞赛是一个团体项目.宝儿姐作为其中优秀的一份子,每天好好学习天天向上.曾经宝儿姐给自己定了一个计划,刷穿bzoj.于 ...
- NOIP队内凉心互测总结(8.22update)
8.22(结束后一天) __stdcall讲题qwq 全是CF原题 D1T1 一看像是结论题,打了下表,水过 没错就是结论题,直接暴力就好 D1T2 看起来不好做,没有AC思路 打了暴力 40分 T2 ...
- Gym - 101480 CERC 15:部分题目题解(队内第N次训练)
-------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...
- Gym101002 2016NAIPC(队内第7次训练)
(由于先看的最后一题,然后又一直WA,导致这场有点爆炸,我背锅. A .Fancy Antiques 题意: 选择最多k个商店,买n个物品,每个物品分别对应两个店售卖,求最小花费是多少.n<10 ...
- Gym101485: NWERC 2015(队内第6次训练)
A .Assigning Workstations 题意:给定N个人的工作时间和工作时长,我们可以假设有无数台工作机器,如果一台机器超过M时间未使用就会关闭,那么我们怎么安排机器的使用,使得需要开启机 ...
随机推荐
- Linux学习 -- 备份与恢复
备份 Linux系统需要备份的数据 /root/ /home/ /var/spool/mail /etc/ others 备份策略 完全备份 增量备份 差异备份 备份和恢复命令 dump resto ...
- 转:WebDriver(Selenium2) 处理可能存在的JS弹出框
在自动化测试过程中,有些情况下我们会遇到一些潜在的Javascript弹出框.(即某些条件下才会出现,不是固定出现),然后如果当这种弹出框出现,我们没有加以处理,WebDriver将无法进行下一步的操 ...
- Spring注解基本解读
在一个类中使用Spring对象,办法如下: 使用注解的形式注入 从ApplicationContext中获取. T t = new ApplicationContext.getBean("x ...
- hdu_5213_Lucky(莫队算法+容斥定理)
题目连接:hdu_5213_Lucky 题意:给你n个数,一个K,m个询问,每个询问有l1,r1,l2,r2两个区间,让你选取两个数x,y,x,y的位置为xi,yi,满足l1<=xi<=r ...
- cookies和session的优缺点
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. Cookie的优缺点: 优点:极高的扩展性和可用性通过良好的编程,控制保存在cookie ...
- iOS中FMDB和GCD剖析
转载至:http://www.cocoachina.com/industry/20130819/6821.html 英文链接:https://github.com/ccgus/fmdb 由于FMDB是 ...
- 关于文件读写IDL
1.打开文件 IDL从磁盘上的文件读写数据,必须首先把一盒逻辑设备号连接到一个指定的文件,然后进行文件操作,如打开,关闭和读取等.IDL中的逻辑设备号的范围是-2——128,其中1-99是用户可以任意 ...
- Intergate flot with Angular js ——Angular 图形报表
下面这篇文章最终的结论就是 Flot 插件 结合 Angular 的Directive 来处理 图表的绘制 给出github上的一个demo源码.https://gist.github.com/fly ...
- StartUML 各种类图的例子
1.UML分为: 1)静态建模:系统基础和系统固定框架结构,这些图形往往是“静态”的. 类图(Class Diagram):常用来分析业务概念 用例图(Use Case Diagram):常用 对象图 ...
- 一道变态的js题
一道腾讯js面试题 题目如下: f = function() {return true;}; g = function() {return false;}; (function() { if (g() ...