2018届四川省大学生程序设计大赛

2018届四川省大学生程序设计大赛传送门入口:

https://www.oj.swust.edu.cn/problem

题目是2804~2814

省赛榜单:

http://www.cs.swust.edu.cn/standing/standing.html

B题(2805,beyond the boundry):

题意:题目给定四个字符串。给一些测试串,如果该子串在题目中的4个字符串中出现过(只要按次序出现就行,不在意是否连续),先记录出现的次数,再输出该子串。

#include
#include
#include
using namespace std;
string str[4]={"Kanbara Akihito","Kuriyama Mirai","Nase Hiroomi","Nase Mitsuki"};
bool vis[4];
int main(){
    int t;
    cin>>t;
    while(t--){
        memset(vis,0,sizeof(vis));
        string  s;
        cin>>s;
        int n=s.size();
        int flag=0;
        for(int i=0;i<4;i++){
            int m=str[i].size();
            int count=0;
            for(int j=0;j

E题(2808:Ever17):

给定一个日历,格式是月,日,年或者年,月,日。保证一定有一个格式是正确的,如果两次格式所对应的日期相同,输出该年月日,如果只有一种格式合法,也输出给年月日,否则输出两个日期相差的天数

#include
#include
#include
#include
using namespace std;
string data[13]={"0","January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December"};
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int d,int m,int y){
    if(y%4==0&&y%100!=0||y%400==0)month[2]=29;
    else month[2]=28;
    if(d<=month[m]&&m<=12&&d>0&&m>0)
        return true;
    return false;
}
int ansdata(int d,int m,int y){
    if(y%4==0&&y%100!=0||y%400==0)month[2]=29;
    else month[2]=28;
    y--;
    int res=y*365+y/4-y/100+y/400;
    for(int i=1;i>t;
    while(t--){
        int y0,m0,d0,y1,m1,d1;
        scanf("%d/%d/%d",&m0,&d0,&y0);
        y1=m0,m1=d0,d1=y0;
        y0+=2000;
        y1+=2000;
        if(y0==y1&&m0==m1&&d0==d1){
            cout<

H题(2811:harmony)

给两个数,求两个数相加然后加上两个数最小公倍数的值:

#include
using namespace std;
int gcd(int a,int b){
    if(b==0)return a;
    return gcd(b,a%b);
}
int main(){
    int t;
    cin>>t;
    while(t--){
        int n,m;
        cin>>n>>m;
        cout<

I题(2812 Island):

给定一棵树,和这颗树的权值,问删掉这颗顶点,求剩下的树的最大值,然后统计删掉每个顶点剩下树的最大值,求其中的最小值是多少。

#include
#include
#include
using namespace std;
#define ll long long
const int maxn=2e5+10;
int n,T;
int u,v;
ll cost[maxn],ans[maxn];
bool vis[maxn];
ll M[maxn];
ll val[maxn];
struct node{
    int v,next;
}e[maxn];
int p[maxn],eid;
void init(){
    for(int i=0;i

 

你可能感兴趣的:(2018届四川省大学生程序设计大赛)