技术标签: 训练赛
Walfy同时喜欢上了n个妹子,第i个妹子的智力值为ai魅力值为bi。为了防止妹子们发现walfy是个渣男,现在walfy要给妹子排个序,这样他能按照这个排序分配和妹子聊天的时间。排序规则如下:智力高的妹子需要花费更多的时间来聊天,如果智力一样,那么魅力高的花费的时间将会多一点;如果她们的魅力也一样,姓名字典序更小的花费的时间也将多一点。
对于字典序大小的定义,对于字符串s和t来说,如果s<t,则存在一个k,对于所有i小于k,si==ti,且sk<tk。例如“abb” < “ac”,“acc”<“accb”。
由于他将所有时间都用于和妹子聊天了,他现在要请求你的帮助。
a第一行输入一个正整数T,表示测试用例的数量。接下来是测试用例。
每个测试用例的第一行包含一个正整数n,含义见上文;
接下来的n行,每行一个字符串s和两个整数ai,bi,用空格隔开,表示妹子的姓名、智力和魅力;
数据范围:( 1 <= T <= 10, 1 <= n <= 1000, 1 <= |s| <= 10, 1<= ai,bi <= 1000,同一个测试用例没有两个妹子有同样的名字,且名字只包含小写英文字母)
每个测试用例输出n个值,第i个值代表第i个妹子花费时间是第几大的。
3
2
abb 2 1
ac 1 100
3
abb 1 1
accb 1 1
acc 2 1
3
abb 1 1
ac 1 1
accb 1 1
1 2
2 3 1
1 2 3
样例解释或提示:
第一组样例,abb的智商更高所以Walfy在她身上花费的时间更多。
第二组样例,acc的智商最高,所以在她身上花费的时间是第一大的,之后因为acc的名字字典序更小,所以在她身上花费的时间是第二大的。
多特征值排序,写个冒泡或者sort都行
#include<bits/stdc++.h>
using namespace std;
struct node
{
int zs,ml;
string name;
int num2,num1;
}a[1005];
int comp(node a,node b)
{
return a.num1<b.num1;
}
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].name>>a[i].zs>>a[i].ml;
a[i].num1=i;
}
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
if(a[i].zs<a[j].zs)swap(a[i],a[j]);
else if(a[i].zs==a[j].zs)
{
if(a[i].ml<a[j].ml)swap(a[i],a[j]);
else if(a[i].ml==a[j].ml)
if(a[i].name>a[j].name)swap(a[i],a[j]);
}
}
for(int i=1;i<=n;i++)a[i].num2=i;
sort(a+1,a+1+n,comp);
for(int i=1;i<=n;i++)cout<<a[i].num2<<" ";
cout<<endl;
}
}
世界上没有两片完全相同的树叶,同样的,KFC也没有两个完全相同的原味鸡。而duxing哥是一个非常讲究的人,面对一个原味鸡,自己总是能说出这是第X级的原味鸡。可是duxing哥有点不满意,他希望知道这个原味鸡的美味值是多少。经过研究,他发现第X级的原味鸡美味值=第x-1级的原味鸡的美味值*1+第x-2级的原味鸡的美味值*2+.....+第1级原味鸡美味值*(x-1)。也就是:设第x级的原味鸡美味值是fx,那么fx=∑i=1x-1(x-i)*fi。
当然了,这一切需要一个基准,duxing哥把第1级的原味鸡美味值定为1,即f1=1
可是这个计算对于duxing哥来说太麻烦了,所以他把这个任务交给了你,给你一个x,问你第x级原味鸡美味值是多少?
一个数x(1<=x<=40)
一个数,表示第x的原味鸡美味值
【输入样例1】
2
【输入样例2】
7
【输出样例1】
1
【输出样例2】
144
递推题,双重for循环就能搞定(打表也行,数据量不大)
注意数组要开long long型,不然会运行错误
#include<bits/stdc++.h>
using namespace std;
long long a[45],x;
int main()
{
while(cin>>x)
{
memset(a,0,sizeof(a));
a[1]=1,a[2]=1;
if(x==1)
cout<<1<<endl;
else if(x==2)
cout<<1<<endl;
else if(x>2)
{
for(int i=3; i<=x; i++)
{
for(int j=1; j<=i-1; j++)
{
a[i]=a[i]+a[i-j]*j;
}
}
cout<<a[x]<<endl;
}
}
}
Ulire沉迷Brain Power以后,见到啥都想先O-oooooooooo AAAAE-A-A-I-A-U- JO-oooooooooooo AAE-O-A-A-U-U-A- E-eee-ee-eee AAAAE-A-E-I-E-A- JO-ooo-oo-oo-oo EEEEO-A-AAA-AAAA一下。
总之,现在Ulire给你一个字符串s,要求你按照以下规则处理字符串:
1) 删除字符串中除了元音字母和字母‘j’(不区分大小写)以外的所有字符。
2) 对于连续出现的字符(不区分大小写),第一个字母须为大写,其余字母须为小写;如果这个字符恰好连续出现了4次,则这4个字母都要为大写。
3) 对于连续出现的 ‘j’(不区分大小写),只保留第一个。
第一行一个T表示有T组数据
每组有一个字符串。(仅包含大小写字母)
字符串总长度 <= 500
1
aaaaaeeeeei
AaaaaEeeeeI
题目本身不难,难在对题目意思的理解上
题意为:先删除一些字符,成为一个新的字符串,再进行操作
代码:
#include<bits/stdc++.h>
using namespace std;
string str1,str2;
int t;
int main()
{
cin>>t;
while(t--)
{
cin>>str1;
int n=str1.size();
int k=0;
str2.clear();
for(int i=0;i<n;i++)
{
if(str1[i]=='a'||str1[i]=='A'||str1[i]=='e'||str1[i]=='E'||str1[i]=='i'||str1[i]=='I'||str1[i]=='o'||str1[i]=='O'||str1[i]=='u'||str1[i]=='U'||str1[i]=='j'||str1[i]=='J')
//str2+=str1[i];
str2.push_back(str1[i]);
}
for(int i=0;i<str2.size();i++)
{
int sum=0;
if(str2[i]=='j'||str2[i]=='J')
{
int j=i;
while(str2[j]=='j'||str2[j]=='J')
{
sum++;
j++;
}
if(str2[i]>='a'&&str2[i]<='z')
{
str2[i]=str2[i]-32;
cout<<str2[i];
}
else cout<<str2[i];
i=i+sum-1;
}
else if(str2[i]=='a'||str2[i]=='A'||str2[i]=='e'||str2[i]=='E'||str2[i]=='i'||str2[i]=='I'||str2[i]=='o'||str2[i]=='O'||str2[i]=='u'||str2[i]=='U')
{
int f=i;
while((str2[f]==str2[i]||(str2[f]-32)==str2[i]||(str2[f]+32)==str2[i]))
{
sum++;
f++;
}
if(str2[i]>='a'&&str2[i]<='z')
{
str2[i]=str2[i]-32;
cout<<str2[i];
}
else cout<<str2[i];
if(sum>1)
{
if(sum==4)
{
if(str2[i]>='a'&&str2[i]<='z')str2[i]=str2[i]+32;
for(int f=1; f<4; f++)cout<<str2[i];
}
else
{
f=i+1;
while((str2[f]==str2[i]||(str2[f]-32)==str2[i]||(str2[f]+32)==str2[i]))
{
if(str2[f]>='A'&&str2[f]<='Z')
{
str2[f]=str2[f]+32;
cout<<str2[f];
}
else cout<<str2[f];
f++;
}
}
}
i=i+sum-1;
}
}
cout<<endl;
}
}
区域赛共有n只有效参赛队伍,NotNight的队伍排在第k个,在主持人公布获奖名单前,他想知道他获得的奖项。
区域赛奖牌发放规则:竞赛按照有效参赛队的10%,20%,30%比例产生金奖、银奖和铜奖(均向上取整)。
第一行输入一个正整数T,表示测试用例的数量。
接下来T行,每行两个正整数n和k,用空格隔开。
(1<= T <= 100000, 1 <= k <= n <= 100000)
数据保证n>=3。
每行一个答案。如果NotNight获得金奖,则输出”jin”;如果获得银奖,则输出”yin”;如果获得铜奖,则输出”tong”;如果未获奖,则输出”tie”
4
10 1
10 2
10 3
10 4
jin
yin
yin
tong
注意向上取整,用(int)x+1
#include<stdio.h>
int main()
{
int b,a,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
double x,y,z;
x=0.1*a;
y=0.2*a;
z=0.3*a;
if(x>(int)x)x=(int)x+1;
if(y>(int)y)y=(int)y+1;
if(z>(int)z)z=(int)z+1;
if(b<=x)printf("jin\n");
else if(b>x&&b<=x+y)printf("yin\n");
else if(b>x+y&&b<=x+y+z)printf("tong\n");
else printf("tie\n");
}
}
duxing201606来到了教室,看到旁边坐了一个妹子。duxing201606想要搭讪,于是duxing201606灵机一动,设计出了一个游戏。现在他在纸上画了一个半径为x的圆,妹子和duxing201606轮流在圆中画长y宽z的长方形(长方形是可以任意角度画上去的,画的长方形不能重合),谁画不下长方形谁就输了。作为游戏设计者,duxing201606想要知道在双方都使用最优策略的情况下,谁会获胜。妹子先画,duxing201606后画。
如果duxing201606赢了,输出“forever loney”
如果duxing201606输了,输出“clever duxing201606”
注意,请只输出双引号内部的内容
样例解释或提示:
无论对方画在哪里,画完之后duxing01606都没法画了,所以duxing1606输了
如果y>=x*2或者z>=x*2时,duxing201606赢
#include<bits/stdc++.h>
using namespace std;
int y,z;
int x;
int main()
{
cin>>x>>y>>z;
float yuan=3.14*x*x;
int zhen=y*z;
if(y>=x*2||z>=x*2)cout<<"forever loney"<<endl;
else cout<<"clever duxing201606"<<endl;
}
独行哥开着货车去给山里的孩子送温暖,为了把物资尽快送到孩子们面前,独行哥选择在山路上漂移。如果货车左右两边的质量差距过大的话,漂移的时候就会翻车。物资必须被固定在货车的左右两边之一,才能保证在独行哥漂移时不被损坏。假设不放置物资时,货车左右两边质量恰好相等,现在独行哥想知道应该怎么样放置物资,才能使货车左右两边质量差最小。
第一行一个整数n(1<=n<=1e3),表示物资数量
第二行n个整数w_i(1<=w_i<=1e3),表示n个物资的质量
一行
货车左右两边最小质量差
6
2 2 5 5 8 9
1
一开始的思路是深搜,结果因为递归而TLE了
后来想到是01背包问题的变种,重量就是价值
状态转移方程是:dp[j]=max(dp[j],dp[j-w[i]]+w[i])
(深搜)
#include<bits/stdc++.h>
using namespace std;
const int INF=0x7f;
int n,ans,sum;
int w[1005];
void dfs(int dep,int cnt)
{
if(dep==n)
{
ans=min(ans,abs(sum-2*cnt));
return;
}
dfs(dep+1,cnt+w[dep]);
dfs(dep+1,cnt);
}
int main()
{
scanf("%d",&n);
sum=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&w[i]);
sum+=w[i];
}
ans=INF;
dfs(0,0);
printf("%d\n",ans);
}
#include<bits/stdc++.h>
using namespace std;
int w[1005],n;
int dp[1000005];
int sum=0;
int main()
{
memset(dp,0,sizeof(dp));
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&w[i]);
sum+=w[i];
}
for(int i=1;i<=n;i++)
for(int j=sum/2;j>=w[i];j--)
{
dp[j]=max(dp[j],dp[j-w[i]]+w[i]);
}
printf("%d\n",sum-dp[sum/2]*2);
return 0;
}
Ulire有一块菱形木板,他想在上面切下两个圆,要求在第一个圆尽可能大的前提下让第二个圆也尽可能大。Ulire显然是知道怎么切的,但他现在沉迷于Brain Power无法自拔,就把问题委托给了你。
两个正整数a和b,表示菱形两个对角线的长度。(1<=a,b<=100)
输出一个数,为第二个圆的半径,数据要求精确到小数点后四位。
2 2
0.1213
注意:double型必须和double型做运算。
两种方法:1、把int型改成double
2、在后面加上*1.0
#include<bits/stdc++.h>
using namespace std;
int a,b;
double R,rx,ry,t,x,y;
int main()
{
scanf("%d%d",&a,&b);
x=a/2.0;
y=b/2.0;
t=sqrt((double)(x*x+y*y));
R=x*y/t;
rx=(x-R)/(x+R)*R;
ry=(y-R)/(y+R)*R;
printf("%.4lf\n",max(rx,ry));
}
Ulire最近在研究哈夫曼树,一种功能是将一串字符压缩为更短的01串的数据结构,现在他发现因为写错了一个条件,导致输出的所有0都变成了1,所有1都变成了0,所以他希望你能够把这个01串变回正确的形式,当然,为了精确,他每次只会给出一个字母对应的01串,所以每个01串不会超过5位。
正式的说,你会得到一个数字n和n位由0和1组成的字符串,而你则要将其中的0和1分别变成1和0,并重新输出。
第一行输入一个正整数n(1<=n<=5),代表字符串的长度
第二行输入一个长度为n的0和1构成的串s
输出一行,将s中的0换成1,1换成0产生的新串
5
11010
00101
c++语言基础题
签到题,题如其名(不知道有没有被前面一大堆哈夫曼树吓蒙的人)
#include<bits/stdc++.h>
using namespace std;
string s,n;
int main()
{
cin>>n;
cin>>s;
for(int i=0;i<s.size();i++)
{
if(s[i]=='1')s[i]='0';
else if(s[i]=='0')s[i]='1';
}
cout<<s<<endl;
}
def file_name(file_dir): '''获取路径下所有子目录、或非目录子文件''' print('a') for root, dirs, files in os.walk(file_dir): print(root) #当前目录路径 print(dirs) #当前路径下所有子目录 ...
tableau 使命:tableau是一个可视化分析平台,也可以是一种辅助性决策的工具软件,它改变了我们使用数据解决问题的方式,使个人和组织能够充分利用自己的数据。它的能力1.tableau帮助个人和组织提供数据驱动水平2.凭借人人可用的直观可视化分析,打破了商业智能行业的原有格局3.tableau帮助人们使用数据推动变革客户现身说法...
var str="HELLOWORLD" ; var arr=[] ; for(var i=0 ;i<str.length ;i++){ var char=str[i] ; //console.log(char) ; //通过打印char我们得到的是下面这样一个关联数组 ; ’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路:首先空串题目认为是有效字符串,这里只需简单判断...
深度学习里面的各种参数做一个学习记录提示:自己根据自己的理解写的,水平有限,仅供参考,如有错误,欢迎指正个人学习记录,仅供参考深度学习里面的各种参数做一个学习记录1. batchsize,iteration,epoch2. filter,kernel_size,stride,padding3. ReLU,sigmoid,softmax4. BatchNormal,Dropout,num_classes,mini_batch5. receptive field1. batchsize,iteratio
本资源包含TDC-GP22的使用手册,TDC芯片寄存器的官方配置,本人基于stm32写的TDC-GP22寄存器配置程序,TDC-GP22的接线图和一个用文档方式写的注意事项文件:url80.ctfile.com/f/25127180-557023468-dd5834(访问密码:551685)以下内容无关:setState同步异步场景React通过this.state来访问state,通过this.setState()方法来更新state,当this.setState()方法被调用的时候,Reac
接触的Linux SDK越来越多,整理整理,分享分享,不求系统全面,对您有帮助便足矣文中大部分是与AP/Router SoC解决方案相关的Linux SDKSDK(Software Development Kit)软件开发工具包一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合想想,最早接触到的SDK是在Cort
#include#include#include #includechar qipan[10][9]={{'A','B','C','D','E','D','C','B','A'},{'+','+','+','+','+','+','+','+','+'},{'+','F','+','+','+','+','+','F','+'},{'G','+','G','+','G','+'
出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可。1下载缺失的字体文件,然后复制到Linux系统中的/usr/share/fonts文件夹中, 解压http://pan.baidu.com/s/1mh0lcbY2执行以下命令,生成字体的索引信息:sudo mkfontscalesudo mkfontdir3运行fc-cache命令更新字体缓存sudofc-cache4. 重启w...
152.kafka 可以脱离 zookeeper 单独使用吗?为什么? kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。153.kafka 有几种数据保留的策略? kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理? 这个时候 kafka 会执行数据清除工作,
can总线隔离中继器、canbridge、CanRepeater的can波特率和验收滤波设置。波特率支持2.5kbps~1Mbps之间任意设置,验收滤波设置支持20个组合的列表或屏蔽模式的ID过滤。1、配套的配置软件是绿色软件,无需安装,直接双击打开软件:2、搜索设备-读取配置3、设置can通道通讯波特率“CAN0参数”设置界面对应can总线隔离中继器的CAN1通道;“CAN1参数...
假如我们有一个文本文件 coder.txt,内容如下:Twinkle, twinkle, little star,How I wonder what you are.然后我们使用 cat 逐行打印这个文件,在终端中执行以下指令:cat coder.txt输出效果:那么现在有一个需求,假如需要对每行文本做进一步的处理,在bash中使用for循环逐行处理。我们先这样写:for f in `cat coder.txt`; do echo $f; done我们预期会像cat指令一样.