2018_1_21_Calendar_uva_158__大模拟题

https://vjudge.net/problem/UVA-158

uva_presentation error的,poj1209能过

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>

using namespace std;

int f;
int mm[2][12]={{31,29,31,30,31,30,31,31,30,31,30,31}
,{31,28,31,30,31,30,31,31,30,31,30,31}};
struct AA{
	int month,day,level,index;
	string s;
	int operator-(AA& a){
		int t=month-a.month;
		if(t>1)return 8;
		if(t==1)return day-a.day+mm[f][a.month-1];
		return day-a.day;
	}
}aa;

vector<AA> v;



bool cmp(AA a,AA b){
	if(a.month>b.month)return false;
	if(a.month<b.month)return true;
	if(a.day>b.day)return false;
	if(a.day<b.day)return true;
	if(a.level>b.level)return true;
	if(a.level<b.level)return false;
	return a.index<b.index;
}


bool cmp2(AA a,AA b){
	if(a.month>b.month)return false;
	if(a.month<b.month)return true;
	if(a.day>b.day)return false;
	if(a.day<b.day)return true;
	return true;
}

bool cmp1(AA a,AA b){
	return a.index<b.index;
}

bool equal(AA a,AA b){
	return a.month==b.month&&a.day==b.day;
}

const char cc[]="*TODAY*";

void print(AA a,int tt){
	tt++;
	if(tt>0){
    	printf("%3d%3d ",a.day,a.month);
		int j;
		for(j=0;j<tt;j++)
		putchar('*');
		for(;j<8;j++)
		putchar(' ');
		cout<<a.s<<endl;
	}	
}

int main(){
	int n;
	scanf("%d",&n);
	f=1;
	if((n%400==0)||(n%100!=0&&n%4==0))f=0;
	string s;
	bool ff=true;
	n=0;
	while(cin>>s){
		if(s=="#")return 0;	
		if(s=="A"){
			scanf("%d%d%d",&aa.day,&aa.month,&aa.level);
			char c;
			while((c=getchar())==' ');
			aa.s="";
			aa.s+=c;
			string t;
			getline(cin,t,'\n');
			aa.s+=t;
			aa.index=n++;
			v.push_back(aa);
			continue;
		}
		if(ff){
			ff=false;
			sort(v.begin(),v.end(),cmp);
			
		}
		scanf("%d%d",&aa.day,&aa.month);
		printf("Today is:%3d%3d\n",aa.day,aa.month);
		int t=upper_bound(v.begin(),v.end(),aa,cmp2)-v.begin();
		vector<AA> vv;
		
		while(v[t].month==aa.month&&v[t].day==aa.day)
		vv.push_back(v[t++]);
		
		sort(vv.begin(),vv.end(),cmp1);
		
		for(int i=0;i<vv.size();i++){
			printf("%3d%3d %s ",vv[i].day,vv[i].month,cc);
			cout<<vv[i].s<<endl;
			continue;
		}
		//cout<<aa.day<<" "<<aa.month<<endl;
		for(int i=t;i<v.size();i++){
			int tt=v[i]-aa;

			/*cout<<v[i].day<<" "<<v[i].month<<" "
			    <<v[i].level<<" "<<tt<<endl;
			    */
			if(tt>7)break;
			tt=v[i].level-tt;
			print(v[i],tt);
		}
		if(aa.month==12)
		for(int i=0;i<v.size();i++){
			if(v[i].month==1){
				int tt=31+v[i].day-aa.day;
				tt=v[i].level-tt;
				print(v[i],tt);
			}
		}
		puts("");
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`QtCalendarNavigationBar` 是 Qt 库中用于与日历组件交互的一个类,它允许用户导航到不同的日期。这个部件通常与 `QCalendarWidget` 结合使用,在应用中提供了一个直观的日历视图。 ### 示例: 假设您正在创建一个应用程序,其中包含一个用于查看员工假期的日历界面。您可以使用 `QCalendarWidget` 和 `QtCalendarNavigationBar` 来实现这一功能。下面是一个简单的示例代码片段: ```python from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QVBoxLayout, QtCalendarNavigationBar from PyQt5.QtCore import Qt class CalendarApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): layout = QVBoxLayout() # 创建日历组件 calendar = QCalendarWidget(self) layout.addWidget(calendar) # 添加导航栏 navigation_bar = QtCalendarNavigationBar(self) navigation_bar.setCalendarWidget(calendar) layout.addWidget(navigation_bar) self.setLayout(layout) self.setWindowTitle('Calendar Navigation') self.setGeometry(300, 300, 400, 300) self.show() if __name__ == '__main__': import sys app = QApplication(sys.argv) ex = CalendarApp() sys.exit(app.exec_()) ``` 在这个示例中,我们首先导入必要的 PyQt5 模块。然后定义了一个继承自 `QWidget` 的子类 `CalendarApp`,并初始化了它的布局。接着添加了 `QCalendarWidget` 组件和 `QtCalendarNavigationBar`,并将后者设置为前者(日历组件)的导航器。最后设置了窗口标题、大小和位置,并启动事件循环。 ### 相关问题: 1. 如何通过点击按钮来改变当前显示的月份? 2. `QtCalendarNavigationBar` 提供哪些具体的导航操作? 3. 如何在日历上添加或删除事件?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值