noip2017 Day1

博客介绍了NOIP2017第一天比赛中的三道题目,第一题是数学公式推导,相对简单。第二题为大模拟,通过栈和结构体判断循环。第三题涉及最短路计数,利用SPFA算法求解,并通过动态规划处理允许超过最短路径长度K的路径。关键在于判断是否存在无限路径,即环是否为0环。注意,要排除无法到达终点的点。
摘要由CSDN通过智能技术生成

第一题数学公式推导,反正推完后就是(a*b)-a+b,没什么好说的,送分。

第二题懒得放题目,总而言之就是一道大模拟,判断循环,还挺麻烦的。。,但只要仔细都能打对。

主要是在每个循环判断能不能进,如果不能进就得停止累加时间复杂度,后面的E结束要对应前面的F,我是用了一个stack+结构体来判断这次能不能进循环,会不会停止,和更新答案了否(就是cifang有没有比之前+1),然后后面E结束循环时从栈顶开始减,就可以准确判断了。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t;
struct one
{
	int x,st;
	char c;
};
int pre(string x)
{
	if(x[2] == '1') return 0;
	else
	{
		int now = 4,num = 0;
		while(isdigit(x[now]))
		{
			num = num * 10 + (x[now] - '0');
			if(num > 50) return -1;
			now++;
		}
		return num;
	}
}
int pre2(string x)
{
		int now = 0,num = 0;
		while(isdigit(x[now]))
		{
			num = num * 10 + (x[now] - '0');
			now++;
		}
		return num;
}
int main()
{
//	freopen("complexity.in","r",stdin);
//	freopen("complexity.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> t;
	while(t--)
	{
		int l,cifang = 0,Maxc = 0,cnt = 0; 
		bool wa = 0,err = 0; string str;
		int stop = 0;
		cin >> l;
		set<char> s; stack<one> w;
		c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值